【问题标题】:Provider for Microsoft Excel version 2.0Microsoft Excel 2.0 版提供程序
【发布时间】:2012-08-26 03:20:22
【问题描述】:

在 FoxPro 中有这样的命令:

“复制到[路径] [条件] xls”将数据从 FoxPro DBF 导出到 Microsoft Excel。在这种情况下,excel 版本是 2.0。

问题:我想用 C# 读取这个导出的 excel 文件。所以我尝试使用这个提供程序:

Provider=Microsoft.ACE.OLEDB.12.0

有了这个属性:

Extended Properties=Excel 8.0;HDR=Yes;IMEX=1;

Extended Properties=Excel 12.0;HDR=Yes;IMEX=1;

但他们没有工作(我发现了这个错误):

External table is not in the expected format.

有没有办法在 C# 中读取 Microsoft Excel 2.0 文件?我需要提供程序来读取它,例如作为 DataTable 读取,我不使用 VSTO 读取它!

PS:Microsoft Excel 97(及更高版本)很容易正确显示此导出文件。我不知道为什么我无法使用 C# 和 Microsoft Excel Providers for C# 读取它们?

【问题讨论】:

    标签: c# excel


    【解决方案1】:

    Excel 2.0 是一种相当古老的文件格式,但您应该能够使用这样的通用 ODBC 连接字符串:

    DRIVER={Microsoft Excel Driver (*.xls)};IMEX=1;MaxScanRows=16;DBQ=C:\MyExcelFile.xls;
    
    // then use a query like
    SELECT * FROM [Sheet1$]
    

    如果这不起作用,您可能会使用像 Excel Data Reader found on CodePlex 这样的托管库获得更大的成功。

    可能会发布代码副本和 Excel 文件的屏幕截图,因为有时可能难以排除故障。

    【讨论】:

    • +1,虽然“相当老”是轻描淡写。我认为大约是在盖茨发表臭名昭著的“640K 绰绰有余”声明的时候。 ;-)
    • 谢谢老兄,它真的很棒(Excel 数据阅读器)。但它只能读取 Excel 97 及更高版本。不幸的是它无法读取 Excel 2.0 文件。它显示了这样的内部异常:"错误:文件签名无效。”
    【解决方案2】:

    是否可以将您的 Foxpro 代码更改为:

    COPY TO [yourpath\yourfile.csv] TYPE DELIMITED
    

    COPY TO [yourpath\yourfile.xls] TYPE XL5
    

    您应该能够读取这些文件类型。

    【讨论】:

    • 谢谢,我们有很多程序可以使用简单的“复制到”命令生成许多 Excel 报告,我们无法更改所有这些。所以我需要一些算法来用 C# 读取这些 Excel 文件.
    猜你喜欢
    • 2014-06-26
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 2020-06-13
    • 2018-02-02
    相关资源
    最近更新 更多