首页 文章

asp.net 4.0 to excel 2010命令行应用程序无法正常工作 - 即使在安装驱动程序后也找不到驱动程序

提问于
浏览
0

我有100个excel文件 . 在每个文件中,我需要从其中一行插入SQL服务器 . 我需要这个自动化但最终不关心它是app.net或excel宏中的asp.net . 如果您有任何想法,请告诉我 .

Issue 我编写了asp.net 4.0命令行应用程序代码,然后收到错误:'Microsoft.Ace.OleDb.4.0'提供程序未在本地计算机上注册 .

Tried 安装Microsoft Access数据库引擎2010可再发行组件(http://www.microsoft.com/en-us/download/details.aspx?id=13255)后,我的盒子上没有更多的odbc驱动程序 . 像以前一样只是SQL驱动程序 .

我的盒子是x64,但我安装了x86办公室,所以我安装了x86的Microsoft Access数据库引擎2010 Redistributable .

我还检查了注册表,看不到任何驱动程序,但SQL服务器驱动程序 .

我读过几篇文章:

http://social.msdn.microsoft.com/Forums/en-US/csharpgeneral/thread/eeaa2d7b-fbfa-401b-8efe-9170f04059b0

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered in the local machine

虽然我将在下面包含我的代码,但在我有驱动程序之前,我认为它不会有所作为 -

public void ImportExcelFilesForPieChart()
{
    List<DataTable> listDataTables = new List<DataTable>();
    List<CompanyInfo> newlist = new List<CompanyInfo>();
    string sheetName = "Output";

    string[] fileList = Directory.GetFiles(dropBoxExcelLocation);
    foreach (string filename in fileList)
    {
        DataTable dt = new DataTable();
        string connectionString = string.Format("Provider=Microsoft.Ace.OleDb.4.0;data source={0};Extended Properties=Excel 8.0;HDR=No;IMEX=1", dropBoxExcelLocation + filename);
        using (OleDbConnection connection = new OleDbConnection(connectionString))
        {
            string strSQL = String.Format("SELECT 4A, 4B, 4C, 4D, 4E, 4F FROM [{0}$]", sheetName); //[A4:F4]";
            OleDbCommand objCmd = new OleDbCommand(strSQL, connection);
            connection.Open();

            using (OleDbDataAdapter da = new OleDbDataAdapter(strSQL, connection))
            {
                da.Fill(dt);
                listDataTables.Add(dt);
            } 
        }
    }
}

2 回答

  • 1

    您的连接字符串不正确 .

    提供者应该是 Microsoft.ACE.OLEDB.12.0

    我相信JET提供商是4.0 . 你事先尝试过吗?

  • 0

    我做了几件事,所以我不确定所有步骤是否都很重要 .

    我根据这篇kb文章http://support.microsoft.com/kb/209805注册了我的dll . 在注册之前,我确认注册表中没有条目 . 这让我找到了ISAM未找到的异常 .

    然后,感谢Dave R,我改变了我的连接字符串 . 有效的最终连接字符串是(注意扩展属性上的转义引号)

    string connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;data source={0};Extended Properties=\"Excel 12.0 Xml;IMEX=1\"", filename);
    

    我没有意识到文件扩展名(.xlsx)与连接字符串相关但在读完连接字符串信息后(http://www.connectionstrings.com/excel-2007),我修复了它 .

相关问题