Tag: oledbconnection

Microsoft.ACE.Oledb.12.0连接中未指定的错误打开以读取excel文件

我在Oledb12.0连接打开VB.NET中读取excel文件时遇到了问题。 它在本地运行。 但是从服务器运行有没有指定的错误。 读取excel文件的连接string如下: Dim filePath As String = Server.MapPath("~/TempFiles/") If Not System.IO.Directory.Exists(filePath) Then System.IO.Directory.CreateDirectory(filePath) End If filePath = String.Concat(FileUpload1.PostedFile.FileName) Dim excelConnectionString As String = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=Excel 8.0", filePath) Using connection As New OleDbConnection(excelConnectionString) Dim command As OleDbCommand = New OleDbCommand("Select * FROM [Sheet1$]", connection) connection.Open() 当我使用UI中的标签进行打印时,我收到以下消息,因为我无法debugging。 消息+源+堆栈跟踪 在System.Data上的System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions选项,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection拥有对象)System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection连接)上的未指定errorMicrosoft Access数据库引擎(System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection).ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection […]

OLEDBConnection.Open()外部表格不是预期的格式

我已经在过去的两天里完成了我在这里search的所有内容,只是为了让我的.xlsx Excelfile upload到DataTable中,并用作我的RadGrid数据源。 这是我的代码… private void ImportToGrid(string filePath, string hasHeaderRow) { string connectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1}';", filePath, hasHeaderRow); using (OleDbConnection excelConnection = new OleDbConnection(connectionString)) { using (OleDbCommand excelCommand = new OleDbCommand()) { excelConnection.Open(); //Get the SheetName DataTable dtExcelSchema = new DataTable(); dtExcelSchema = excelConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); string sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString(); excelCommand.CommandText = "SELECT * […]

使用64位OLEDBConnection的64位.NET应用程序无法使用X080004005编写Excel电子表格

我有一个读取和写入Excel电子表格的Windows服务应用程序(C#,.NET 4.0框架)。 在Windows 2012服务器/ SP2上,它在32位模式下运行良好。 我已经转换它在64位模式下运行。 我们删除了Access 2007驱动程序,并在服务器上安装了Microsoft Access数据库Engine_x64。 之后启动服务器,以确保。 它仍然可以读取电子表格。 但是,当它试图打开另一个OLEDB连接,用E_FAIL X80004005写入错误时,捕获所有错误types,打开OLEDB连接时。 使用的连接string是: connectionstring = "Provider=Microsoft.ACE.OLEDB.12.0; " + "Data Source=" + responseExcelFile + ";" + @"Extended Properties=""Excel 12.0;"""; 注意我已经用IMEX=1;HDR=YES试过了,尽pipe我们得到了相同的结果,而且这些选项似乎是读取电子表格而不是写入。 我意识到的一件事情是连接stringdata source中的responseExcelFile只是一个文件名,而现在还不存在,因为我们要写入它。 但是,使用OLEDB 32符合连接string时相同的代码工作正常。 另外,请注意,无论要写入的responseExcelFile是.xsl还是.xslx,我都会得到相同的错误。 这不是权限问题,运行服务的帐户完全控制文件名中的目录。 这也不是重复的文件名,因为它是时间戳。 收到的实际错误是: 错误—批量查询导出过程错误:NewBulkQueryProcessor:IErrorInfo.GetDescription失败,E_FAIL(0x80004005)。 在System.Data的System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions选项,DbConnectionPoolKey poolKey,对象poolGroupProviderInfo,DbConnectionPool池,DbConnection拥有对象)在System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr,OleDbConnection连接)。 System.Data.ProviderBase上的System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection,TaskCompletionSource'1重试,DbConnectionOptions userOptions,DbConnectionInternal oldConnection,DbConnectionInternal&连接)上的ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection,DbConnectionPoolGroup poolGroup,DbConnectionOptions userOptions) DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection,DbConnectionFactory connectionFactory,TaskCompletionSource'1 retry,DbConnectionOptions userOptions)System.Data.ProviderBase.DbConnectionInternal.OpenConnection(DbConn ection […]

在C#中使用oledb连接string如何将科学表示法转换为文本string?

我有一组使用OLEDB连接string作为Excel文件下载的数据,如下所示: 4552 3.00E + 03 3.00E + 22 3F45 3.00E + 99 DD56677 37 Excel自动认为3E03,3E22和3E99是数字,并使它们看起来像上面.. 如何把它作为一个string? 我的代码是 DataTable dataTable = new DataTable(); strExcelConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + strFilePath + ";" + "Extended Properties='Excel 8.0;HDR=" + header + ";IMEX=1;TypeGuessRows=0;ImportMixedTypes=Text'"; OleDbConnection connection = new OleDbConnection(strExcelConn); using (OleDbCommand command = new OleDbCommand()) using (OleDbDataAdapter adapter = […]

将数据从Excel导入SQL Server

我想导入一个Excel文件到SQL Server,但我面临一个错误。 我的代码: create table test ( AccountNumber varchar(50), AccountName varchar(50), ParentAccountNumber varchar(50) ) select * into test FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=D:\testing.xls;HDR=YES', 'SELECT * FROM [Sheet1$]') 错误: 消息7302,级别16,状态1,行10 无法为链接服务器“(null)”创buildOLE DB提供程序“Microsoft.Jet.OLEDB.4.0”的实例。 注意: Excel版本:2007 SQL Server版本:2012

“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册,但不适用于Excel,但适用于Access

我在我的解决scheme的两个地方使用了OledbConnection,一个读取Access,另一个读取Excel。 读取Access的人很好,但读取excel的人给我错误 – “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 这是我读取Excel并返回Datatable的方法。 string CONSTRSTRING = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=<FILENAME>;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";"; using (OleDbConnection objConnection = new OleDbConnection(CONSTRSTRING.Replace("<FILENAME>", fullFileName))) { DataSet dsImport = new DataSet(); try { objConnection.Open(); DataTable dtSchema = objConnection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if ((null == dtSchema) || (dtSchema.Rows.Count <= 0)) { throw new Exception("Excel doesn't contain any readable table/tab"); } new OleDbDataAdapter("SELECT * FROM […]

使用c#oledbc格式化电子表格

我有一个电子表格,我想用C#将其上传到ASP.NET-MVC工具中,然后将它们放到SQL服务器数据库中。 我创build了一个将数据放入DataSet的函数,以便在将数据放入数据库之后使用它。 这是function: public DataSet getData(HttpPostedFileBase file, string path) { var fileName = Path.GetFileName(file.FileName); oledbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\""); DataSet ds = new DataSet(); OleDbCommand cmd = new OleDbCommand(); OleDbDataAdapter oleda = new OleDbDataAdapter(); oledbConn.Open(); cmd.Connection = oledbConn; cmd.CommandType = CommandType.Text; cmd.CommandText = "SELECT * FROM [Worksheet0$]"; oleda = […]

OledbConnection Close和/或Dispose非常慢,需要20秒才能执行

当使用OleDbConnection来访问excel文件的表名时,我遇到了一个问题。 代码中的所有东西都可以正常执行,直到OleDbConnection在using语句结束时closures。 这导致程序停止15-20秒或更多! 我试着摆脱使用语句,并单独使用OleDbConnection.Close()和OleDbConnection.Dispose()方法,这些都需要非常长的执行。 如果我从来没有closures连接,程序运行完美。 //Closing connection is inredibly slow now for some reason using (OleDbConnection conn = new OleDbConnection(connectString)) { conn.Open(); DataTable dbSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); sheetNames.Clear(); for (int i = 0; i < dbSchema.Rows.Count; i++) { sheetNames.Add(dbSchema.Rows[i]["TABLE_NAME"].ToString()); } comboBox1.Items.Clear(); comboBox1.Items.AddRange(sheetNames.ToArray()); comboBox1.SelectedIndex = 0; //conn.Close(); } //Connection strings //XLS connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0}; Extended Properties='Excel 8.0;HDR=No;IMEX=1;';" […]

OleDbAdapter读取列数据

我创build了一个函数来读取使用OLEDB的Excel表。 我可以build立连接并阅读Excel表格。 使用DbDataReader和一个使用Read()方法的while循环,我从excel工作表中检索所有单元格数据。 我想检查每个单元格的alignment信息。 如果一个单元格是左alignment的,我将从这些左alignment的单元格中选取数据。 我怎样才能做到这一点? 对不起这是一个愚蠢的问题,但我真的需要它。 谢谢

SELECT命令不会复制所有数据

我是通过使用SELECT语句将我的数据从Excel复制到datagridview。 但是不好performance.. 数据显示如下 但我的Excel数据 我的代码: Dim CON As New OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""D:\OTDR_DATA\" & TextBox1.Text & "\PRODUCT_CAREER.XLS"";Extended Properties=""Excel 8.0;HDR=YES"";") Dim DA As New OleDbDataAdapter("SELECT * FROM [PRODUCT_CAREER$]", CON) DA.Fill(DS) DataGridView1.DataSource = DS.Tables(0) 有谁知道这是为什么? 我有search谷歌,但不是这样的问题