我有一个第三方工具,可生成一个XML表格(* .xls的)。我还有一个程序,读取这个spreasheet并处理它。生成的XML电子表格的内容与5列一个表,我的程序运行在他们选择的查询。我米面临的一个问题,同时打开,以将所生成的电子表格的连接。它说:“{”外部表不是预期的格式。“}”。我Connectin字符串为 “供应商= Microsoft.Jet.OLEDB.4.0;数据源=” + excelFileName + “;扩展属性= \” Excel中8.0; HDR = YES; \ “”;我是否需要改变任何东西到这个字符串? 我试图用一个数据集并调用dataSet.ReadXml(excelFileName);但该数据集犯规包含我的表。关于如何读取XML表格的任何输入?

感谢您的时间, CS

有帮助吗?

解决方案

看起来像你的连接字符串设定为老年人二进制格式的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。

其他提示

               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查询表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top