【问题标题】:Delete top row of excel file using SSIS使用SSIS删除excel文件的第一行
【发布时间】:2020-04-10 10:02:10
【问题描述】:

我有一个 excel 文件,其中有一个标题行,这是我要删除的行。 thsi 文件中的标题行是合并为一个的 A1 到 W1 的单元格。当我尝试读取文件时,这会导致问题,因为我需要列名。文件的第二行中存在正确的列名,这就是我要删除第一行的原因。

为了实现这一点,我认为我可以在 SSIS 中使用“Excel Source”项,因为它支持 SQL 选项来编写查询。我想做的是这样的:

SELECT * from ExcelFile WHERE Row > 1

我的文件只有 A 到 W 列中的数据。

我不知道可以在查询中使用什么语法来执行此操作。 Excel Source 项中的查询生成器将允许我对列执行许多操作,但我看不到对行执行任何操作的选项。在线搜索和使用帮助并没有让我到任何地方。

【问题讨论】:

  • 这可能有效,但如果我使用它,我想以编程方式获取工作表的名称(只有 1 个)和数据列。如果源文件发生更改,我不想更改我的代码。关于这样做和使用你的建议有什么建议吗?
  • 我在那个答案中更多地沿着#2的思路思考。只要保持不变,就使用条件拆分来检查标题内容。但是,鉴于第一行始终是标题,下面的答案也有一个很好的解决方案。

标签: sql excel ssis


【解决方案1】:

这些解决方案都不起作用,因为合并的第一行会混淆 Excel 驱动程序。您将无法使用任何驱动程序功能(例如跳过第一行)来执行此操作。您需要运行一些脚本来打开 Excel 文件并手动删除该行。

这个网站有一些基本的示例脚本:

http://www.sqlservercentral.com/Forums/Topic1327014-1292-1.aspx

以下代码改编自 snsingh 在该站点编写的代码。

您显然希望使用连接管理器属性,而不是硬编码路径

需要在 SSIS 服务器上安装 Excel 才能工作 - 这是使用 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()

【讨论】:

    【解决方案2】:

    您不需要使用语法。 去控制流.. 拉入数据流任务。 添加 excel 文件源...添加连接管理器 用excel表。 打开您的连接管理器,然后选中显示的框。 列名在第一行。就是这样,然后添加您的目的地。

    【讨论】:

    • 你能告诉我如何使平面文件源连接到excel文件吗?平面文件源是文本文件,无法读取 excel 文件,除非有我不知道的技巧。
    • 我正在尝试这个,那个选项似乎告诉连接管理器是否查找标头。如果我取消选中该框,则不会显示列名。看起来像这样 - imgur.com/FFqVKQD 如果我选中该框,我会回到第一格。如果我打开文件并手动删除标题行,然后保存并关闭,当我取消选中该框时,我会得到我上传的图片中的内容。如果我选中该框,我会得到我想要的结果,但我必须手动修改文件,这是我试图避免的
    • 您可以将 Excel 数据源的 OpenRowset 属性(属性窗口,自定义属性部分中的 OpenRowset)设置为类似于 Sheet1$a2:m 的值,其中 a 是您的数据的第一列,m 是最后一列带有数据,2 是数据之前带有标题的行。数据应该从下一行开始。所以你可以设置这个,记住你是否想检查第一行的列名。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多