[]
借助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);
}
}