C# oledb驱动去取Excel报错
打开OleDbConnection时候会报错,未处理OleDbException,无效参数
代码如下
用引号括起 Extended Properties属性值
Extended Properties='Excel 8.0';
推荐使用NPOI 操作Excel
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!【以下回答由 GPT 生成】
问题的根源是使用了无效的连接字符串,连接字符串中的Data Source参数指向了一个空的文件名。
解决方法是根据实际需要选择合适的文件名,然后将其赋给sExcelName变量。
此外,还需要确保已经安装了适当的Microsoft Access Database Engine驱动程序,这样才能正确地打开和读取Excel文件。
以下是修改后的代码示例:
protected void Button1_Click(object sender, EventArgs e)
{
OpenFileDialog pFileDialog = new OpenFileDialog();
pFileDialog.Filter = "Excel Files|*.xls;*.xlsx";
if (pFileDialog.ShowDialog() == DialogResult.OK)
{
string sExcelName = pFileDialog.FileName;
string sExcelCon = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='{0}';Extended Properties='Excel 8.0';", sExcelName);
DataSet ds = new DataSet();
List<string> sList = new List<string>();
using (OleDbConnection pOldCon = new OleDbConnection(sExcelCon))
{
pOldCon.Open();
DataTable dt = pOldCon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
for (int i = 0; i < dt.Rows.Count; i++)
{
sList.Add(dt.Rows[i][2].ToString());
}
OleDbDataAdapter pOledbCnn = new OleDbDataAdapter("SELECT * FROM [" + sList[0] + "]", pOldCon);
pOledbCnn.Fill(ds);
}
this.gridControl1.DataSource = ds.Tables[0];
}
}
请注意,代码中使用了using
语句来确保OleDbConnection被正确释放,同时也修复了对话框的过滤器以限制只能选择Excel文件。
【相关推荐】