如何读取、编辑和写入xls文件,然后导出到SQL Server

Posted

技术标签:

【中文标题】如何读取、编辑和写入xls文件,然后导出到SQL Server【英文标题】:How to read, edit and write xls files, and then export to SQL Server 【发布时间】:2009-11-02 14:37:24 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

在 excel 中对连接字符串使用类似的内容: Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\MyExcel.xls;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1";

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

【讨论】:

是的,我正在挖掘这篇文章davidhayden.com/blog/dave/archive/2006/05/26/2973.aspx 但后来我收到了一个错误“Microsoft.Jet. OLEDB.4.0' 提供程序未在本地计算机上注册。我尝试注册 dll 文件,但它仍然出现,我想知道是不是因为我正在运行 Windows 7。 尝试在visual studio的项目属性中将平台目标更改为x86。这些驱动程序可能在 64 位中不可用... Microsoft Access Database Engine 2010 Redistributable 中提供了 64 位访问驱动程序。连接字符串见我的answer over here。【参考方案2】:

我会采用 ETL 方法:

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

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

【讨论】:

【参考方案3】:

我不确定这是否会帮助你,但也许 SSIS(SQL Server 集成服务)会帮助你。

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

只是一个建议。

【讨论】:

以上是关于如何读取、编辑和写入xls文件,然后导出到SQL Server的主要内容,如果未能解决你的问题,请参考以下文章

如何将navicat for mysql 中查询出来的内容导出到xls文件中

如何将xls的资料导入到oracle数据库中

如何将navicat for mysql 中查询出来的内容导出到xls文件中

java如何读取一个加密后的.xls文件

如何将文件夹内的文件名自动写入excel表格

读取sql文件并写入到数据库,用SQL语句。