使用 C# 从 Excel 导入数据
本文关键字:导入 数据 Excel 使用 | 更新日期: 2023-09-27 18:33:13
我是C#平台的新手。我已经制作了用于导入Excel数据的应用程序,其中显示了两个文本字段。第一个采用Excel文件的路径,第二个采用工作表名称,当我按下加载按钮时,它从Excel导入数据。
但是当我输入无效的工作表名称时出现问题,然后应用程序崩溃并且由于system.Data.OleDb.OleDbException
.我唯一想在输入无效的工作表名称时显示消息"请输入正确的工作表编号"。
这是代码:
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
{
using (var myObject = new MyClass())
{
// something here...
}
catch(Exception ex)
{
// Handle exception
}
可以使用 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