0

我有一个生成 xml 电子表格 (*.xls) 的第 3 方工具。我有另一个程序可以读取此电子表格并对其进行处理。生成的 xml 电子表格的内容是一个有 5 列的表,我的程序对它们运行选择查询。打开与生成的电子表格的连接时遇到问题。它说“{”外部表不是预期的格式。“}”。我的连接字符串是 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFileName + ";Extended Properties=\"Excel 8.0;HDR=YES;\""; 我需要对此字符串进行任何更改吗?我尝试使用数据集并调用 dataSet.ReadXml(excelFileName); 但数据集不包含我的表。关于如何读取 xml 电子表格的任何输入?

谢谢你的时间,CS

4

2 回答 2

1

看起来您的连接字符串是为较旧的二进制格式 Excel 文件设置的。您需要一个不同的 XML 连接字符串。如果您正在谈论新的 Excel 2007 xml 文件,那么您需要这个连接字符串

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES";

如果您谈论的是 Excel 2003 中的旧 xml 格式,那么我不确定是否存在连接字符串。在这种情况下,最好的办法是在 Excel 中打开,然后另存为 xls 文件,并使用您最初使用的连接字符串。

顺便说一句,ConnectionStrings.com是查找访问所有不同类型数据可能需要的任何旧连接字符串的好地方。

另请注意,正如其他人所指出的,如果它是一个 xml 文件,它不应该有 xls 文件扩展名,它应该是 .xml 或 .xlsx。

于 2009-05-21T08:56:26.610 回答
0
               Excel.Workbook wb1;

            Excel.Application wb2 = new Excel.Application();

            wb2.DisplayAlerts = false;
                           wb1 = (Excel.Workbook)wb2.Workbooks._Open(filename);

            if (wb1.FileFormat == Excel.XlFileFormat.xlXMLSpreadsheet)
            {
                                    wb1.SaveAs(filename, Excel.XlFileFormat.xlExcel12, Type.Missing, Type.Missing,
                        false, false, Excel.XlSaveAsAccessMode.xlNoChange,
                       Excel.XlSaveConflictResolution.xlOtherSessionChanges, false);
            }
            else
            {
                wb2.Workbooks.Close();

            }

您可以将 Excel 电子表格转换为 2007 格式,然后使用 LinQ 使用任何开源提供程序或 OleDB 查询工作表。

于 2010-07-09T15:15:08.947 回答