string connStr = "";
string fileType = System.IO.Path.GetExtension(fileName);
if (fileType == ".xls")
{
connStr = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\"";
}
else
{
//connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\"";
connStr = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + filePath + ";" + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
}
string sql_F = "Select * FROM [{0}]";
OleDbConnection conn = null;
OleDbDataAdapter da = null;
DataTable dtSheetName = null;
DataSet ds = new DataSet();
conn = new OleDbConnection(connStr);
conn.Open();
string sheetName = "";
dtSheetName= conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
da = new OleDbDataAdapter();
for (int i = 0; i < dtSheetName.Rows.Count; i++)
{
sheetName = (string)dtSheetName.Rows[i]["TABLE_NAME"];
if (sheetName .Contains("$") && !sheetName .Replace("'", "").EndsWith("$"))
{
continue;
}
da.SelectCommand=new OleDbCommand(string.Format(sql_F,sheetName),conn);
da.Fill(ds, string.Format("ds{0}", i));
// DataSet dsItem = new DataSet();
// da.Fill(dsItem);
//ds.Tables.Add(dsItem.Tables[0].Copy());
读取Excel的时候,报错,提示是:外部表不是预期的格式,但是我如果打开了该excel文档后,又能正常读取了,这个是什么原因?该怎么解决?
估计还是excel格式的问题,调试的时候注意查看下后缀
excel格式没有问题啊,我先打开excel ,然后这个程序就能正常运行
@时光cc: 打开了excel,文件已经被独占了,你程序还能打开这个文件?
@2727551894: 对的,奇怪的地方就是这里,我不打开excel文件,程序跑到 conn.Open();那里就提示外部表不是预期的格式,打开该文件就没有这个提示。
是标准的Excel不?建议新建一个新的xls文件试试
可以考虑用npoi操作excel 一个很不错的第三方dll