标签: oledbconnection

从Excel读取:64位系统上的Microsoft.Jet.OLEDB.4.0错误

我正在使用以下方法阅读应用程序中excel表的内容:

 OleDbConnection con = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties=Excel 8.0");
 _myDataSet = new DataSet();
 OleDbDataAdapter myCommand = new OleDbDataAdapter(" SELECT * FROM [" + "My Sheet" + "$]", con);

myCommand.Fill(_myDataSet);
con.Close();
Run Code Online (Sandbox Code Playgroud)

这在64位系统中失败并出现错误:

Microsoft.Jet.OLEDB.4.0'提供程序未在本地计算机上注册

如何在64位机器上工作?

.net c# oledbconnection

6
推荐指数
2
解决办法
1万
查看次数

使用OleDbDataAdapter从Excel工作表中获取数据时出现问题

首先,我想说我在这里深水,因为我只是对公司中其他人编写的代码进行了一些更改,使用OleDbDataAdapter与Excel"对话"并且我不熟悉接着就,随即.有一个我无法遵循的错误.

我正在尝试使用OleDbDataAdapter来读取大约450行的excel文件.

在代码中,它是这样做的:

connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source='" + path + "';" + "Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1;\"");
connection.Open();
OleDbDataAdapter objAdapter = new OleDbDataAdapter(objCommand.CommandText, connection);
objAdapter.Fill(objDataSet, "Excel");

foreach (DataColumn dataColumn in objTable.Columns) {
  if (dataColumn.Ordinal > objDataSet.Tables[0].Columns.Count - 1) {
    objDataSet.Tables[0].Columns.Add();
  }
  objDataSet.Tables[0].Columns[dataColumn.Ordinal].ColumnName = dataColumn.ColumnName;
  objImport.Columns.Add(dataColumn.ColumnName);
}

foreach (DataRow dataRow in objDataSet.Tables[0].Rows) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

除了一件事,一切似乎都很好.第二列填充了大多数四位数字,如6739,3920等,但是fice行具有字母数字值,如8201NO和8205NO.据报道,这五个细胞具有空白内容而不是其字母数字内容.我已检入excel,此列中的所有单元格都标记为文本.

顺便说一句,这是一个xls文件,而不是xlsx.

有没有人知道为什么这些单元格在DataRow中显示为空白,但数字显示正常?还有其他具有字母数字内容的列显示得很好.

c# excel oledbconnection jet

6
推荐指数
1
解决办法
1万
查看次数

System.Data.OleDb.OleDbConnectionInternal..ctor:未指定的错误

使用.mdb文件作为后端运行多线程(.NET Framework 3.5 SP1 WinForms)桌面应用程序几个小时(约6小时Win7 64位,~24小时WinXP)后,我收到以下运行时错误:

异常 - > 未指定的错误

StackTrace - >

System.Data.OleDb.OleDbConnectionFactory.CreateConnection上的System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection连接)
(DbConnectionOptions选项,Object poolGroupProviderInfo,DbConnectionPool池,DbConnection owningObject)

在System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup)

在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)

在System.Data.OleDb.OleDbConnection.Open()

在NetworkManager.SearchInputFileHandler.GetInputRows(SearchProgramTypeEnumeration programType,Int32 startRowNum,Int32 rowsQty,Boolean setupInProgress,Boolean filterOutUninitializedRows)

看起来这是一个OleDbProvider错误.

你见过/经历过这样的事吗?

语境:

(1)我专门使用

使用(OleDbConnection cnn = new OleDbConnection("{{mymdbConnectionStringHere}}")){

cnn.Open();

...

}

(2)我在一些select SQL表达式中使用IN子句指向外部MDB表.

我想问题是由案例(2)引起的.虽然这仍然是一个假设来检查(我的应用程序的核心代码中需要一些代码修复,我现在考虑是值得修复的,或者我应该更好地切换到MS SQL后端.)

谢谢.

.net c# oledb oledbconnection

6
推荐指数
1
解决办法
6921
查看次数

OleDbConnection()在任何打开的Excel窗口中打开Excel文件.但如果没有窗户打开则不会

我正在编写一个应用程序,它使用一个OleDbAdapter访问Excel文件中的信息.当我尝试创建与Excel文件的连接时,如果用户在其桌面上打开了另一个(不相关的)Excel文件,则适配器连接的文件将在此窗口中以只读格式打开.如果用户没有打开Excel实例,则文件将保持隐藏状态.

这是我的代码:

foreach (item app in apps)

{   

   DataTable dt = new DataTable();

   string CnStr = ("Provider=Microsoft.Jet.OLEDB.4.0;" + ("Data Source="
                  + ((app.FilePath) + (";" + "Extended Properties=\"Excel 8.0;\""))));

   string OleDbString = ("Select * from [" + app.SheetName + "$]");                              

   OleDbDataAdapter Adapter = new OleDbDataAdapter();

   var conn = new OleDbConnection(CnStr);
   conn.Open(); <----------------------------This is where the files are being opened.

   var cmd = new OleDbCommand(OleDbString, conn);

   Adapter.SelectCommand = cmd;


   Adapter.Fill(app.DataTable);

   conn.Close();

   Adapter.Dispose();

}
Run Code Online (Sandbox Code Playgroud)

有人知道为什么OleDbConnection()如果Excel的一个实例是打开的话会打开一个文件,但如果没有,那就不会打开文件?

oledb datatable excel oledbconnection

6
推荐指数
1
解决办法
759
查看次数

OledbConnection.Dispose()是否关闭连接?

可能重复:
如果使用using子句,是否需要关闭DbConnection?

是否OledbConnection.Dispose()关闭连接?

我知道那SqlConnection会怎样OledbConnection呢?

.net c# dispose oledbconnection

6
推荐指数
2
解决办法
5869
查看次数

我们可以将'Microsoft.ACE.Oledb.12.0.dll'的参考添加到项目中

我收到错误"'Microsoft.ACE.OLEDB.12.0'提供程序未在本地计算机上注册." 在我的测试服务器上.所以我的问题是:

i)我可以添加"'Microsoft.ACE.Oledb.12.0.dll'"的引用来自行投影吗?ii)安全吗?iii)怎么做?

因为我的机器上有最新版本的办公室安装,所以我的本地机器上都有工作.一旦我将我的代码部署到测试服务器,我就会遇到错误.我可能无法在测试服务器上安装Office(由于某种原因).那么有可能将所有require dll放在项目本身并将其部署到测试服务器吗?

提前致谢.

.net database oledb oledbconnection

6
推荐指数
1
解决办法
4万
查看次数

打开ADODB连接时出现"未指定的错误"

我现在面临"未指定的错误"只有一台PC我的用户.

运行时错误'-2147467259(80004005)':
未指定错误

我正在运行以下VBA代码以打开与位于网络共享驱动器中的Access数据库的连接.但是代码在尝试运行.Open语句时会抛出错误.

我认为这是一个驱动程序问题,并在用户的PC中安装了Access 2007数据库引擎,并用" Microsoft.ACE.OLEDB.12.0" 替换了Provider,但它不起作用.

码:

 Dim cn As ADODB.Connection
 Dim rs As ADODB.Recordset
 Dim retVal As Boolean
 Dim strSQL As String
 retVal = False

    On Error GoTo CatchError
     Set cn = New ADODB.Connection

     With cn
     .Provider = "Microsoft.Jet.OLEDB.4.0"
     .Properties("Jet OLEDB:Database Password") = Initialize.GetDBPwd 'returns pass
     .Open Initialize.GetDbConnectionString 'returns the network DB path
    End With
Run Code Online (Sandbox Code Playgroud)

vba adodb oledbconnection excel-vba access-vba

6
推荐指数
1
解决办法
6448
查看次数

如何知道 OleDb 连接中的 Access 数据库中是否存在表

OleDb我使用下面的代码通过连接来连接到 Access 数据库C# .Net

我如何知道硬编码到程序中的表是否确实存在于文件中,以便我可以向用户显示适当的消息?

try
{
    var dbSource = "Data Source = " + source;
    const string dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;";

    using (var con = new OleDbConnection())
    {
        con.ConnectionString = dbProvider + dbSource;
        con.Open();

        using (var cmd = new OleDbCommand())
        {
            cmd.Connection = con;
            cmd.CommandText = "SELECT * FROM [Concrete Design Table 1]";

            // How do I know the table name is valid? It results in errors when it is not?
            // How to prevent it?
            using (var …
Run Code Online (Sandbox Code Playgroud)

.net c# oledb datareader oledbconnection

5
推荐指数
1
解决办法
6863
查看次数

在 C# 中读取 excel 文件时,“microsoft.ace.oledb.12.0”提供程序未在本地计算机上注册

我正在阅读一个 excel 文件,我想访问它的内容。我正在使用这个连接字符串:

connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", Server.MapPath(fileName));
Run Code Online (Sandbox Code Playgroud)

但我看到这个错误:

“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

我的服务器在 64 位操作系统上运行。我已经在上面安装了 Microsoft Office Professional Plus 2010(32 位)和 Microsoft Access 数据库引擎 2010。

问题是什么?

c# oledb excel oledbconnection

5
推荐指数
1
解决办法
3万
查看次数

SSIS - 源助手未显示项目级别连接

我已经创建了一个到项目级别的 OLE DB 连接(本机 OLE DB\SQL Server Native Client 11.0)。当我尝试从源助手中使用它时,我在列表中看不到它。但是,如果我选择 OLE DB 源连接,则可以毫无问题地使用它。

可能会发生什么?

我正在使用 Microsoft Visual Studio Community 2019 版本 16.4.2。

connection ssis database-connection oledbconnection

5
推荐指数
1
解决办法
807
查看次数