SSIS中C#导入脚本导入他人保存的xlsx时返回空表问题
我最近搭建了一个SSIS批量导入任务,用来把外部驱动器文件夹里的xlsx文件批量上传到数据库,核心结构和关键代码分享给大家:
SSIS Excel批量导入任务实现
任务整体架构
- 外层用For Each Loop容器遍历目标文件夹里的所有xlsx文件
- 容器内部嵌套Data Flow Task,其中通过Script Component来处理Excel文件的读取和数据库写入逻辑
核心Excel数据查询方法
下面是我封装的用于读取Excel数据的C#方法,使用OLEDB连接来获取数据:
private DataTable QueryData(string FileName, string Header, string QueryString) { string connectionString; OleDbConnection excelConnection; OleDbDataAdapter dataAdapter; DataSet excelDataSet; // 构建ACE驱动连接字符串,需根据实际场景补全DataSource部分 connectionString = "Provider = Microsoft.ACE.OLEDB.16.0; Data Source = " + FileName + "; Extended Properties = \"Excel 12.0 Xml; HDR=" + Header + ";\""; using (excelConnection = new OleDbConnection(connectionString)) { excelConnection.Open(); dataAdapter = new OleDbDataAdapter(QueryString, excelConnection); excelDataSet = new DataSet(); dataAdapter.Fill(excelDataSet); } return excelDataSet.Tables[0]; }
关键注意事项
- 必须确保运行SSIS包的机器已经安装了Microsoft ACE OLEDB 16.0驱动,否则会出现连接失败的错误
- 连接字符串里的
HDR参数要和传入的Header参数对应:Yes表示Excel第一行是表头,No表示所有行都是数据行 QueryString可以是类似SELECT * FROM [Sheet1$]的SQL语句,用来指定读取Excel里的具体工作表
内容的提问来源于stack exchange,提问作者northest
相关产品推荐
相关产品推荐

