在ASP.NET MVC中导出Excel电子表格
任何人都可以指向正确的方向吗? 我不是很了解.NET或Javascript,所以这对我来说有点太难了。 让用户以Excel电子表格的forms下载一个Javascript对象array
最简单的方法是什么? 我知道导出到CSV是最简单的方法,但我真的需要以正确的.xlsx格式导出它。 据我所知,我将需要使用OpenXML sdk,但没有太多的信息(至lessnoob友好的信息)如何实际接近它。 任何帮助表示赞赏。
您也可以输出一个基本的HTML表格并设置适当的响应头(Content-type):
应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet
这将提示用户打开Excel查看文件。
斯里,但我不能写评论,所以我回答你的问题…
你可以使用JavaScript来做到这一点。
也许你可以使用这个
你应该这篇文章,我想…
我希望这个答案对你有帮助
检查这个请求;
[1]:
$("[id$=myButtonControlID]").click(function(e) { window.open('data:application/vnd.ms-excel,' + encodeURIComponent( $('div[id$=divTableDataHolder]').html())); e.preventDefault(); });
table { border: 1px solid black; } th { border: 1px solid black; padding: 5px; background-color:skyblue; color: white; } td { border: 1px solid black; padding: 5px; color: green; }
<button id="myButtonControlID">Export Table data into Excel</button> <div id="divTableDataHolder"> <table> <tr><th>ColumnOne </th><th>ColumnTwo</th></tr> <tr> <td>row1ColValue1</td><td>row1ColValue2</td> </tr> <tr> <td>row2ColValue1</td><td>row2ColValue2</td> </tr> </table> </div>
Folloiwng是ASP.Net MVC中的ClosedXML方法。 它将帮助下载文件为xlsx
GenerateExcelInvoiceController
private void GenerateExcelInvoiceController(ClosedXML.Excel.XLWorkbook workBook, string formtFileName) { string currentTime = DateTime.Now.ToString(); string headerString = formtFileName.Replace("{0}", currentTime); headerString = headerString.Replace(" ", ""); Response.Clear(); Response.Buffer = true; Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", headerString); using (MemoryStream memoryStream = new MemoryStream()) { workBook.SaveAs(memoryStream); memoryStream.WriteTo(Response.OutputStream); memoryStream.Close(); } Response.End(); }
ClosedXML.Excel.XLWorkbook GetWorkBook
public static ClosedXML.Excel.XLWorkbook GetWorkBook(DataTable table, string sheetName) { ClosedXML.Excel.XLWorkbook workBook = new ClosedXML.Excel.XLWorkbook(); ClosedXML.Excel.IXLWorksheet workSheet = workBook.Worksheets.Add(table, sheetName); return workBook; }
POST的控制器操作
[Authorize] [HttpPost] public void PracticeList(BalanceStatementModel modelReceived) { List<FinanceEntity> rows = GetRunningBalanceDueForPractice(); DataTable table = new DataTable(); using (var reader = FastMember.ObjectReader.Create(rows, "ItemDescription", "EventDate", "Amount", "RunningBalanceDue")) { table.Load(reader); } ClosedXML.Excel.XLWorkbook workBook = CommonBusinessMethodHelpers.GetWorkBook(table, "Statement"); string formtFileName = "attachment;filename=\"BalanceStatement-{0}.xlsx\""; GenerateExcelInvoiceController(workBook, formtFileName); }
注意:它使用通过NuGet提供的FastMember librabry。
参考文献:
-
使用ClosedXML轻松实现OpenXML
-
使用库ClosedXml创buildExcel文件