如何阅读xml电子表格

时间:2009-05-21 08:19:07

标签: excel connection-string jet xml-spreadsheet

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

谢谢你的时间, CS

2 个答案:

答案 0 :(得分:1)

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

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。

答案 1 :(得分: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 SpreadSheet转换为2007格式,然后使用LinQ使用任何开源提供程序或OleDB查询工作表。