2014-12-05 142 views
0

我是新来的c#平台我做了导入excel数据的应用程序,其中我已经展示了两个文本字段第一次使用excel文件的路径第二次使用表名和当我按下载入按钮,然后它从Excel导入数据。但是当我输入了无效的表名,然后应用程序崩溃并且因为system.Data.OleDb.OleDbException而出现问题时。我想显示的消息的唯一的事'请输入上输入无效的表名称 这里正确的片数”是代码从excel导入数据(c#)

string PathConn = "Provider =Microsoft.Jet.OLEDB.4.0;Data Source=" + opentextfeild.Text + ";Extended Properties=\"Excel 8.0;HDR=Yes;\";"; 
OleDbConnection conn = new OleDbConnection(PathConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter("Select email from [" + loadtextfeild.Text + "$] where email like '%@%'  ", conn); 
DataTable dt = new DataTable(); 
myDataAdapter.Fill(dt); 
displayviewgrid.DataSource = dt; 

当我进入无效的表名称,然后它会创建上线myDataAdapter.Fill(dt);异常请帮我...

回答

1

添加try/catch块 - Example

try 
{ 
using (var myObject = new MyClass()) 
{ 
    // something here... 

} 
catch(Exception ex) 
{ 
    // Handle exception 
} 
1

可以使用OleDbSchemaTable方法在Excel文件检索表名称。然后,可以检查以查看是否在片材名称存在如下:(I转换这从VB函数,其也包括在壳体的转化是不正确的)

private static bool IsValidExcelWorksheetName(OleDbConnection m_connexcel, string Filepath, string SheetName) 
{ 
    try { 
     DataTable ExcelSheets = m_connexcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { 
      null, 
      null, 
      null, 
      "TABLE" 
     }); 
     foreach (DataRow Row in ExcelSheets.Rows) { 
      if (Row.Item("TABLE_NAME") == SheetName) 
       return true; 
     } 
     return false; 
    } catch (Exception ex) { 
     throw new Exception(ex.Message); 
    } 
} 

VB

Private Shared Function IsValidExcelWorksheetName(ByVal m_connexcel As OleDbConnection, _ 
                ByVal Filepath As String, _ 
                ByVal SheetName As String) As Boolean 
    Try 
     Dim ExcelSheets As DataTable = m_connexcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, New Object() {Nothing, Nothing, Nothing, "TABLE"}) 
     For Each Row As DataRow In ExcelSheets.Rows 
      If Row.Item("TABLE_NAME") = SheetName Then Return True 
     Next 
     Return False 
    Catch ex As Exception 
     Throw New Exception(ex.Message) 
    End Try 
End Function