SSIS 2008,Excel 2007正确格式化excel列(导出,不导入)

时间:2009-12-23 18:38:52

标签: excel ssis

我在将数据导出到excel 2007电子表格时遇到了一些格式问题。

我有一个模板文件,其列格式正确,但是当导出数据时,它没有获得正确的格式(货币,短日期等)

我想我有两个选择

excel自动运行宏。 (讨厌那个想法)

在数据到达excel之前格式化数据并仅使其成为字符串数据。 (我不喜欢这个想法,因为你要在每个单元格旁边获得那些恼人的数据转换箭头)

我之前使用过IMEX = 1技巧来解决数据导入问题,但出口是否有特殊技巧?

感谢,

3 个答案:

答案 0 :(得分:6)

我花了很多时间试图把它弄清楚。

您需要做的是在要导出的电子表格中有一行隐藏的数据。

SSIS会将值放入电子表格中,并假设该类型是紧邻上方的行的类型。因此,数据行必须是电子表格中的最后一行,并且每列中的数据必须是您希望的类型。

您会认为有更好的方法可以做到这一点。没有。对不起: - )

答案 1 :(得分:1)

因此,经过大量的格式化和咬牙切齿之后,我找到了最终的解决方案。您似乎仍需要顶部的隐藏行以供excel使用。这决定了数据是格式化为数字还是字符串。如果要进行更多格式化,则需要将脚本任务添加到SSIS包中。我刚刚在处理结束时将以下几行放入.net脚本任务中,并将其修正了。

请不要在DailyWTF质量代码上呕吐; - )

        Dim wb As Microsoft.Office.Interop.Excel.Workbook

    excel = New Microsoft.Office.Interop.Excel.Application

    wb = excel.Workbooks.Open("c:\reports\Report.xlsx")
    'This is the long ass Accounting Format'
    wb.Worksheets("Sheet1").Columns("E:E").NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)"
    wb.Save()
    wb.Close()
    excel.Quit()

答案 2 :(得分:0)

解决方案非常简单,它会让你尖叫。只需使用SSIS中SQL任务框中的CREATE TABLE SQL命令即可。将连接类型设置为EXCEL。以下是步骤:

让我们使用'TEST'作为spreadhseet上的标签名称。

1。)将模板文件复制到新文件。

2.。)创建SQL任务,将连接类型设置为Excel,并使用连接字符串到新创建的Excel文件。使用以下代码作为示例:

DROP TABLE TEST

GO

3。)创建另一个SQL任务(使用相同的设置)并使用以下代码:

CREATE TABLE TEST

Column1整数,     Column2 DATETIME,     Column3 NVARCHAR(50),     Column4钱 )

GO

您现在可以开始编写数据了。我遇到的一些事情是我必须使用`字符而不是'来表示逗号。此外,我尝试使用DROP& amp;在一个SQL任务中创建命令,但它对我不起作用,所以我使用了两个。