在将数据导出到excel2007电子表格时,我遇到了一些格式问题。
我有一个模板文件,它的列格式正确,但在导出数据时,它没有获得正确的格式(货币、短日期等)。
我想我有两个选择
让excel自动运行宏。(讨厌这个想法)
在数据进入excel之前对其进行格式化,并将其设置为仅字符串数据。(我也不喜欢这个想法,因为你会在每个单元格旁边看到那些恼人的数据转换箭头)
我以前使用过IMEX=1技巧来绕过数据导入问题,但是导出有什么特殊的技巧吗?
谢谢,
发布于 2009-12-30 03:14:50
因此,经过多次格式化和咬牙切齿之后,我得出了最终的解决方案。看起来您仍然需要隐藏在顶部的行才能使用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()发布于 2009-12-24 05:25:48
我花了很长时间试图弄清楚这一点。
您需要做的是在要导出到的电子表格中隐藏数据行。
SSIS会将值放入电子表格中,并假定类型为紧靠上一行的类型。因此,数据行需要是电子表格中的最后一行,并且每列中的数据都需要是您想要的类型。
你可能会认为有更好的方法来做这件事。没有。对不起:-)
发布于 2015-02-21 03:23:40
解决方案很简单,它会让你尖叫。只需在SSIS的SQL任务框中使用CREATE TABLE SQL命令即可。将连接类型设置为EXCEL。以下是步骤:
让我们使用'TEST‘作为spreadhseet上的选项卡名。
1.)将模板文件复制到新文件。
2.)创建一个SQL任务,将连接类型设置为Excel,然后使用新创建的Excel文件的连接字符串。使用以下代码作为示例:
DROP表TEST
去
3.)创建另一个SQL任务(使用相同的设置)并使用以下代码:
创建表TEST
( Column1整数,Column2 DATETIME,Column3 NVARCHAR(50),Column4 MONEY )
去
您现在可以开始写入数据了。我遇到的一些问题是,我必须使用‘字符’而不是‘逗号’。另外,我尝试在一个SQL任务中同时使用DROP和CREATE命令,但对我不起作用,所以我使用了两个。
https://stackoverflow.com/questions/1954582
复制相似问题