我實現了與MS-訪問OLE-DB驅動程序 「導出到Excel」,它可以讀取和寫入Excel文件的follwoing方式:
準備(做一次)
- 創建包含所有(標題,格式化,公式,圖表)用作爲模板將被填充
- 給數據區(包括標題)的名稱(即,「邁德特」)的空數據區的Excel文件
實現出口
- 複製模板文件到目標文件夾
- 打開OLEDB數據庫連接到目標文件
- 使用SQL插入數據
例
Excel table with Named area "MyData"
Name, FamilyName, Birthday
open System.Data.OleDb.OleDbConnection
execute sql "Insert into MyData(Name, FamilyName, Birthday) values(...)"
我用這個連接字符串
private const string FORMAT_EXCEL_CONNECT =
// @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=""Excel 8.0;HDR={1}""";
@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=""Excel 12.0;HDR={1}""";
private static string GetExcelConnectionString(string excelFilePath, bool header)
{
return string.Format(FORMAT_EXCEL_CONNECT,
excelFilePath,
(header) ? "Yes" : "No"
);
}
來源
2011-01-22 05:59:02
k3b
最簡單的方法涉及一個像樣的第三方庫:-)尋找「Excel自動化」。 MSDN上應該有一些知識庫文章等。請注意,使用Excel COM Interop比*大多數/所有第三方工具顯着更慢*,並期望在非服務環境中運行等。處理「幾百萬行」也可能存在問題(從不嘗試靠近這些限制的任),甚至不包括額外的資源/時間開銷 - 不是批評性的,並不排除「今天某個時候」:) – 2011-01-22 04:41:48
此外,對於這樣一個簡單的轉儲,考慮CSV-> Excel(手動或通過自動化)而不是添加所有一次一行(幾百萬是幾百萬!)。另一種選擇是通過流式編寫器等直接轉儲到XSLX(XML,只需抓住「模板」)。當然,這些步驟僅存在於第三方庫中。 – 2011-01-22 04:51:06
您在我的Excel 2010工作表中看到的1,048,576行適合「幾百萬行」的方法是什麼?我與泰勒達成協議,將錢花在Aspose.Cells for .NET(開發者企業訂購899美元)等第三方庫上。 – tawman 2011-01-22 05:01:16