我有第三方工具,可生成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
答案 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查询工作表。