如何读取 xml 电子表格

发布于 2024-07-21 08:27:58 字数 409 浏览 7 评论 0原文

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

谢谢你的时间, CS

I have a 3rd Party tool that generates an xml spreadsheet (*.xls). I have another program that reads this spreasheet and processes it. The content of the generated xml spreadsheet is a table with 5 columns and my program runs select queries on them. I m facing an issue while opening a connection to the generated spreadsheet. It says "{"External table is not in the expected format."}". My Connectin string is "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFileName + ";Extended Properties=\"Excel 8.0;HDR=YES;\""; Do i need to change anything to this string ?
I tried using a dataset and calling dataSet.ReadXml(excelFileName); But the dataset doesnt contain my table. Any inputs on how to read an xml spreadsheet ?

Thanks for your time,
CS

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

荒芜了季节 2024-07-28 08:27:58

看起来您的连接字符串是为较旧的二进制格式 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。

Looks like your connection string is set for older binary format Excel files. You want a different connection string for XML. If you are talking about the new Excel 2007 xml files, then you need this connection string:

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

If you're talking about the older xml format that came in Excel 2003, then I'm not sure there is a connection string. In which case, your best bet is to open in Excel and then save as an xls file, and use the connection string you were originally using.

By the way, ConnectionStrings.com is a great place to find any old connection string that you might need to access all different kinds of data.

Also note, as others have noted, that if it is an xml file, it shouldn't have an xls file extension, it should be either .xml or .xlsx.

国产ˉ祖宗 2024-07-28 08:27:58
               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 查询工作表。

               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();

            }

You can convert the Excel SpreadSheet to 2007 Format and then use LinQ to query the sheets using any open source provider or OleDB.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文