1

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 でこれを処理する方法はありますか?

4

1 に答える 1

1

Excel に関する限り、間違った順序で書き出された行を Excel に受け入れさせるためにできることは何もありません。行が正しい順序で書き出されるように、何らかの方法でコードを作成する必要があります。

-エリック

于 2013-03-04T22:13:08.500 に答える