tôi muốn xuất bảng dữ liệu sang tệp excel với EPPlus mà bảng dữ liệu có thuộc tính có loại int, vì vậy tôi muốn trong tệp excel, cùng định dạng sẽ là. Có ai biết cách để xuất một DataTable sang Excel bằng những thứ này không?Xuất DataTable thành excel với EPPlus
Trả lời
using (ExcelPackage pck = new ExcelPackage(newFile))
{
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Accounts");
ws.Cells["A1"].LoadFromDataTable(dataTable, true);
pck.Save();
}
Điều đó sẽ thực hiện thủ thuật cho bạn. Nếu các trường của bạn được định nghĩa là int EPPlus sẽ đưa các cột vào một số hoặc nổi.
và nếu bạn muốn tải về để đáp ứng trình duyệt
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);
}
Cảm ơn bạn đã trích đoạn nội dung! Không cần phải urlencode "Logs.xlsx" :) –
Đối tải excelsheet sử dụng trình duyệt HttpContext.Current.Response
thay vì Response
nếu không bạn sẽ nhận được Response is not available in this context.
error.Here là mã của tôi
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();
}
Đối với bất cứ ai nhận được 'System.Web.HttpContextBase' không chứa một định nghĩa cho 'hiện tại': Để có được một tham chiếu đến HttpContext.Current bạn cần thay thế HttpContext.Current với System.Web.HttpContext.Current http://stackoverflow.com/questions/19431820/system-web-httpcontextbase-does-not-contain-a-definition-for-current-mvc-4-wi –
thế nào thế nào để định dạng tiêu đề của datatable trong khi xuất khẩu ?? –
Có. điều này làm việc tốt. Nhưng khi datatable chứa hàng trong lakhs. Cái này không hoạt động. – thevan
Có lẽ bạn nên mở một câu hỏi cho trường hợp cụ thể đó? – wegginho