Экспорт больших данных в Excel 2003 с помощью C # без Excel COM - PullRequest
0 голосов
/ 30 марта 2011

У меня есть таблица данных со строкой, превышающей 300 000, я хочу экспортировать эту таблицу в Excel 2003, но не использую Excel COM.Я использовал NPOI, но это вызывает ошибку OutOfMemory.Я обнаружил, что компонент thirt party (бесплатный) может экспортировать для каждой строки и записывать напрямую в файл, чтобы избежать нехватки памяти.Кто может мне помочь?спасибо.

Ответы [ 3 ]

1 голос
/ 30 марта 2011

Как насчет файла CSV?Это читается из Excel.

0 голосов
/ 30 марта 2011

Вы можете экспортировать в Excel-файл с использованием веб-сетки (только в коде).Предполагая, что вы создаете 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 Williams, что в Excel 2003 есть ограничение строки

0 голосов
/ 30 марта 2011

Попробуйте это Libs. Я не уверен насчет емкости

  1. http://ehl.codeplex.com/
  2. http://excelexportlib.codeplex.com/
...