Tag: oledb

OleDb Excel连接错误“System.Data.OleDb.OleDbException”

我创build了一个连接到共享文件夹上的Excel工作表的小型vb.net应用程序。 它工作得很好,如果我打开之前使用的应用程序的Excel,问题是当Excel不在后台打开,当我尝试打开一个连接时出现“System.Data.OleDb.OleDbException”错误。 我已经读了一些关于这个错误,我明白这与本地临时库的访问权限有关。 所以我的问题是:1)有没有解决scheme? 2)这是我的情况下,Excel文件坐在共享驱动器上的最佳连接策略? 连接代码: skuPath = "C:\path.xlsm" cn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;" + "data source=" + skuPath + ";Extended Properties=Excel 8.0;") q1 = "select * from [" + year + "$B4:V128]" da = New System.Data.OleDb.OleDbDataAdapter(q1, cn) cn.Open() da.Fill(ds, "Table1") cn.Close() dt = ds.Tables(0) 我收到错误cn.Open()。

如何在使用Oledb的同时使用其他用户阅读Excel?

我有一个共享驱动器的Excel,我的应用程序正在使用Oledb连接从Excel中读取数据到DataGridView。 cn = New System.Data.OleDb.OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;" + "data source=" + skuPath + ";Extended Properties=""Excel 12.0;HDR=YES;""") q1 = "select * from [" + year + "$B4:AM300]" da = New System.Data.OleDb.OleDbDataAdapter(q1, cn) Try cn.Open() da.Fill(ds, "Table1") Catch e As OleDb.OleDbException Dim errorMsg As String Dim i As Integer errorMsg = "" For i = 0 To e.Errors.Count – […]

用Excel数据更新查询SQL Server

我试图用Excel文件更新我的SQL表。 当我尝试使用OLEDB时,出现错误: 服务器:消息7308,级别16,状态1,行1 OLE DB提供程序'Microsoft.Jet.OLEDB.4.0'不能用于分布式查询,因为该提供程序configuration为以单线程单元模式运行。 我正在尝试以下查询: UPDATE x SET x.ShopName = y.ShopName FROM dbo.StandInStore x INNER JOIN ( SELECT [Stand_ID], [ShopName] FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;IMEX=1;Database=C:\Documents and Settings\vdbergv\Desktop\test.xls;', 'SELECT * FROM [Sheet1$]')) y ON x.stand_ID = y.stand_ID 我有读/写的权利,但我认为服务器不支持OLEDB,我不是pipe理员,所以我不能重新configuration服务器,就像在互联网上的许多解决scheme。 任何想法如何解决这个问题或OLEDB的替代? 问候

C#通用OleDb连接到Excel

我有一个ASP-MVC应用程序,允许用户上传一个Excel文件。 我支持* .xls文件(Excel 97-2003)和* .xlsx文件(Excel 2007+)。 一旦文件被上传,程序使用一个可用的驱动程序打开一个到excel文件的OleDB连接: Microsoft.ACE.OLEDB.12.0为最新的Excel文件格式。 用于较旧的Excel文件格式的Microsoft.Jet.OLEDB.4.0。 我写这篇文章的时候是一个if代码块,它检查要打开的Excel文件的MIMEtypes并select正确的驱动程序来打开OleDb连接。 但是我不能同时支持两种文件格式。 如果我在64位模式执行我的ASP应用程序,我得到的错误: “Microsoft.Jet.OLEDB.4.0”提供程序未在本地计算机上注册。 如果我在32位模式执行我的ASP应用程序,我得到的错误: “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 如果有能够连接到所有版本的Excel文件的通用Microsoft OleDb提供程序? 更新:我正在使用.NET Framework 4的Windows Server 2008 SP1的64位版本上运行

为什么DataBinding第二次不能工作?

我的代码下面在Excel中基于文本框文本searchlogging并将其绑定到数据网格。 但如果我尝试search相同的值,并再次绑定,我得到错误“DataBinding无法find适合所有绑定列表中的行。 任何想法如何重置绑定? 我尝试formattingEnables设置为true它不起作用。 谢谢 OleDbConnection connExcel = new OleDbConnection(_econnect); cmdExcel.Connection = connExcel; connExcel.Open(); DataTable dt; DataSet ds = new DataSet(); dt = connExcel.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); OleDbDataAdapter da = new OleDbDataAdapter(); string sheetname = "BadgeID$"; cmdExcel.CommandText = "select ID, Name, Dept from [" + sheetname + "] where ID in (" + sss +")"; da.SelectCommand = […]

用于查询Excel数据表的替代ACE.OLEDB.12

我目前使用ACE.OLEDB.12查询Excel数据表,我遇到了令人沮丧的供应商的限制。 提供程序只能解决前256列和65536行问题,所以如果我将任何数据表定位在该窗口之外,则引擎会返回未find范围的错误消息。 有谁知道任何其他的数据提供者,将允许我直接从数据表中查询数据,如下面的例子使用ACE.OLEDB.12 ? SELECT * FROM [Main Sheet$IG7:IU9]

使用OleDb插入到Excel中多次覆盖错误的行

我正尝试使用OleDbConnection插入到现有的Excel电子表格中。 我注意到,当我插入时,即使我指定了一个表单偏移,它仍然写入错误的行。 更糟糕的是,每个logging都被写入同一行! 这是我的代码: static void Main(string[] args) { string destination = @"C:\publish\output.xlsx"; File.Copy(@"C:\publish\template.xlsx", destination, true); string connectionString = getConnectionString(destination); using (OleDbConnection connection = new OleDbConnection(connectionString)) { connection.Open(); using (OleDbCommand command = connection.CreateCommand()) { command.CommandText = @" INSERT INTO [Advertisers$A3:AC] VALUES ( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, […]

Excel中的“dynamic命名范围”可以使用OLEDB连接访问吗?

我正在尝试访问一个dynamic命名的范围 ,其中经常用到这个目的。 =offset(…,0,0,counta(…),…) dynamic命名范围 “ 在Microsoft Excel中,您可能有一个命名范围,必须扩展以包含新信息。本文介绍了一种创builddynamic定义名称的方法。 但是, OleDbConnection无法识别此对象,并抛出“Microsoft Access数据库引擎无法find对象'Arg4a'的通用错误。请确保该对象存在,并且正确拼写其名称和path名称。 在这里和那里我已经读过, dynamic named ranges不能在这个方法中使用,但是我想要一个确认,然后我可以继续思考一个替代方法。 如下所示,Excel不会列出dynamic版本的value 。 我可以在任何范围(工作簿或特定工作表)中轻松访问_Arg3 ,但是在Arg4中没有运气。 我正在使用一个简单的select,如下面的全局命名范围: var select = "SELECT * FROM _Arg4"; var cmd = new OleDbCommand(select, conn); 和下面的connection string strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + FileName + ";Extended Properties=\"Excel 12.0;HDR=" + HDR + ";IMEX=1\"" 因为这种情况也可以用这种语言来实现,所以我也加了vba标签,而且我用了很多与vba相关的来源来学习这个概念。 我正在使用的方法的完整主体是在XLS导入下:将Excel文件导入到DataSet

从excel文件读取指数值会导致数据丢失

我正在阅读使用OLEDB连接string的xls文件 mCon.ConnectionString = ("Provider=Microsoft.ACE.OLEDB.12.0;data source=" + mstrFilePath + ";Extended Properties=\"Excel 12.0 Xml;HDR=NO;IMEX=1\""); 我故意设置IMEX = 1 ,以便我可以读取所有值为文本,因为我的xls表包含混合数据types。 现在在xls表格中有包含指数值的列,例如4.0416E+14 ,其内部值为404160301389870 。 现在的问题是,当我读取xls时,它会读取指数值而不是内部值,从而导致数据丢失。 我怎么解决这个问题。 请build议!

OleDb插入到Excel文件中将跳过“空行”

我正在使用OleDb插入命令将其转换为Excel文件。 它跳过了过去删除的行。 在我的C#代码中,我通过OledDb命令进行了以下插入调用。 cmd.CommandText = "INSERT INTO [input$] ([RowName], [RowValue]) VALUES ('blah', 'super blah')"; cmd.ExecuteNonQuery(); 在这个插入表看起来像这样: RowName | RowValue blah | super blah | 到现在为止还挺好。 用户从该表中删除值(按Delete键)时发生问题。 当我调用另一个插入到同一个表我期望值插入到第一个空行(在这种情况下,它应该是行1),但它实际上插入到第二行的值。 插入命令: cmd.CommandText = "INSERT INTO [input$] ([RowName], [RowValue]) VALUES ('blah2', 'weak blah')"; cmd.ExecuteNonQuery(); // Expected result: RowName | RowValue blah2 | weak blah | // Actual result RowName […]