【问题标题】:SQL Server 2005 -> Excel export doesn't keep data types?SQL Server 2005 -> Excel 导出不保留数据类型?
【发布时间】:2011-03-04 13:41:27
【问题描述】:

尝试(并且基本上成功)将查询结果从 SQL Server 导出到 Excel,如下所示:

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0',
    'Excel 8.0;Database=c:\exported excel files\exported_data.xls;',
    'SELECT * FROM [Query$]') SELECT dbo.blabbityblah FROM dbo.the_table

有效!有点。它确实将数据导出到 excel 文件中,但它会将其全部作为文本放入其中,即使其中一些列是日期时间并且大多数列是数字。它们都没有在查询本身中进行转换()编辑。在运行查询之前,我尝试在实际 Excel 文件中预先格式化单元格,但它忽略了现有的格式并再次将其全部作为文本吐出。

一定有办法做到这一点,对吧?

【问题讨论】:

    标签: sql sql-server sql-server-2005 excel


    【解决方案1】:

    excel 没有数据类型,它的基于文本和预格式化不起作用,因为它替换了现有文件。如果你想要数据类型试试 MS Access。

    【讨论】:

    • +1 - Excel 具有显示格式,其中 是一种数据类型。您仍然可以在日期字段或数字字段中使用字符串数据。
    • 是的,我知道 Excel 没有正确的数据类型,我的意思是我希望它根据导出的数据类型格式化单元格,或者至少根据格式失败我放进去了。听起来好像没有办法。还是谢谢。
    【解决方案2】:

    研究使用 schema.ini 文件来定义 csv 或 txt 中的数据类型。当您在 excel 中打开任何一个时,您都可以实现您想要的效果

    [sample_out.csv]
    Format=CSVDelimited
    DecimalSymbol=.
    Col1=DATE datetime
    Col2=FName Text
    

    【讨论】:

      【解决方案3】:

      根据您的需要,您可能希望查看的另一种方法是使用导入和导出向导。您可以自定义数据查询并在向导中指定数据类型。如果您使用的是 Express 以外的 SKU,您可以立即运行它或保存生成的 SSIS 包以供进一步操作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多