我正在使用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中的行,然后重新压缩来确认这一点。然后,它将显示所有数据。
我猜这是因为我在第9行之前创建了第16行,这样我就可以进行合并了。有没有一种方法可以重新排序行,或者让excel来处理这个问题,而不必预先创建所有行?
发布于 2013-03-05 06:13:09
就Excel而言,您无法执行任何操作来使Excel接受按错误顺序写入的行。您必须以某种方式编写代码,以便以正确的顺序写出行。
-Eric
https://stackoverflow.com/questions/15078346
复制相似问题