首页 文章

C#异常:外部表不是预期的格式 . 使用excel与oledb

提问于
浏览
2

如果有人能帮助我,我将非常感激 . 我正在尝试阅读具有不同表格的Excel(.xlsx,excel-2007)( Headers 不固定) . 在大多数情况下,下面的代码适用于我,但在某些情况下会抛出异常 .

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 .

什么可以更好或替代方式,以便它可以适用于所有情况?

1 回答

  • 1

    问题出在您的Excel工作表中,而不是代码中,请再次以.xls或.xlsx格式保存您的Excel工作表,然后使用相同的代码 . 它会工作 .

相关问题