[英]What is the best and fastest way to write into Excel file using C#?
我正在嘗試使用OLEDB寫入excel文件(沒有自動化)。 我從其他應用程序獲得了大約500行數據,然后使用“INSERT INTO ..”查詢逐個寫入Excel文件。 我確信從其他應用程序讀取數據沒有延遲。 我查了一下。 在大約3分鍾內寫入500行的excel文件所花費的總時間。 這太多了。 這絕對是因為文件寫入操作。
什么是使這種速度快的最佳方法? 我應該使用其他一些技巧寫作嗎? 我應該嘗試自動化技術嗎?
http://support.microsoft.com/kb/306023此鏈接顯示了許多技術,但不確定使用哪種技術。
如果你可以將COM轉換為excel,你可以通過COM直接從excel查詢,或創建一個數據數組並將其直接放入等於數組大小的范圍內。 盡管excel對於小型COM調用並不是很好,但它很少用於大量的COM調用:)
DataSet ds = new DataSet();
da.Fill(ds);
int width = ds.Tables[0].Columns.Count;
int height = ds.Tables[0].Rows.Count;
object[,] retList = new object[height, width];
for (int i = 0; i < height; i++)
{
DataRow r = ds.Tables[0].Rows[i];
for (int j = 0; j < width; j++)
retList[i, j] = r.ItemArray[j];
}
Excel.Range range = mWs.get_Range(destination, mWs.Cells[destination.Row + height - 1, destination.Column + width - 1]);
range.set_Value(Missing.Value, retList);
System.Runtime.InteropServices.Marshal.ReleaseComObject(range);
range = null;
這是一個獲取數據並在一次COM調用中將其作為數組插入excel的示例
Excel已經提供了以XML格式讀取/寫入數據所需的一切。
我偶爾使用過SpreadsheetML格式,它對我來說效果很好。 使用它,您可以寫出一個xml格式的文檔,並使用.xls擴展名命名。 大多數excel功能都可用。 Microsoft的參考文檔就在這里 。 Google提供各種語言的教程,如Rails , PHP 。 Excel Hacks這本書也談到了它。
如果它只是數據,則可以使用CSV文件導入。 在代碼中創建文件並使用自動化使Excel導入文件。
更新:寫完這篇文章后,我喜歡@ MicTech的建議 ,我不知道。
我們使用SpreadsheetGear 。
我推薦了FlexCel庫,但它不是免費的:(
但是,如果您想要Office Open XML格式,可以使用http://excelpackage.codeplex.com/
我們使用aspose細胞。 它非常易於使用,速度快,沒有明顯的問題。
http://www.aspose.com/categories/.net-components/aspose.cells-for-.net/default.aspx
快速而骯臟的方法是創建一個包含表格數據的HTML表格,然后用.xls擴展名保存。 它工作,並將在Excel中打開。
那么,編寫Excel的最基本(也是最復雜)的方法是按照BIFF格式創建二進制文件。 使用BIFF格式,您需要概述Excel文件的結構。 它非常復雜,但您可以基於每個單元控制寫入內容。
將DataSet導出到Excel文件中還有其他CodeProject示例。 請記住,創建一個遵循Excel XML格式的XML文件。 它還基於每個單元寫入。 看着:
http://www.codeproject.com/KB/office/ExportDataSetToExcel.aspx
“寫入”Excel的另一種方法是將數據創建為HTML頁面並加載它。 Excel實際上可以讀取HTML。 通過html執行此操作的一個好處是,您可以使用CSV格式化數據。
但是,如果您只導出簡單數據(小文本字段和數字),請使用CSV。
我一直在使用Aspose.Cells庫,非常成功地編寫Excel文件。 它遠非便宜。
這個庫是免費的,並且非常快速地創建xls文件,如果你沒有安裝MS Office,它也可以工作。 http://code.google.com/p/excellibrary/downloads/list
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.