如何在ASP.Net中下载Excel对象

本文关键字:下载 Excel 对象 Net ASP | 更新日期: 2023-09-27 18:11:29

请考虑以下代码:

Microsoft.Office.Interop.Excel.Application objApp;
    Microsoft.Office.Interop.Excel._Workbook objBook;
    Microsoft.Office.Interop.Excel.Workbooks objBooks;
    Microsoft.Office.Interop.Excel.Sheets objSheets;
    Microsoft.Office.Interop.Excel._Worksheet objSheet;
    Microsoft.Office.Interop.Excel.Range range;
    int ColumnsCount = dt.Columns.Count;
    int RowsCount = dt.Rows.Count;
    objApp = new Microsoft.Office.Interop.Excel.Application();
    objBooks = objApp.Workbooks;
    objBook = objBooks.Add(System.Reflection.Missing.Value);
    objSheets = objBook.Worksheets;
    objSheet = (Microsoft.Office.Interop.Excel._Worksheet)objSheets.get_Item(1);
    for (int i = 1; i < ColumnsCount + 1; i++)
    {
        objSheet.Cells[1, i] = dt.Columns[i - 1].ColumnName;
    }
    range = objSheet.get_Range("A2", System.Reflection.Missing.Value);
    range = range.get_Resize(RowsCount, ColumnsCount);
    string[,] saRet = new string[RowsCount, ColumnsCount];
    for (int iRow = 0; iRow < RowsCount; iRow++)
    {
        for (int iCol = 0; iCol < ColumnsCount; iCol++)
        {
            saRet[iRow, iCol] = dt.Rows[iRow][iCol].ToString();
        }
    }
    //Set the range value to the array.
    range.set_Value(Missing.Value, saRet);

我想下载我创建的Excel对象。问题是Microsoft.Office.Interop.Excel._Workbook是不可序列化的,直到我保存它,我无法访问Excel文件。我如何下载在内存中创建的Excel ?

谢谢

如何在ASP.Net中下载Excel对象

这似乎是与Microsoft KB:服务器端自动化Office相关的许多问题之一。不支持使用Excel互操作服务器端。

我建议您导出csv文件或查看OpenXML或更简单的版本ClosedXML来在服务器上生成xslx文件。

请参阅本MSDN指南中的其他方法:净导出Excel

工作簿上应该有一个savea方法,您可以使用该方法将其保存为xls文件。

objBook.SaveAs("my-workbook.xls");