[英]Export HTML Table to Excel using ASP.NET
我有一個html表(非Gridview),沒有正確的標題和行。 相反,它具有定制的結構和數據。 我想將此表導出到Excel。 我該如何使用ASP.NET?
標簽是固定文本,整數值來自數據庫。 所以表結構只修改了整數/小數值的變化。
您希望使用ASP.NET將HTML表格(非Gridview)自定義結構和數據導出到Excel。
請嘗試以下方法
提供ID
並添加runat="server"
屬性
<table id="tbl" runat="server" >
添加以下代碼
Response.ContentType = "application/x-msexcel"; Response.AddHeader("Content-Disposition", "attachment; filename=ExcelFile.xls"); Response.ContentEncoding = Encoding.UTF8; StringWriter tw = new StringWriter(); HtmlTextWriter hw = new HtmlTextWriter(tw); tbl.RenderControl(hw); Response.Write(tw.ToString()); Response.End();
您可以使用以下代碼:
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment; filename=Print.xls");
Response.Write("<html xmlns:x=\"urn:schemas-microsoft-com:office:excel\">");
Response.Write("<head>");
Response.Write("<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf- 8\">");
Response.Write("<!--[if gte mso 9]><xml>");
Response.Write("<x:ExcelWorkbook>");
Response.Write("<x:ExcelWorksheets>");
Response.Write("<x:ExcelWorksheet>");
Response.Write("<x:Name>Report Data</x:Name>");
Response.Write("<x:WorksheetOptions>");
Response.Write("<x:Print>");
Response.Write("<x:ValidPrinterInfo/>");
Response.Write("</x:Print>");
Response.Write("</x:WorksheetOptions>");
Response.Write("</x:ExcelWorksheet>");
Response.Write("</x:ExcelWorksheets>");
Response.Write("</x:ExcelWorkbook>");
Response.Write("</xml>");
Response.Write("<![endif]--> ");
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
tbl.RenderControl(hw);
Response.Write(tw.ToString());
Response.Write("</head>");
Response.flush();
如果您希望導出的輸出看起來與UI完全相同,則建議使用內聯css。 如果將css類應用於表,則它不會顯示在導出的excel中。
如果dtReport包含表(即要導出的數據),那么我們可以使用以下LOC將表導出到excel,並且我們也可以格式化標題
if (dtReports != null && dtReports.Rows.Count > 0 && !string.IsNullOrEmpty(formName))
{
string filename = formName.ToUpper() + ParsConstant.XLS_EXTENSION;
StringWriter tw = new StringWriter();
using (HtmlTextWriter hw = new HtmlTextWriter(tw))
{
//Binding Datatable to DataGrid.
DataGrid dgGrid = new DataGrid();
dgGrid.DataSource = dtReports;
dgGrid.DataBind();
//Some Properties for the Header
dgGrid.HeaderStyle.Font.Bold = true;
dgGrid.HeaderStyle.Font.Size = 13;
//Get the HTML for the control.
dgGrid.RenderControl(hw);
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + filename + "");
//Response.Write("<style> TD { mso-number-format:\\@; } </style>");
Response.Write(tw.ToString());
Response.End();
}
}
使用MSO格式不會避免前導零,但它會將文本轉換為字符串,這不適合進行操作。
如果您的數據是數據庫(如果不是,您可以存儲在XML文件中),那么請查看我最近發布的類似問題。
沒有自動化的方式。 但是您可以使用相同的代碼來創建表並將其寫入輸出。 如果您將其寫為簡單的CSV文件,則用戶只需單擊下載的文件即可將其加載到Excel中。
通過設置正確的標題,您可以指示瀏覽器將內容視為下載而不是網頁。 我在本文中發布了代碼來執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.