首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SSIS 2008、Excel 2007正确设置excel列的格式(导出,而不是导入)

SSIS 2008、Excel 2007正确设置excel列的格式(导出,而不是导入)
EN

Stack Overflow用户
提问于 2009-12-24 02:38:52
回答 3查看 18.3K关注 0票数 4

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

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

我想我有两个选择

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

在数据进入excel之前对其进行格式化,并将其设置为仅字符串数据。(我也不喜欢这个想法,因为你会在每个单元格旁边看到那些恼人的数据转换箭头)

我以前使用过IMEX=1技巧来绕过数据导入问题,但是导出有什么特殊的技巧吗?

谢谢,

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-30 03:14:50

因此,经过多次格式化和咬牙切齿之后,我得出了最终的解决方案。看起来您仍然需要隐藏在顶部的行才能使用excel。它确定数据的格式是数字格式还是字符串格式。如果您想进行更多的格式化,那么您需要在SSIS包中添加一个脚本任务。在处理结束时,我将以下几行代码放入.net脚本任务中,然后它就把它修复好了。

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

代码语言:javascript
复制
        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()
票数 1
EN

Stack Overflow用户

发布于 2009-12-24 05:25:48

我花了很长时间试图弄清楚这一点。

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

SSIS会将值放入电子表格中,并假定类型为紧靠上一行的类型。因此,数据行需要是电子表格中的最后一行,并且每列中的数据都需要是您想要的类型。

你可能会认为有更好的方法来做这件事。没有。对不起:-)

票数 6
EN

Stack Overflow用户

发布于 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命令,但对我不起作用,所以我使用了两个。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1954582

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档