如何读取,编辑和写入xls文件,然后导出到SQL Server
我有一个Excel文件,其中有我需要推入到我的SQL Server数据库的联系人列表(约10 K)。 所以,我正在使用Visual Studio 2008编写一个.net Windows程序来读取文件,为每个联系人生成随机密码,然后将这些信息推送到我的SQL Server数据库中。
在2003年处理excel文件很容易,但现在我的电脑已经在办公室2007了,事情似乎改变了。 我正在挖掘Microsoft.Office.Interop.Excel,但似乎比以前复杂得多。
如果是一笔交易,可以将excel文件格式化一下,将其导入并访问数据库,然后将其推回到任何您想要的数据库。
如果你必须用.net来做,你可以通过ODBC使用SQL打开一个excel文件…这有点脆弱,但是我过去用它成功了。
在excel中使用这样的连接string:
Provider = Microsoft.Jet.OLEDB.4.0; Data Source = C:\ MyExcel.xls; Extended Properties =“Excel 8.0; HDR = Yes; IMEX = 1”;
工作表和命名部分是表名.HDR =是表示第一行包含字段的名称。 我承认这有点奇怪。 🙂
我会采取一个ETL方法来:
- 创build一个SSIS包来将数据导入到SQL Server中的临时表中
- validation并清理所有导入的数据
- 编写一个SQL脚本以随机化每个导入的行的密码,并将该脚本/存储过程从SSIS包中调用为SQL任务
- 从暂存表插入实际的数据表
如果这是需要一遍又一遍地完成的,我会把这个包保存到SQL Server中,然后从我的C#程序中调用它。
我不确定这是否会对您有所帮助,但也许SSIS(SQL Server Integration Services)可以帮助您。
除此之外,您可以尝试在Excel中录制macros,同时在Excel中执行所需的操作,当您完成操作时,可以查看录制的macros(ALT + F8)并将其“转换”为.NET代码。
只是一个build议。
- 不能打开Excel文件,当宿主在Asp.Net中的IIS服务器C#
- 设置轴标题时发生COMException 0x800A03EC
- GetVstoObject因AccessViolationException失败
- .net数据服务OData提要:如何强制excel将时间解释为date列
- 如何使用OpenXML从Excel表格中检索选项卡名称
- 为什么在用OleDb导入Excel时忽略了第一个空行
- 用于格式化模板的用于Excel 2003电子表格生成的.NET组件
- 在Excel工作表中保存自定义属性
- 无法在Windows XP中加载文件或程序集microsoft.office.interop.excel版本15.0.0.0