OpenXMLとMemoryStreamを使用してExcelファイルを書き出すと、ファイルパスに余分な文字が追加されることがあります。それは毎回発生しません。私が最初にそれをロードするとき、それはちょうどうまくいくようですが、それを実行した後に余分な文字を追加し始めます。私は、メモリリークやバッファの問題があると仮定しますが、私はそれを修正するための十分なことはわかりません。C#メモリストリーム/ OpenXMLでファイル名に余分な文字が追加されることがあります
私のコードは次のとおりです。
using (var stream = new MemoryStream())
{
report.CreatePackage(stream);
System.Web.HttpContext.Current.Response.Clear();
System.Web.HttpContext.Current.Response.ContentType = "application/vnd.ms-excel";
System.Web.HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=Report_" + DateTime.Now.ToShortDateString() + ".xlsx");
stream.Position = 0;
stream.CopyTo(System.Web.HttpContext.Current.Response.OutputStream);
System.Web.HttpContext.Current.Response.Flush();
System.Web.HttpContext.Current.Response.Close();
System.Web.HttpContext.Current.Response.End();
}
それはファイルパスで次のようになります。Report_09_14_2016CAOFMLJL.xlsxだけではなくレポートと日付を。
ご協力いただければ幸いです。
あなたは 'Response.Clear()'がヘッダーをクリアしないことに気付きましたか?逆の言い方をすると、 'Response.ClearHeaders()'を適切な場所に呼び出すことで、幸せな終わりに向かって何かが変わるでしょうか? – grek40
最初の実行時に余分な文字が追加されているように見えますが、それ以降のすべての文字は追加されます。それがヘッダーであるのか、初めてヘッダーが動作しないのかわかりません。 – JRich
コードが文字列と一致しません。あなたは '' .xlsx "'を追加していますが、結果に '' .XLSX "'という拡張子があります(そしてこの違いは '" CAOFMLJL.XLSX "'が追加された理由を説明します)。 – Sinatr