[]
        
(Showing Draft Content)

标签

借助GcExcel,您可以为工作表配置标签,从而允许您将私有数据存储在单元格,行,列,范围或电子表格中。标签可以存储任何类型的数据,并且对最终用户不可见。在执行从JSON或到JSON的导入或导出操作时,将保留标签。

可以使用IWorksheet界面的Tag方法配置工作表的 标记。对于一个单元格或一定范围的单元格,可以使用IRange界面的Tag方法配置标签。如果标签值在单元格范围内不同,则将返回该范围左上角单元格的标签值。IRange接口的EntireColumn和EntireRow方法以及Tag方法可分别用于获取或设置列和行的标记。

您还可以通过实例化一个类来配置自定义标签。应该通过实现IJsonSerializer提供json序列化器或反序列化器以支持json I/O。

用例代码

请参考以下代码以使用标签:

private static void Tags() {
    // Initialize workbook
    Workbook workbook = new Workbook();
    // Fetch default worksheet
    IWorksheet worksheet = workbook.getWorksheets().get(0);
    // Add Tag for worksheet
    worksheet.setTag("This is a Tag for sheet.");
    // Add Tag for Cell C1
    worksheet.getRange("C1").setTag("This is a Tag for Cell C1");
    // Add Tag for Row 4
    worksheet.getRange("A4").getEntireRow().setTag("This is a Tag for Row 4");
    // Add Tag for Column F
    worksheet.getRange("F5").getEntireColumn().setTag("This is a Tag for Column F");
    // Add tag for Range A1:B2
    worksheet.getRange("A1:B2").setTag("This is a Tag for A1:B2");

    // Exporting workbook to JSON stream
    String jsonstr = workbook.toJson();

    // Initialize another workbook
    Workbook workbook2 = new Workbook();

    // Importing JSON stream in workbook
    workbook2.fromJson(jsonstr);

    // Get Tag of Range A1:B2
    Object tag = workbook2.getWorksheets().get(0).getRange("A1:B2").getTag();

    // Tags are preserved while exporting and importing json stream
    System.out.println(" Tag for CellRange[A1:B2] is : " + tag);

请参考以下代码以使用自定义标签:

private static void CustomTag() {
    // Initialize workbook
    Workbook workbook = new Workbook();
    // Fetch default worksheet
    IWorksheet worksheet = workbook.getWorksheets().get(0);

    // Set custom json serializer
    Workbook.setTagJsonSerializer(new MyJsonSerializer());

    // Set Tag of "A1" as custom type "Student"
    worksheet.getRange("A1").setTag(new Student("Robin", 7));

    // Exporting workbook to JSON stream
    String json = workbook.toJson();

    // Initialize another workbook
    Workbook workbook2 = new Workbook();

    // Importing JSON stream in workbook
    workbook2.fromJson(json);

    // Get Tag as JObject
    Object tag = workbook2.getWorksheets().get(0).getRange("A1").getTag();

    // Convert JObject to "Student"
    Student student = new Gson().fromJson((JsonElement) tag, Student.class);

    // Tags are preserved while exporting and importing json stream
    System.out.println(" Tag for CellRange[A1] is of class: " + student);
    System.out.println(" Tag for CellRange[A1] is : " + tag);
}

public static class Student {
    public String name;
    public int age;

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

public static class MyJsonSerializer implements IJsonSerializer {
    Gson gson = new Gson();

    @Override
    public String serialize(Object value) {
        return gson.toJson(value);
    }

    @Override
    public Object deserialize(String json) {
        return gson.fromJson(json, JsonElement.class);
    }
}