首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Excel 2016中使用OLEDB上传文件

在Excel 2016中使用OLEDB上传文件
EN

Stack Overflow用户
提问于 2016-06-09 22:01:44
回答 3查看 18.2K关注 0票数 1

我的应用程序基本上接受一个excel文件,并将数据上传到我的数据库,该数据库使用以下代码与Excel2010完美配合。然而,我们将系统更新到Excel 2016,但由于某种原因它停止了工作,请您帮助我应该对我的代码进行哪些更新。

这是要连接的当前代码:

代码语言:javascript
复制
 openFileDialog1.ShowDialog();
            var fileName = string.Format(openFileDialog1.FileName);

            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(fileName, 1, false, 5, "", "", false, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "", true, false, null, false);

var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties=Excel 12.0;", fileName);
EN

回答 3

Stack Overflow用户

发布于 2016-06-21 04:43:53

我没有Excel 2016,所以我不能测试它,但这应该可以工作。

代码语言:javascript
复制
private DataTable ReadExcelFile(string sheetName, string path)
{
    using (OleDbConnection conn = new OleDbConnection())
    {
        DataTable dt = new DataTable();
        string Import_FileName = path;
        string fileExtension = Path.GetExtension(Import_FileName);
        if (fileExtension == ".xls")
        {
            conn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 8.0;HDR=YES;'";
        }
        if (fileExtension == ".xlsx")
        {
            conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'";
        }
        using (OleDbCommand comm = new OleDbCommand())
        {
            comm.CommandText = "Select * from [" + sheetName + "$]";
            comm.Connection = conn;
            using (OleDbDataAdapter da = new OleDbDataAdapter())
            {
                da.SelectCommand = comm;
                da.Fill(dt);
                return dt;
            }

        }
    }
}

另外,可以考虑这样做。

代码语言:javascript
复制
OleDb.OleDbConnectionStringBuilder Builder = new OleDb.OleDbConnectionStringBuilder();
Builder.DataSource = "test.xlsx";
Builder.Provider = "Microsoft.ACE.OLEDB.12.0";
Builder.Add("Extended Properties", "Excel 12.0;HDR=Yes;IMEX=1");
Console.WriteLine(Builder.ConnectionString);

最后,看看这个关于Excel connection strings的站点。

票数 0
EN

Stack Overflow用户

发布于 2016-06-24 00:31:10

我在一个相关的问题中回答了这个问题,这是由于升级到Office16:oledb connection string for excel 2016 in c#

票数 0
EN

Stack Overflow用户

发布于 2018-09-01 22:25:28

这可能是因为安装损坏或更改了已注册的ACE驱动程序的现有版本。可能需要重新安装ACE才能使其再次工作。注意:如果版本发生更改,则可能需要更新连接字符串

您应该能够通过注册表查看机器上可用的版本:

代码语言:javascript
复制
HKCR\Microsoft.ACE.OLEDB.XX.0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37728147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档