[英]How can I export very large amount of data to excel
我目前正在使用 EPPlus 將數據導出到 excel。 它適用於少量數據。 但是要導出大量數據會消耗大量內存。
我簡要介紹了 OOXML 和/或 Microsoft Open XML SDK 2.5。 我不確定我可以用它來將數據導出到 Excel 嗎?
還有第三方提供程序庫。
我想知道什么解決方案可以正確地以良好的性能導出大量數據並且不占用太多空間(理想情況下少於要導出的數據量的 3 倍)?
更新:一些額外的要求......我需要能夠導出“顏色”信息(不包括 CSV),我想要一些易於管理的東西,比如 EPPlus 庫(不包括 XML 格式本身)。 我找到了另一個線程,他們推薦了我正在嘗試的 Aspose 或 SpreadsheetGear。 我把第一個答案作為確定。 謝謝大家。
更新 2016-02-16就像信息一樣......我們現在使用 SpreadSheetGear,我們很喜歡它。 我們曾經需要支持,這很棒。
謝謝
EPPlus 將數據導出到 excel。 它適用於少量數據。 但是要導出大量數據會消耗大量內存。
幾年前,我寫了一個C#庫,使用OpenXML庫將數據導出到Excel,遇到了同樣的情況。
它運行良好,直到您開始有大約 30k+ 行,此時,庫將嘗試緩存您的所有數據......並且它會耗盡內存。
但是,我通過使用OpenXmlWriter
類解決了這個問題。 這會將數據直接寫入 Excel 文件(無需先緩存),並且內存效率更高。
而且,正如您將看到的,該庫非常易於使用,只需調用一個CreateExcelDocument
函數,並將其傳遞給DataSet
、 DataTable
或List<>
:
// Step 1: Create a DataSet, and put some sample data in it
DataSet ds = CreateSampleData();
// Step 2: Create the Excel .xlsx file
try
{
string excelFilename = "C:\\Sample.xlsx";
CreateExcelFile.CreateExcelDocument(ds, excelFilename);
}
catch (Exception ex)
{
MessageBox.Show("Couldn't create Excel file.\r\nException: " + ex.Message);
return;
}
您可以從這里下載 C# 和 VB.Net 的完整源代碼:
祝你好運!
如果您的要求足夠簡單,則可以使用 CSV。
如果您需要更多詳細信息,請查看SpreadsheetML 。 它是一種 XML 架構,可用於創建 Excel 可以本機打開的文本文檔。 它支持公式、每個工作簿的多個工作表、格式等。
我第二次使用 CSV,但請注意 Excel 對工作表中的行數和列數有限制,如下所述: http : //office.microsoft.com/en-us/excel-help/excel-specifications-and-limits- HP010342495.aspx
特別是:工作表大小 1,048,576 行 x 16,384 列
這是針對 Excel 2010 的。在處理大量數據時,請記住這些限制。
作為替代方案,您可以使用我的SwiftExcel庫。 它專為高容量 Excel 輸出而設計,可將數據直接寫入文件而不會影響內存。
下面是一個使用示例:
using (var ew = new ExcelWriter("C:\\temp\\test.xlsx"))
{
for (var row = 1; row <= 100; row++)
{
for (var col = 1; col <= 10; col++)
{
ew.Write($"row:{row}-col:{col}", col, row);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.