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

我遇到一些格式问题,将数据导出到Excel 2007电子表格中。

我有一个模板文件的列格式正确,但是当数据导出时,它不会得到正确的格式(货币,短date等)

我在想我有2个选项

有excel autorunmacros。 (讨厌这个想法)

格式化数据,然后使其成为excel并仅使其成为string数据。 (我不喜欢这个想法,因为你会得到每个单元格旁边的令人讨厌的数据转换箭头)

我已经使用IMEX = 1技巧来解决数据导入问题,但是有一个特殊的技巧导出?

谢谢,

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

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

SSIS将把这些值放到电子表格中,并且假设这个types是上一行的types。 因此,数据行必须是电子表格中的最后一行,并且每列中的数据都必须是您想要的types。

你会认为有这样做的更好的方法。 没有。 对不起:-)

所以在格式化和咬牙切齿之后,我终于find了最终的解决办法。 看来你仍然需要顶部的隐藏行来使用excel。 这决定了数据是格式化为数字还是string。 如果你想做更多的格式化,那么你需要将一个脚本任务添加到你的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() 

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

我们使用“TEST”作为sp​​readhseet上的标签名称。

1.)将模板文件复制到一个新的文件。

2.)创build一个SQL任务,将连接types设置为Excel,并将连接string用于新创build的Excel文件。 使用下面的代码作为示例:

滴表TEST

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

创build表TEST

Column1 Integer, Column2 DATETIME, Column3 NVARCHAR(50), Column4 MONEY)

你现在可以开始写数据。 我遇到的一些事情是我不得不用'逗号'来代替逗号。 另外,我尝试在一个SQL任务中同时使用DROP和CREATE命令,但是这对我没用,所以我用了两个。