SSIS 自动从数据库生成 Excel 文件

SSIS Automate Excel File Generation From Database

我在执行包时遇到问题。

我做了什么:

我创建了一个模板,其中只有 header,并且我有一个 table“产品”。我尝试使用 excel 模板将数据从“Product”table 插入 excel sheet。 我使用了 3 个变量。

流: 文件系统任务 => 数据流任务 => OLE DB 源 => Excel 目标。

错误:

[Excel 目标 [2]] 错误:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E37。

[Excel 目标 [2]] 错误:打开“result$”的行集失败。检查数据库中是否存在 object。

[SSIS.Pipeline] 错误:“Excel 目的地”验证失败并返回验证状态“VS_ISBROKEN”。

谢谢

这是奇迹。我刚刚解决了这个错误...

您不需要创建模板(虚拟)excel,您只需要 3 个组件。

1.根据this教程创建Execute SQL Task

设置除 SQLStatement 以外的所有内容时,我建议创建 empty excel 并连接到 OLE DB 源(您的服务器 table)。当您添加 excel destination 并与 excel destination manager 连接时,您将看到 VS 询问您是否要像此查询一样创建 table(但具有不同的数据类型)的问题:

CREATE TABLE `Result` (
    `ColName1` NVARCHAR(255),
    `ColName2` NVARCHAR(255),
    `ColName3` NVARCHAR(255),
    `ColName4` NVARCHAR(255)
)

不知道我解释的对不对,教程里有上一步

2。执行这个任务

3。添加 Data Flow TaskOLE DB SourceExcel Destination

使用 OLE DB select 您需要的一切都来自您的 Product table

Excel DestinationExcel Connection Manager 连接起来,就像在 Execute SQL Task 中一样。来自下拉 select Result sheet name.

When you finish this delete this empty excel

4。创建一个包含路径和 excel 文件名

的变量

5.根据第一步的教程,单击 Excel Connection Manager -> Properties -> Expressions -> ...(右侧)-> ExcelFilePath(从下拉列表中)。在第二列写@[User::YourVariableName]

关键一步

6.在控制流中,单击 Data Flow Task 并在 DelayValidation 的属性中设置 True



如果您有任何问题,请在下面的评论中写信给我。