如果有人能帮助我,我将非常感激。我正在尝试阅读具有不同表格的Excel(.xlsx,excel-2007)(标题不固定)。在大多数情况下,下面的代码适用于我,但在某些情况下会抛出异常。
public static bool ReadExcelData(string ExcelFilePath, string SheetName, out DataTable dt)
{
dt = new DataTable();
bool isXlsx = ExcelFilePath.Substring(ExcelFilePath.LastIndexOf('.') + 1).ToLower() == "xlsx";
string excelConnectString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + ExcelFilePath + ";Extended Properties=\"Excel 8.0;HDR=yes;\"";
if (isXlsx)
excelConnectString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + ExcelFilePath + ";Extended Properties=\"Excel 12.0\";";
OleDbConnection objConn = null;
try
{
objConn = new OleDbConnection(excelConnectString);
if (objConn.State == ConnectionState.Closed)
{
objConn.Open();
dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
}
}
catch (Exception ex)
{
dt = null;
return false;
}
try
{
dt.Clear();
string query = "select * from ["+SheetName+"$] ";
OleDbCommand objCmd = new OleDbCommand(query, objConn);
OleDbDataAdapter objDatAdap = new OleDbDataAdapter();
objDatAdap.SelectCommand = objCmd;
objDatAdap.Fill(dt);
Boolean result = (dt.Rows.Count >= 1) ? true : false;
objConn.Close();
return true;
}
catch (Exception ex)
{
dt = null;
return false;
}
}
如果在例外的情况下,我在进入代码之前手动(双击excel)打开这个excel(它正在给出错误),它不会产生任何异常,而是平滑地读取excel。 / p>
什么可以更好或替代方式,以便它可以适用于所有情况?
答案 0 :(得分:1)
问题出在您的Excel工作表中,而不是代码中,请再次以.xls或.xlsx格式保存您的Excel工作表,然后使用相同的代码。它会起作用。