1

我正在使用 ACE OLE DB 提供程序和执行 SQL 任务来创建 Excel 文件。我使用的连接字符串是这样的:

Data Source=C:\MyFolder\MyFile.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties="EXCEL 12.0 XML;HDR=YES";

SQL命令是这个:

CREATE TABLE [Query] (
[ProductAssemblyID] Numeric,
[ComponentID] Numeric,
[ComponentDesc] String,
[TotalQuantity] Numeric,
[StandardCost] Currency,
[ListPrice] Currency,
[BOMLevel] Numeric,
[RecursionLevel] Numeric)

然后我使用 Excel 目标来填充文件。当我打开结果文件时,所有列都是文本列,数字存储为文本。我在哪里做错了?

谢谢你。

4

2 回答 2

0

以下是我通常如何处理像你这样的任务:

  1. 创建包含所需列的 Excel 文件
  2. Excel 数据连接添加到新文件
  3. 创建数据流
  4. 添加OLE DB 源SELECT ... FROM ...
  5. 添加Excel 目标并设置为 Excel 连接
  6. 根据需要映射列
  7. Excel Destination的Advanced Editor中,设置列数据类型
于 2013-07-18T21:46:34.250 回答
0

这几天我一直在为此苦苦挣扎。这是我发现的:使用默认的扩展属性(EXCEL 12.0 XML;HDR=YES),这些提供程序都没有工作(即它们创建文本字段而不是数字、日期等):

  • Microsoft.ACE.OLEDB.12.0 (Microsoft Excel 2007-2010)
  • Microsoft.ACE.OLEDB.15.0 (Microsoft Excel 2013)
  • Microsoft.ACE.OLEDB.16.0 (Microsoft Excel 2016)

正如@lucazav 所提到的,选择较旧的 Microsoft.Jet.OLEDB.4.0 提供程序(如果有的话)确实有效。这就是您选择“Excel 97-2003”时使用的内容。但是,如果您需要部署到生产机器或没有旧的 JET 驱动程序,您可能会发现它不再可用,在 64 位机器上无法运行等。

但是,您不需要安装较旧的 JET 驱动程序。只需更改扩展属性,我就能使 ACE.OLEDB.12.0 工作。

改变

Excel 12.0 XML;HDR=YES

Excel 8.0;HDR=YES

此外,您需要将文件扩展名设置为 .xls 而不是 .xlsx。否则,当您使用 Excel 打开文件时,它会抱怨扩展名与实际文件类型不匹配。

HDR 是可选的,但我需要标题,所以我使用它。我不认为“Excel”的大小写很重要。

我通过Microsoft Access Database Engine 2010 Redistributable的 Microsoft 下载页面上的安装说明(这是您获得 Microsoft.ACE.OLEDB.12.0 提供程序的方式)了解了此解决方案。

在此处输入图像描述

“Excel 8.0”也是使用 JET 时的默认扩展属性。

于 2021-10-13T19:45:21.590 回答