2015-07-21 80 views
0

任何人都可以指向正确的方向吗?我不是很熟悉.NET或Javascript的人,所以这对我来说有点太难了。让用户以Excel电子表格的形式下载对象的Javascript array的最简单方法是什么?我知道将其导出为CSV是最简单的方法,但我确实需要将其以适当的.xlsx格式导出。据我所知,我需要使用OpenXML sdk,但没有太多的信息(至少noob友好的信息)如何实际接近它。任何帮助表示赞赏。在ASP.NET MVC中导出Excel电子表格

回答

1

您也可以直接输出一个基本的HTML表,并设置适当的响应头(内容类型):

应用/ vnd.openxmlformats-officedocument.spreadsheetml.sheet

这将提示用户打开Excel查看文件。

0

Srry,但我不能发表评论,所以我回答了你的问题...

您可以使用JavaScript的这个可能。

也许你可以使用this one

你应该这样article过我想......

我希望这个答案将会有帮助你...

检查这一PLS;

[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>

0

Folloiwng是在ASP.Net MVC一个ClosedXML方法。这将有助于下载文件为xlsx

enter image description here

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); 


    } 

注:它使用可FastMember librabry通过的NuGet。

参考文献:

  1. Making OpenXML Easy with ClosedXML

  2. Use the library ClosedXml for creating Excel files