私は500MBのExcel(.xlsb/.xlsm)ファイルを持っています。私は、ファイル全体をメモリにロードせずに、C#を使用して大容量の(.xlsb/.xlsm)ファイルを読み書きする方法が必要ですが、代わりにチャンクにロードするか、一度に1枚ずつ読み込んでください。大規模なExcel XLSB/XLSMファイルの読み取り/書き込み/変更方法(C#)
答えて
Excelファイルは、基本的にXMLファイルを含むzipファイルです。 zipツールでExcelファイルを開くと、Excelドキュメントの内容が表示されます。どのような変更が必要なことがあります:
XL/sharedStrings.xml - Excelはない視覚的に(このファイルでそれらのインデックスを作成することにより、文字列の使用を最適化していますが、最後にそれらを反復処理し、カウントすることができます - 最初に1つはインデックス0を持ち、2つ目はインデックス1を持ちます。これらのインデックスを使用して、シートファイル内の文字列を変更/追加して、ドキュメントを破損しないようにします。
xl/workbook.xml - シート名が含まれています。たとえば、Excelでsheet1の名前が「今月の収入」であることがわかります。それを使ってあなたのシートを名前で見つけることができます。
xl/worksheets/*。xml - 実際のシートです。文字列を変更/追加するには、共有文字列のXMLファイルを使用します。番号を変更/追加するには、直接行います。共有文字列値を含むセルには、そのようにマークされます。
は今、あなたはちょうど/パース線ごとにそれらを読んで、メモリ内のファイル全体をロードしていないながら、これらのXMLファイルを編集する必要があり、あなたは非常に少ないメモリフットプリントで大量のデータを処理することができるようになります。
私は必要なファイルのみを一時的に抽出し、編集してからzipを更新するためにZipArchiveを使用します。ファイルを破損するため、すべてを解凍してから再度解凍しないでください。少なくとも私はどのようにそれを圧縮するかわからない。それを再び使用可能にするような方法で。
- 1. 大規模な.xlsxファイルの読み込みが遅い
- 2. EXCEL VBA読み取り/書き込み。 dftファイル(IBM Data Tranfer)
- 3. 電子パッケージ - ファイルの書き込み/読み取り方法
- 4. C#ファイルを読み取り専用で読み取り/書き込みする
- 5. C++ファイル - 書き込み、読み取り、配列。
- 6. 大規模なJSONファイルをSpark Dataframeに読み込む
- 7. C#CSLAビジネスオブジェクトのジレンマ:読み取り専用vs読み込み/書き込み
- 8. C#読み込み/書き込み.xlsmファイル
- 9. Microsoft Javascriptアドイン:Excelへの読み取り/書き込み
- 10. 読み取り/書き込みのQObject
- 11. プリファレンスの読み取り/書き込み
- 12. 大きなJSONObjectのファイルへの書き込み/読み込みAndroid
- 13. アセンブリでのハードウェアへの書き込み/読み取り方法
- 14. C#Windowsアプリで大きなファイルを読み込む方法
- 15. Swiftのplistの書き込み/読み取り方法3
- 16. 大きなファイルの書き込みと読み込み用に開く
- 17. C#Excelファイルへの書き込み
- 18. C#:SerialPort:読み取りと書き込みのバッファサイズ
- 19. ファイルへのC++の読み込みと書き込み
- 20. DBからの読み取りとファイルへの書き込み
- 21. 読み取り/書き込みSPIデバイス
- 22. 読み取り/書き込み同期
- 23. クロスプロセスミューテックス読み取り/書き込みロック
- 24. MMIO読み取り/書き込みレイテンシ
- 25. Postgres書き込み/読み取りロック
- 26. Delphi:ファイルへの変数の書き込み/読み込み
- 27. VBAを使用してExcelファイルの現在の読み取り/書き込みユーザーを取得する方法
- 28. 読み取り/書き込みTCPオプションフィールド
- 29. 大規模なデータベースをUITableViewに読み込む際のベストプラクティス
- 30. Visual C++/CLIでファイルに書き込み、ファイルから読み込む方法は?
OpenXmlSDKはあなたの友人です:https://msdn.microsoft.com/en-us/library/office/bb448854.aspx – zaitsman
私はすでに試してみましたが、xls(x)で動作しましたが、xlsmで例外がスローされます私が何か間違っていない限り、何らかの理由で。 –