我有一個DataTable與50+列和100000+ rows.I需要轉儲整個DataTable值到一個Excel文件。任何人都可以請幫助在C#代碼在ASP.net.I需要每個列值都在一個單元格中。確切地說,我需要Excel文件中DataTable的精確副本。請幫助。導出DataTable到Excel文件在網頁
感謝, 基蘭
我有一個DataTable與50+列和100000+ rows.I需要轉儲整個DataTable值到一個Excel文件。任何人都可以請幫助在C#代碼在ASP.net.I需要每個列值都在一個單元格中。確切地說,我需要Excel文件中DataTable的精確副本。請幫助。導出DataTable到Excel文件在網頁
感謝, 基蘭
,你可以調用這個方法,只是通過在你的數據表:
public static void DumpExcel(DataTable dataTable)
{
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("DataTable");
worksheet.Cells["A1"].LoadFromDataTable(dataTable, true);
for (int i = 1; i <= dataTable.Columns.Count; i++)
{
worksheet.Column(i).AutoFit();
if (dataTable.Columns[i - 1].DataType == System.Type.GetType("System.DateTime"))
{
worksheet.Column(i).Style.Numberformat.Format = CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern;
}
}
HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=table.xlsx");
HttpContext.Current.Response.BinaryWrite(package.GetAsByteArray());
HttpContext.Current.Response.End();
}
}
看一看這個例子的ExporttoExcel
功能。它會幫助你。
public void ExportToExcel(string strFileName, DataTable dt)
{
try
{
if (dt != null && dt.Rows.Count > 0)
{
GridView gv = new GridView();
gv.DataSource = dt;
gv.DataBind();
ExportToExcel(strFileName, gv);
}
else
{
BindScript(this.Page, "excelError", "alert('No Data to Generate Excel !')");
}
}
catch (Exception ex)
{
BindScript(this.Page, "excelError", "alert('Some error occured " + ex.Message + "')");
}
}
private void ExportToExcel(string strFileName, GridView gv)
{
try
{
if (gv.Rows.Count > 0)
{
//Page page = new Page();
//HtmlForm form = new HtmlForm();
//Response.ClearContent();
//Response.Buffer = true;
//Response.AddHeader("content-disposition", "attachment; filename=" + strFileName);
//Response.ContentType = "application/excel";
////System.Text.StringBuilder sb = new System.Text.StringBuilder();
//StringWriter sw = new StringWriter();
//HtmlTextWriter htw = new HtmlTextWriter(sw);
//form.Controls.Add(gv);
//page.Controls.Add(form);
////form.RenderControl(htw);
//HttpContext.Current.Server.Execute(page, sw, true);
//Response.Write(sw.ToString());
//Response.Flush();
//Response.End();
StringWriter tw = new StringWriter();
HtmlTextWriter hw = new HtmlTextWriter(tw);
//Get the HTML for the control.
gv.RenderControl(hw);
//Write the HTML back to the browser.
//Response.ContentType = application/vnd.ms-excel;
Response.ContentType = "application/vnd.ms-excel";
Response.AppendHeader("Content-Disposition", "attachment; filename=" + strFileName);
EnableViewState = false;
Response.Write(tw.ToString());
Response.End();
}
else
{
BindScript(this.Page, "excelError", "alert('No Data to Generate Excel !')");
}
}
catch (Exception ex)
{
BindScript(this.Page, "excelError", "alert('Some error occured " + ex.Message + "')");
}
}
但我的數據是140列和100000行。我越來越內存異常。主要的問題是,我的服務器配置是2 GB,它與4 GB的效果很好。 Ram是限制。我的客戶不能增加內存。任何建議 – user2678769