【问题标题】:Exporting Excel spreadsheets in ASP.NET MVC在 ASP.NET MVC 中导出 Excel 电子表格
【发布时间】:2017-06-27 04:52:14
【问题描述】:

谁能指出我正确的方向?我不是很懂 .NET 或 Javascript,所以这对我来说有点太难了。让用户以 Excel 电子表格的形式下载对象的 Javascript array 的最简单方法是什么?我知道将其导出为 CSV 是最简单的方法,但我确实需要以正确的 .xlsx 格式导出它。据我了解,我将需要使用 OpenXML sdk,但没有太多关于如何实际处理它的信息(至少对新手友好的信息)。任何帮助表示赞赏。

【问题讨论】:

    标签: javascript c# asp.net asp.net-mvc excel


    【解决方案1】:

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

    application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

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

    【讨论】:

      【解决方案2】:

      对不起,我不能写评论,所以我回答了你的问题......

      也许你可以使用 JavaScript。

      也许你可以使用this one

      我想你也应该article...

      希望这个回答对你有帮助...

      请检查这个;

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

      【讨论】:

        【解决方案3】:

        Folloiwng 是 ASP.Net MVC 中的 ClosedXML 方法。它将帮助下载文件为xlsx

        生成ExcelInvoiceController

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

        参考资料:

        1. Making OpenXML Easy with ClosedXML

        2. Use the library ClosedXml for creating Excel files

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-23
          相关资源
          最近更新 更多