我正在使用 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 来处理此问题,而无需提前创建所有行?
最佳答案
就 Excel 而言 - 您无法采取任何措施使 Excel 接受以错误顺序写出的行。您必须以某种方式编写代码,以便以正确的顺序写出行。
-埃里克
关于c# - OpenXML - 行以错误的顺序写出,导致数据丢失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15078346/