OpenXMLを使用してExcelファイルにデータを書き出すことができるアプリケーションを開発しています。オートフィルタ以外はすべて正常に動作しています。この考え方は、データの本体にオートフィルタを追加して、ユーザが自動的にデータをフィルタリングおよびソートするコントロールを持つようにすることです。だから、コードの中で、私はこのような何か:エクスポートXLSXでオートフィルタと並べ替えを追加するとExcelがクラッシュする
var filter = new AutoFilter() { Reference = string.Format("{0}:{1}", topLeftCellReference, bottomRightCellReference) };
worksheet.AppendChild(filter);
をそれがこのような何か表示されます:
<x:autoFilter ref="A4:L33" xmlns:x="http://schemas.openxmlformats.org/spreadsheetml/2006/main" />
をそして、それはsheetData
とmergeCells
間のワークシートに追加されます。
このフィルタをExcelで開いても問題ありません。列をソートしようとすると、列がソートされ、Excelがクラッシュすることが予想されます。ファイルを保存して再ロードすると(Excelにすべてのファイルがクリーンアップされます)、問題は解決されません。しかし、最初にフィルタを適用した場合(たとえば、カラムを> 10
にフィルタリングしてフィルタを削除しても、クラッシュせずに並べ替えることができます)フィルタを適用して削除したファイルを保存しました。
問題を引き起こす可能性のあることは誰でも知っていますか?他にも、自動フィルタを適用したときに行うべきことはありますか?ワークシートに追加
注:?私たちは、エクセル2010を使用している。(バージョン14.0.7153.5000)ここで
する例fileます(ダウンロードをクリックして、それはとしてダウンロードします。 .xlsx
に名前を変更してExcelで開きます。編集を有効にし、いずれかの列を選択して並べ替えます)。
を編集してください。もう少しお試しください。ファイルをExcelに再保存しても、それはまだ破損しています。ただし、最初にフィルタを適用してから消去してからExcelに再保存すると、作業ファイルが作成されます。その場合
<x:definedNames>
<x:definedName name="_xlnm._FilterDatabase" localSheetId="0" hidden="1">'Sheet 1'!$A$1:$E$11</x:definedName>
</x:definedNames>
わからない:近い二つのファイル(まだ壊れて保存し直したファイルと、今作業ファイル)を見て、私は、フィルタが適用される(およびクリア)された後、この余分なビットは、ブックに追加気づくん...
@mason:OpenXMLでは、無効なExcelファイルを常に作成できます。有効なExcelファイルのルールは、有効なOpenXMLファイルのルールよりも厳しく(完全に文書化されていない)ため(例えば、標準では 'worksheet'の子の順序は決まっていませんが、Excelは特定の子表示されるはずです)。通常Excelはファイルを最初に開いたときに(非常に役に立たないエラーメッセージで)苦情を言います。しかし、このファイルは正常に開き、列をソートしようとすると問題が表示されるだけです。 –
要素の順序が正しいように見えます(注文ドキュメントについては、my [autoFilter answer here](http://stackoverflow.com/a/25410242/3791802)を参照してください)。 Productivityツールで報告される唯一の問題は、 'Font'の' Color'要素の1つが間違っていることです - 私は[別の答え]を持っています(http://stackoverflow.com/questions/29989234/change-sheet-tab-color -of-excel-file-using-open-xml/29991215#29991215)は 'Color'sに関する情報を持っていますが、この問題に役立つかどうかは疑問です。私は見て、何かを見つけ出すことができるかどうかを見てみましょう... – petelids
@petelids:注文を実際に指定した場所を見ていただきありがとうございます。私はそれがそこにあることを認識していなかったし、それは私に多くの悲しみを救うことができた。 –