简体   繁体   English

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

[英]How to download Excel object in ASP.Net

Please consider this code: 请考虑以下代码:

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

I want to download Excel object that I created. 我想下载我创建的Excel对象。 The problem is Microsoft.Office.Interop.Excel._Workbook is not serializable and until I save it I can't access Excel file. 问题是Microsoft.Office.Interop.Excel._Workbook无法序列化,并且在保存之前,我无法访问Excel文件。 How I can download Excel that created in memory? 如何下载在内存中创建的Excel?

thanks 谢谢

This seems like one of the many problems related to Microsoft KB: Considerations for server-side Automation of Office . 这似乎是与Microsoft KB相关的许多问题之一:Office的服务器端自动化的注意事项 Using Excel Interop server-side isn't supported. 不支持在服务器端使用Excel Interop。

I'd recommend you export csv files or look into OpenXML or the easier version ClosedXML to generate xslx files on the server. 我建议您导出csv文件或使用OpenXML或更简单的版本ClosedXML在服务器上生成xslx文件。

See the other methods in this MSDN guide: How To Asp.Net Export Excel 请参阅此MSDN指南中的其他方法: 如何Asp.Net导出Excel

您的工作簿上应该有一个SaveAs方法,可用于另存为xls文件。

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM