C# oledb驱动去取Excel报错

C# oledb驱动去取Excel报错

打开OleDbConnection时候会报错,未处理OleDbException,无效参数
代码如下

img

用引号括起 Extended Properties属性值

 Extended Properties='Excel 8.0';

推荐使用NPOI 操作Excel

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 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文件。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^