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

Добавить попробовать/поймать блок - Example

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

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

Вы можете использовать OleDbSchemaTable метод для получения названия листов в файле Excel. Затем вы можете проверить, чтобы увидеть, если имя листа существует следующим образом: (я преобразовал это из функции 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 

 Смежные вопросы

  • Нет связанных вопросов^_^