1
我adapated代码我发现here到XLS转换成XML像这样:如何在不知道XLS文件的工作表名称的情况下安全地将XLS工作表转换为XML文件?
try
{
System.Data.OleDb.OleDbConnection MyConnection;
System.Data.DataSet ds;
System.Data.OleDb.OleDbDataAdapter MyCommand;
String fullFilePath = @"C:\worldSeries2014\baltimoreOrioles.xls";
MyConnection = new
System.Data.OleDb.OleDbConnection(String.Format("provider=Microsoft.Jet.OLEDB.4.0;Data
Source='{0}';Extended Properties=Excel 8.0;", fullFilePath));
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet0$]",
MyConnection);
MyCommand.TableMappings.Add("Table", "Product"); // I don't know what this does
ds = new System.Data.DataSet();
MyCommand.Fill(ds);
MyConnection.Close();
ds.WriteXml(@"C:\MiscellaneousJones\os.xml");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
这工作(XML文件被创建,以从上xls文件第一片材中的数据),只要。装载XLS文件中有一个名为“Sheet0”
如果我用这个行,而不是(这是我开始与示例代码有)片:工作表Sheet1
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
...我得到的,“ $不是有效的名字,请确保它不包括无效字符或标点,它不是太长“
美元符号显然是必要的,因为如果我用这个:
MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet0]", MyConnection);
...我得到的,” 的Microsoft Jet数据库引擎找不到对象'Sheet0'“
那么,我可以依赖”Sheet0“始终是要转换的工作表的名称吗?我相当肯定我不能,所以我怎么能每次使用“sheet 0”(第一张),而不管它的名字是什么?或者,有没有办法以编程方式确定工作表名称并使用它?
'如果我用这条线代替......'这看起来和你第一个例子中的一样。我认为这应该是'Sheet1 $'在那条线上? – 2014-10-06 17:19:49
如果您想要检索Excel文件中的图纸名称,此[链接](http://www.codeproject.com/Articles/8096/C-Retrieve-Excel-Workbook-Sheet-Names)可能会有所帮助。 [This](http://support2.microsoft.com/default.aspx?scid=kb;en-us;Q257819)另请参阅“从Excel中检索数据源结构(元数据)”部分 – 2014-10-06 17:27:57
是,错字(固定);感谢热门链接。 – 2014-10-06 17:29:58