ASP.Netでは、NPOIを使用してExcelのドキュメントに保存していますが、バージョン2以上に移動しました。 xlsxへの書き込みはうまくいきましたが、xlsxへの切り替えはもう少し難しいです。私の新しい改善されたコードは、出力ファイルに多くのNUL文字を追加しています。Response.OutputStreamに書き込むときに壊れたXLSXファイルを取得する
その結果、「一部のコンテンツに問題があります」という文章がExcelから届きましたが、回復してもらいたいのですか?
私の16進エディタから作成されたxlsxファイルの写真は次のとおりです。 BadXlsxHexImageこれらの00sは数ページにわたって続きます。ファイルがエラーなく開かれるまで、私は文字通りエディタでそれらを削除しました。
なぜこのコードは非常に多くのNULをこのファイルに追加しますか?
using (var exportData = new MemoryStream())
{
workbook.Write(exportData);
byte[] buf = exportData.GetBuffer();
string saveAsFileName = sFileName + ".xlsx";
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", string.Format("attachment;filename={0}; size={1}", saveAsFileName, buf.Length.ToString()));
Response.Clear();
Response.OutputStream.Write(buf, 0, buf.Length);
exportData.Close();
Response.BufferOutput = true;
Response.Flush();
Response.Close();
}
(私はすでにResponse.Close
の代わりにOutputStream.Write
の代わりにBinaryWrite
、Response.End
を試みたが、バッファの長さでContent-Length
を設定しました。また、これのどれもが、XLSへの書き込みの問題ではなかったが。)
は、私はXLSXを作成するために考えて最高の一つである約https://epplus.codeplex.com/ – andrefadila