Excelファイル名拡張子を使用してCSVまたはHTMLではなく実際のExcelファイルを作成することをお勧めします。
これを実現する簡単な方法の1つは、ClosedXMLを使用することです。
これを行うには、CodeplexサイトからClosedXML.dllとDocumentFormat.OpenXml.dllをダウンロードし、ASP.NETプロジェクトの参照として追加します。次に、ボタンクリックイベントで、Excelブックを設定し、DataTable
バインドしているものと同じワークシートからワークシートを作成しGridView
、ワークブックファイルをHTTP応答に保存するだけです。このようなもの:
var wb = new ClosedXML.Excel.XLWorkbook();
DataTable dt = GetTheDataTable();
dt.TableName = "This will be the worksheet name";
wb.Worksheets.Add(dt);
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment;filename=\"FileName.xlsx\"");
using (var ms = new System.IO.MemoryStream()) {
wb.SaveAs(ms);
ms.WriteTo(Response.OutputStream);
ms.Close();
}
Response.End();
ライセンスの制限が少なく、ドキュメントが素晴らしく、開発者が親切でフレンドリーで、プロジェクトが現在非常に活発であるため、他の選択肢よりもClosedXMLを使用します。