2017-09-19 17 views
1

Excelのシートがダウンロードされていないのに、ボタンをクリックしたときに文書を提供しようとしています。何も起こりません、エラーや何も、私は試しにラップしたが、それはエラーを出すことはありません、それはResponse.Flush()Response.End()になる何も起こりません。文書が表示されない

エクセルシートを構築するために使用されるテーブルは、DBからインポートされるデータテーブルです。

私はそれはClosedXMLのバグだClosedXML

コード

DataTable table = new DataTable(); 
    table = dtResults.Copy(); 
    table.Merge(dtResultsAll); 
    table.TableName = "LookupData"; 

    using (XLWorkbook wb = new XLWorkbook()) 
    { 
     wb.Worksheets.Add(table); 

     Response.Clear(); 
     Response.Buffer = true; 
     Response.Charset = ""; 
     Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; 
     Response.AddHeader("content-disposition", "attchment;filename=AuditReport.xlsx"); 

     using (MemoryStream MyMemoryStream = new MemoryStream()) 
     { 
      wb.SaveAs(MyMemoryStream); 
      MyMemoryStream.WriteTo(Response.OutputStream); 
      Response.Flush(); 
      Response.End(); 
     } 
    } 
+0

あなたは[に従って例]にあなたのコードを比較する場合(https://github.com/closedxml/closedxml/wiki/Deliver- an-Excel-file-in-ASP.NET)、ヘッダーのスペルが間違っていることがわかります: 'attchment'vs。 'アタッチメント' – Filburt

+0

Ivがそれを変更しましたが、それでも同じことをしています –

+0

リンクされたサンプルコードをコピーし、期待通りに機能しました。私はあなたのコードに似たDataTableを使用するように変更しましたが、それでも機能しました。あなたのコードをこの例に似せるように修正することをお勧めします。 – Filburt

答えて

0

を使用しています。

0.76.0にダウングレードします。

マイREPRO:ここ

static void Main(string[] args) 
{ 
    DataTable table = new DataTable(); 
    table.TableName = "LookupData"; 
    XLWorkbook wb = new XLWorkbook(); 
    wb.Worksheets.Add(table); 
    // no exception with below line: 
    //wb.Worksheets.Add("table").Cell(1, 1).SetValue("Hello World"); 
    using (MemoryStream memoryStream = new MemoryStream()) 
    { 
     wb.SaveAs(memoryStream); // IndexOutOfRangeException here 
    } 
} 

は私の問題です:https://github.com/ClosedXML/ClosedXML/issues/493

+1

私はニックピッキングしているかもしれませんが、OPの問題を正確に再現しているわけではありません。空のDataTableを追加した後にセルを変更しません。塗りつぶしたDataTableを追加した後に保存すると、バージョン0.89.0.0で正常に動作します。 OPはまた、例外は投げられなかったと述べた。 – Filburt

+0

セルを変更する必要はありません(答えから削除します)。例外について:0.76より大きいバージョンを使用すると例外が発生するため、OPはこの例外をキャッチできませんでした。 – astef

+0

空のDataTableを列なしで追加して問題を再現できました。 – Filburt