如何读取、编辑和写入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文件中