我正在使用openxml-sdk生成一个excel文件,在打开文件时它告诉我该文件已损坏并提供修复它。修复执行以下操作:
Removed Records: Cell information from /xl/worksheets/sheet.xml part
Repaired Records: Cell information from /xl/worksheets/sheet.xml part
此修复导致丢失一些数据,我查看了XML并发现数据似乎已被删除,因为遇到合并单元格时行已无序写入。
<x:sheetData>
<x:row r="8">
...
</x:row>
<x:row r="16">
...
</x:row>
<x:row r="9">
...
</x:row>
<x:row r="10">
...
</x:row>
...
</x:sheetData>
<x:mergeCells>
...
<x:mergeCell ref="C8:C16" />
...
</x:mergeCells>
正如上面所示,有一个C8:C16的合并,无论在哪里发生这样的合并,它似乎都会为第一行和最后一行写入行,然后继续全部在中间。但是,打开此excel似乎无法应对并删除所有乱序行(9-15)。
我已经通过手动重新排列XML中的行然后重新拉链来确认这一点。然后它将显示所有数据。
我猜这是因为我先创建第16行然后第9行,以便我可以进行合并。有没有办法重新排序行或获得excel来处理这个而不必提前创建所有行?
答案 0 :(得分:1)
就Excel而言 - 没有什么可以让Excel接受以错误顺序写出的行。您必须以某种方式编写代码,以便按正确的顺序写出行。
-Eric