簡體   English   中英

使用C#寫入Excel文件的最佳和最快的方法是什么?

[英]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提供各種語言的教程,如RailsPHP Excel Hacks這本書也談到了它。

如果它只是數據,則可以使用CSV文件導入。 在代碼中創建文件並使用自動化使Excel導入文件。

更新:寫完這篇文章后,我喜歡@ MicTech的建議 ,我不知道。

我們使用SpreadsheetGear

我推薦了FlexCel庫,但它不是免費的:(

但是,如果您想要Office Open XML格式,可以使用http://excelpackage.codeplex.com/

您是在尋找一次性轉儲到Excel還是保持連接並將數據多次推送到Excel?

如果您想要多次將數據推送到Excel,您應該調查制作RTD服務器,我已經多次使用它們並且它們使用RTD服務器

如果您正在尋找一次推送到Excel,您需要使用COM。 使用COM和C#

C#版本4對托管COM進行了一些很好的改進,在使用Excel時不再需要主互操作程序集。 C#4尚未投入生產,但如果它適合您,您可以下載它的測試版。

我們使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM