我想用EPPlus将数据表导出到excel文件,数据表具有int类型的属性,所以我想在excel文件中,格式相同 . 有谁知道用这些方法将DataTable导出到Excel?
using (ExcelPackage pck = new ExcelPackage(newFile)) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts"); ws.Cells["A1"].LoadFromDataTable(dataTable, true); pck.Save(); }
这应该为你做的伎俩 . 如果您的字段定义为int,则EPPlus会将列正确地转换为数字或浮点数 .
如果你想在浏览器响应中下载
Response.Clear(); Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment;filename=" + HttpUtility.UrlEncode("Logs.xlsx", System.Text.Encoding.UTF8)); using (ExcelPackage pck = new ExcelPackage()) { ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Logs"); ws.Cells["A1"].LoadFromDataTable(dt, true); var ms = new System.IO.MemoryStream(); pck.SaveAs(ms); ms.WriteTo(Response.OutputStream); }
要在浏览器中下载excelsheet,请使用 HttpContext.Current.Response 而不是 Response ,否则会收到 Response is not available in this context. 错误 . 这是我的代码
HttpContext.Current.Response
Response
Response is not available in this context.
public void ExporttoExcel(DataTable table, string filename) { HttpContext.Current.Response.Clear(); HttpContext.Current.Response.ClearContent(); HttpContext.Current.Response.ClearHeaders(); HttpContext.Current.Response.Buffer = true; HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8; HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; HttpContext.Current.Response.AddHeader("content-disposition", "attachment;filename=GridData.xlsx"); using (ExcelPackage pack = new ExcelPackage()) { ExcelWorksheet ws = pack.Workbook.Worksheets.Add(filename); ws.Cells["A1"].LoadFromDataTable(table, true); var ms = new System.IO.MemoryStream(); pack.SaveAs(ms); ms.WriteTo(HttpContext.Current.Response.OutputStream); } HttpContext.Current.Response.Flush(); HttpContext.Current.Response.End(); }
这是一个将DataSet导出到Excel的代码段:
private static void DataSetToExcel(DataSet dataSet, string filePath) { using (ExcelPackage pck = new ExcelPackage()) { foreach (DataTable dataTable in dataSet.Tables) { ExcelWorksheet workSheet = pck.Workbook.Worksheets.Add(dataTable.TableName); workSheet.Cells["A1"].LoadFromDataTable(dataTable, true); } pck.SaveAs(new FileInfo(filePath)); } }
并使用声明:
using OfficeOpenXml; using System.Data; using System.IO;
4 回答
这应该为你做的伎俩 . 如果您的字段定义为int,则EPPlus会将列正确地转换为数字或浮点数 .
如果你想在浏览器响应中下载
要在浏览器中下载excelsheet,请使用
HttpContext.Current.Response
而不是Response
,否则会收到Response is not available in this context.
错误 . 这是我的代码这是一个将DataSet导出到Excel的代码段:
并使用声明: