在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。

参考文献:

  1. 使用ClosedXML轻松实现OpenXML

  2. 使用库ClosedXml创buildExcel文件