一般阅读xls文件,不pipeexcel版本

我正在实施一个解决scheme,通过关注这个post和这个post来导入xls文件。 下面的解决scheme确实适用于excel文件:

 public XLSReader(string path, string worksheet = "Sheet1") { Dictionary<string, string> props = new Dictionary<string, string>(); props["Provider"] = "Microsoft.ACE.OLEDB.12.0"; props["Data Source"] = path; props["Extended Properties"] = "Excel 12.0"; StringBuilder sb = new StringBuilder(); foreach (KeyValuePair<string, string> prop in props) { sb.Append(prop.Key); sb.Append('='); sb.Append(prop.Value); sb.Append(';'); } string properties = sb.ToString(); using (OleDbConnection conn = new OleDbConnection(properties)) { conn.Open(); ds = new DataSet(); //string columns = String.Join(",", columnNames.ToArray()); using (OleDbDataAdapter da = new OleDbDataAdapter( "SELECT *" + /*columns +*/ " FROM [" + worksheet + "$]", conn)) { da.Fill(ds); dt = new DataTable[ds.Tables.Count]; ds.Tables.CopyTo(dt, 0); } Console.WriteLine(ds.Tables.Count + " Tables"); } } 

它是一个类的构造函数,这里使用的variables的总和在类中定义,只在这里使用,所以遗憾的是任何缺less的variables声明。

问题是,对于一些excel文件不起作用(在这篇文章的末尾增加了一个这样的例子的链接),给我一个“外部表格不是预期格式”的提示。 如果我理解正确,它取决于Excel的版本,并受到props的string和给OleDbConnetion属性的影响。

  • 我是否正确理解或在代码中是否存在其他问题?
  • 我如何改变这一般加载任何Excel文件?

链接到示例有问题的xls文件