我实现了与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