根据您提供的信息,了解到您的场景中有一个包含了多张Worksheet的Workbook,需要对该Workbook中的每张Worksheet单独序列化保存,而又需要将所有Worksheet的序列化文件读取到同一个Workbook中回显。那何不对整个Workbook序列化呢?虽然单独对每个Worksheet序列化了,但这些Worksheet在同一个Workbook中,其实就是对整个Workbook序列化。而且,后续也要将每个Worksheet的序列化文件读入到同一个Workbook,初步理解还是好奇为什么不直接序列化整个Workbook呢?要想在序列化中保留Worksheet中的样式效果,还是得要序列化整个Workbook。
针对这样的场景,我们向您提供如下解决方案:
1. 复制Workbook,记为CopiedWorkbook。
2. 在CopiedWorkbook中仅保留某个Worksheet,删除其他Worksheet。
3. 序列化CopiedWorkbook,记作CopiedJSON。
4. 对Workbook中的每张Worksheet作如上处理,代替单独序列化每个Worksheet。
5. 读入时,创建新的Workbook实例,在该Workbook实例中读入一个CopiedJSON,即为NewWorkbook。
6. 获取NewWorkbook中的命名样式,即Workbook:getNamedStyles(),记为NamedStyles。
7. 创建Worksheet实例,令其读入NewWorkbook中唯一Worksheet的序列化结果(即Worksheet:toJSON()),记为NewWorksheet。
8. 为NewWorksheet添加NamedStyles中的每个样式,这样便能令每张Worksheet保留原先的样式。
9. 再创建一个Workbook,将第8步得到的Worksheet逐一添加至该Workbook中即可复原。
您可以尝试下如上方案,看是否能满足您的需求。
|