2011-03-30 85 views
0

我有一個大於300.000行的數據表,我想將這個數據表導出到Excel 2003但不使用Excel COM。我使用了NPOI,但它引發了OutOfMemory錯誤。我發現一個派對組件(免費)可以爲每一行導出並直接寫入文件以避免內存不足。誰能幫我?謝謝。導出大型數據表excel 2003通過c#沒有excel COM

+0

我把它使用CSV文件出了問題? – forsvarir 2011-03-30 09:28:53

+1

請注意,每個Excel 2003工作表都有65536行的限制。 – 2011-03-30 09:57:59

回答

1

csv文件如何?它可以從Excel讀取。

0

您可以到Excel文件導出與使用的WebGrid(僅在代碼中)。假設你正在創建一個WinForm應用程序,你將不得不引用System.Web庫。

// Create the DataGrid and perform the databinding 
var myDataGrid = new System.Web.UI.WebControls.DataGrid(); 
myDataGrid.HeaderStyle.Font.Bold = true; 
myDataGrid.DataSource = myDataTable; 
myDataGrid.DataBind(); 
string myFile = "put the name here with full path.xls" 
var myFileStream = new FileStream(myFile, FileMode.Create, FileAccess.ReadWrite); 
// Render the DataGrid control to a file 
using (var myStreamWriter = new StreamWriter(myFileStream)) 
{  
    using (var myHtmlTextWriter = new System.Web.UI.HtmlTextWriter(myStreamWriter))   
    {   
     myDataGrid .RenderControl(myHtmlTextWriter);  
    } 
} 

我還沒有測試過這麼多的記錄,所以我不知道這種記憶方式的影響。

編輯:

採取注@Charles威廉姆斯的評論是Excel 2003中有一個行限制