2016-12-13 20 views
0

これは重複している可能性がありますが、この種の問題を参照する投稿が多数ありますが、この場合は正確な答えが見つかりませんでした。新しいセルを追加するとExcelファイルが破損する

私はセル "E4"に "= C4 + D4"という式が含まれているExcelファイルを持っています。他のすべてのセルは空です。つまり、Xmlに存在しないため、OpenXmlで検索したり取得したりすることはできません。だから、セル「C4」と「D4」を埋めるために、私は、セル「D4」のために同じ

var cell = new Cell(){ 
    CellReference = new StringValue("C4"), 
    DataType = new EnumValue<CellValues>(CellValues.Number), 
    CellValue = new CellValue("123") 
} 

:)このように(それらを作成する必要があり、その後

row.Append(cell); 
行にこれらのセルを追加します

Excelファイルを開いた後で、「Excelがfile.xlsxで判読不能なコンテンツを見つけました。このブックの内容を回復しますか?このブックのソースを信頼する場合は、はい」をクリックします。

Excelファイルに数式がない場合は、セルが正しく追加されています。

私の質問は、OpenXmlを使ってファイルを分割しないように、式を含むExcelファイルにどのようにセルを追加するのですか?

Excel found unreadable content in file

は、トラブルシューティングと私はあなたがプログラムで作成したのxlsxに手動で作成XLSXを比較示唆この問題を解決するには、次の

答えて

0

私はほんの少しの先端EPPLUS

using (ExcelPackage excelPackage = new ExcelPackage(fileStream)) 
{ 
    ExcelWorkbook excelWorkBook = excelPackage.Workbook; 
    ExcelWorksheet excelWorksheet = excelWorkBook.Worksheets.First(); 
    excelWorksheet.Cells["C4"].Value = "123"; 
    excelWorksheet.Cells["D4"].Value = "321"; 

    excelPackage.SaveAs(memoryStream); 
} 
+0

いいですね - 私はClosedXMLのヒープがOpenXMLで簡単に機能することを提案しました。 –

1

だから、XMLは、したがって、エラー、不正な形式で、持っていたファイルが破損しました。

これを行うには、両方のファイル拡張子をXLSXからZIPにリネームし、それらを異なるフォルダに展開します。> WinDiffツール(または「OpenXML SDK生産性ツール」を使用)を使用してファイルを比較します。

悪意のあるコードがコードを変更して修正する方法を見つけたら、それを確認してください。

+2

を使用して私の問題を解決しました:ベターファイルを比較するためのOpenXML SDKに付属している「のOpenXML SDK生産性向上ツール」を使用します。これにより、比較がはるかに容易になりました;) – bassfader

関連する問題