2015-09-06 42 views
1

請考慮下面的代碼:如何下載Excel對象在ASP.Net

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?

感謝

回答

1

這似乎是與Microsoft KB: Considerations for server-side Automation of Office相關的許多問題之一。不支持使用Excel Interop服務器端。

我建議您導出csv文件或查看OpenXML或更簡單的版本ClosedXML以在服務器上生成xslx文件。

請參閱本MSDN指南中的其他方法:How To Asp.Net Export Excel

+0

我的文件的文件夾有沒有一種方法來創建Excel中使用的OpenXML並使用asp.net下載它? – Arian

+0

是的,在OpenXML上快速搜索以創建xslx,然後使用有關該主題的MSDN指南查看對我的問題的編輯。 –

0

應該有你的工作簿中,你可以用它來保存爲XLS文件另存爲一個方法。

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

我不想it.Currently救我還沒有爲保存在服務器上 – Arian