我在将数据导出到excel 2007电子表格时遇到了一些格式问题。
我有一个模板文件,其列格式正确,但是当导出数据时,它没有获得正确的格式(货币,短日期等)
我想我有两个选择
excel自动运行宏。 (讨厌那个想法)
在数据到达excel之前格式化数据并仅使其成为字符串数据。 (我不喜欢这个想法,因为你要在每个单元格旁边获得那些恼人的数据转换箭头)
我之前使用过IMEX = 1技巧来解决数据导入问题,但出口是否有特殊技巧?
感谢,
答案 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任务中创建命令,但它对我不起作用,所以我使用了两个。