2014-12-05 218 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