2017-11-02 8 views
0

でinlineStrセルを読み込んだときに行が壊れました。Excelで正常に開き、EPPlus以外のExcelライブラリで解析できるxlsx-fileがあります。私たちはEPPlusの使用を続ける可能性が高いので、この問題に関していくつかのアドバイスを受けることはうれしいでしょう。EPPlus C#

Excelデータは、フォーマットされていないプレーンテキストデータです。

r1c1 r1c2 r1c3 
       r2c1 r2c2 r2c3 
           r3c1 r3c2 r3c3 

の代わりに、3×3:

C位でEPPlusと解析、のは、3x3のシートを言わせには、データがメモリに以下の方法(すべての行に加え、空のセルよう合計サイズが3x9または何かである)断片化され、解析されました配列

r1c1 r1c2 r1c3 
r2c1 r2c2 r2c3 
r3c1 r3c2 r3c3 

zipビューアでxlsx-archiveを開くと、xl \ worksheets \ sheet.xmlに次のデータが含まれているようです。

<x:row> 
    <x:c t="inlineStr"> 
    <x:is> 
     <x:t>Data in cell</x:t> 
    </x:is> 
    </x:c> 
    .. 
</x:row> 

したがって、前のスニペットには行/列識別子はありません。多分問題の根本的な原因?

別の注意点は、同じファイルを開いて同じファイルを変更せずに保存すると、ファイルサイズが大きくなり、シートデータがsheet.xmlからsharedstrings.xmlに移動したように見えることです。 Excelでのセーブ後、行/列インデックスのみがsheet1.xmlに存在し、ファイルはEPPlusで適切に解析できます。

+0

最新のバージョン4.1.0インライン文字列のソースコードは、https://epplus.codeplex.com/SourceControl/changeset/view/643d411b032b#EPPlus/ExcelWorksheet.cs(xr.LocalName = = "は" ")です。多分、ソースコードをダウンロードして、それを見て、問題を見つけることができるかどうか確認してください。 – Ernie

+0

そうです。この場合、インライン文字列は問題ではありませんでした。シートデータに行/列識別子が存在しないという問題がありました。これはExcelのデータ形式に対するエラーです。問題はライブラリにはまったくありません。 –

答えて

0

この場合、シートデータに行/列識別子が存在しないという問題がありました。不正なExcelファイルがOpen XML SDKを使用してカスタムプログラムで作成されました。

オープンXML SDKガイドライン(https://msdn.microsoft.com/en-us/library/office/gg278309.aspx)によると、行/列識別子が見つからないというエラーはExcelデータ形式とのエラーです。問題はEPPlusライブラリにありませんでした。