我有一个excel文件,它有一个标题行,这是我要删除的行。 thsi文件中的标题行是A1到W1合并为一个的单元格。当我尝试读取文件时,这会导致问题,因为我期待列名称。文件的第二行中存在正确的列名,这就是我想要删除第一行的原因。
为了实现这一点,我想我能够使用“Excel来源”#39; SSIS中的项,因为它支持用于编写查询的SQL选项。我想做的是这样的事情:
SELECT * from ExcelFile WHERE Row > 1
我的文件只有A列到W列的数据。
我不知道在查询中我可以使用什么语法来执行此操作。 Excel Source项目中的查询构建器将允许我使用列执行许多操作,但我没有看到使用行执行任何操作的选项。在线搜索并使用帮助并没有把我带到任何地方。
答案 0 :(得分:0)
您不需要使用语法。 去控制流程.. 引入数据流任务。 添加excel文件源...添加一个连接管理器 用excel表。 打开您的连接管理器,然后选中显示的框。 列名在第一行。这就是它,并添加你的目的地。
答案 1 :(得分:0)
这些解决方案都不会起作用,因为合并后的第一行会混淆Excel驱动程序。您将无法使用任何驱动程序功能,例如跳过第一行来执行此操作。您需要运行一些脚本来打开Excel文件并手动删除该行。
此站点有一些基本的示例脚本:
http://www.sqlservercentral.com/Forums/Topic1327014-1292-1.aspx
以下代码改编自该网站上 snsingh 所编写的代码。
你显然想要使用连接管理器属性,而不是硬编码路径
Excel需要安装在SSIS服务器上才能工作 - 这是使用Excel自动化的唯一方法。
Dim filename As String
Dim appExcel As Object
Dim newBook As Object
Dim oSheet1 As Object
appExcel = CreateObject("Excel.Application")
filename = "C:\test.xls"
appExcel.DisplayAlerts = False
newBook = appExcel.Workbooks.Open(filename)
oSheet1 = newBook.worksheets("Sheet1")
oSheet1.Range("A1").Entirerow.Delete()
newBook.SaveAs(filename, FileFormat:=56)
appExcel.Workbooks.Close()
appExcel.Quit()