2009-11-02 45 views
1

我有一个excel文件,其中包含我需要推入我的SQL Server数据库的联系人列表(大约10 k)。因此,我正在使用visual studio 2008编写一个.net Windows程序来读取这些文件,为每个联系人生成随机密码,然后将这些信息推送到我的SQL Server数据库中。如何读取,编辑和写入xls文件,然后导出到SQL Server

在2003年很容易处理excel文件,但现在我的电脑有office 2007,事情似乎发生了变化。我在挖掘Microsoft.Office.Interop.Excel,但它似乎比以前复杂得多。

回答

0

我将采取ETL方法是:

  1. 创建一个SSIS包将数据导入到SQL Server中
  2. 验证一个临时表,并清理所有导入的数据
  3. 写SQL脚本随机密码为每个导入的行,然后调用从SSIS包脚本/存储过程作为一个SQL任务
  4. 插入到实际的数据表,从临时表

如果这是需要一遍又一遍地完成的事情,我会将包保存到SQL Server中,并从我的C#程序调用它。

0

我不确定这是否会对您有所帮助,但也许SSIS(SQL Server Integration Services)可以帮助您。

除此之外,您可以尝试在Excel中执行所需的操作时在Excel中录制宏,并且在完成操作后,可以查看录制的宏(ALT + F8)并将其“转换”为你的.NET代码。

只是一个建议。

2

如果是一笔一笔的交易,您可以将excel文件稍微格式化,将其导入并访问数据库,然后将其推回到任何您想要的数据库。

如果你必须在.net中完成,你可以使用SQL通过ODBC打开一个excel文件......这有点脆弱,但我过去曾用它成功过。

使用这样的事情在Excel连接字符串:
提供商= Microsoft.Jet.OLEDB.4.0;数据源= C:\ MyExcel.xls;扩展属性=“Excel的8.0; HDR =是; IMEX = 1" ;

工作表和命名部分是表名称...... HDR =是表示第一行包含字段的名称。我承认这有点奇怪。 :)

+0

是的,我正在挖这篇文章http://www.davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx 但后来我得到一个错误'Microsoft.Jet。 OLEDB.4.0提供程序未在本地计算机上注册。 我试过注册dll文件,其他所有东西,但它仍然发生,我不知道是否因为我正在运行Windows 7. – tuanvt

+0

尝试在Visual Studio的项目属性中将平台目标更改为x86。这些驱动程序可能不适用于64位... –

+0

64位访问驱动程序在[Microsoft Access数据库引擎2010可再发行组件]中可用(http://www.microsoft.com/download/en/details.aspx?id= 13255)。查看我的[answer over here](http://stackoverflow.com/a/7223713/95195)了解连接字符串。 –

相关问题