从excel导入数据(c#)
问题描述:
我是新来的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);
异常请帮我...
答
添加try/catch块 - Example
try
{
using (var myObject = new MyClass())
{
// something here...
}
catch(Exception ex)
{
// Handle exception
}
答
可以使用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