我正在使用SQL Server 2008 BIDS。我试图在Excel文件中读取多张纸。这些名称大部分是按字母顺序排列的(很少有特殊的字符串'&')。数据从第8行开始。我通过在Excel源的open rowset属性中设置行和列来跳过空行。我得到了确切的映射。但是,我无法预览数据。包运行成功(一切都变为绿色),但我的目的地没有数据。
我尝试预览时收到的错误是:
显示预览时出错。
其他信息:
索引和长度必须引用字符串中的位置。参数 名称:长度(mscorlib)
如果我做错了或者我错过任何设置,请告诉我。
我提到的链接:
Skipping rows when importing Excel into SQL using SSIS 2008
由于
答案 0 :(得分:1)
我在一位朋友的帮助下破解了它。
在Excel资源的属性>>自定义属性>>打开行集>> 的 SHEETNAME $ A12:J- 强>
这意味着跳过行直到A12。并且从A12到J列的结尾都考虑了数据。
问题解决了。
答案 1 :(得分:1)
解决此问题的方法是在数据访问模式下使用q SQL命令。
Select * FROM [Sheet1$A20:K]
这将正确读取数据,不会发生预览错误。
答案 2 :(得分:0)
我在尝试将.xlsx文件导入SSIS 2008时遇到同样的错误。我首先将文件保存为.xls(Excel 97-2003)。我仍然遇到上述错误,无法使用新文件预览数据。
从Sheet名称中删除空格后,我就可以预览数据了。标签最初称为时间数据;我把它改成了TimeData。
根据以上网站,工作表名称存在其他一些潜在问题:
答案 3 :(得分:0)
在我的情况下,我试图从SQL导出到Excel文件,并在尝试预览目标数据时接收“索引和长度必须引用字符串中的位置”。 从Excel目标编辑器中删除Excel工作表中的空间为我修复了它。
答案 4 :(得分:0)
在没有运气的情况下尝试所有其他答案后,我重命名了电子表格。 在Excel连接管理器中,我浏览了重命名的电子表格,未选中的第一行包含列名称。然后我可以在预览窗口中查看数据。