Tag: oledb

使用.xlsx扩展名导出Excel文件

我试图用这些代码导出xlsx文件: DataTable dataTable= new DataTable(tableName); OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection); adapter.FillSchema(dataTable, SchemaType.Source); foreach (DataRow result in dtResult.Rows) { DataRow newRow = dataTable.NewRow(); foreach (DataRow drAssign in dtAssignment.Rows) { newRow[drAssign["Destination"].ToString()] = result[drAssign["Source"].ToString()]; } dataTable.Rows.Add(newRow); } adapter.Update(dataTable); 连接string是 Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\AA\Desktop\work10.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 我试图导出100行到xlsx文件。 当我尝试打开excel文件时,我正在获取 'Excel无法打开test.xlsx,因为文件格式或文件扩展名无效。 validation该文件是否已损坏,并且文件扩展名与文件的格式相匹配 错误。 将.xlsx扩展名更改为.xls后,文件正在打开。 但是xlsx选项必须在不改变扩展名的情况下工作。 计算机上安装了Microsoft Access数据库引擎2010版和Office Professional Plus 2013。 我怎么解决这个问题?

为什么在用OleDb导入Excel时忽略了第一个空行

使用.net的OleDb我尝试导入一个Excel表,其中第一行可以是空的。 我想保留DataTable中的空行,以便将单元格映射到Excel风格的单元名称“A1,A2,…”。 但是不pipe我做什么,第一行都被删除了。 Excel文件看起来像: – – – ABC XY ZZ 1 2 3 4 4 5 其中“ – ”是空单元格。 (我对导入格式没有影响。) 简化代码: string cnnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"file.xls\";Extended Properties=\"Excel 8.0;HDR=No;IMEX=1\""; string mySheet = "Sheet1$"; OleDbConnection connection = new OleDbConnection(cnnStr); DataSet Contents = new DataSet(); using (OleDbDataAdapter adapter = new OleDbDataAdapter("select * from [" + mySheet + "]", […]

尽pipe使用IMEX = 1,OleDb不会读取Excel文件中的所有行

我在C#中使用Microsoft.ACE.OLEDB.12.0驱动程序来读取和写入Excel文件(XLS)。 我的阅读器的扩展属性如下所示: Excel 8.0; HDR = NO; IMEX = 1; 对于编写器看起来像: Excel 8.0; HDR = NO; IMEX = 0; 这是一个场景:我从一个excel文件中读取input.xls ,然后创build一个新的output.xls文件,并使用我的编写器写入。 现在我在MS Excel中打开文件output.xls ,并添加更多的行。 接下来,我将我的output.xls作为input提供给我的程序,当我debugging时,我发现它只读取最初使用OleDb写入的行。 它不读取我添加的任何新行,并且编写器将所读取的行吐出。 这是如何OleDb的作品? 即将数据库视为locking,并且不对外部插入赋值。 或者,我可以创build和保存文件吗? private void Initialize(string fileName, FileType fileType) { string connectionString = GetConnectionString(fileName, fileType); string sheet; using (OleDbConnection connection = OpenConnection(connectionString)) { DataTable sheets = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); } […]

Excel到IBM DB2连接

我一直在试图build立一个与IBM DB2数据库的连接,我可以提取数据。 我有的细节是: 服务器名称 数据库 用户名密码。 我尝试了两种不同的方式: 使用Excel: 在Excel中,我已经进入数据 – >从其他来源 – >从数据连接向导 – >其他/高级 – >用于DB2的Microsoft OLE DB提供程序。 我已经在相应的参数中input了数据源参数的服务器名称以及用户名和密码。 每当我点击“testing”button,将返回相同的错误:“testing连接失败,因为初始化提供程序中的错误.-参数不正确” 使用SQL Server 2008: 我还试图通过SQL Server 2008连接到这个DB2数据库,创build一个新的链接服务器,并在安全页面的数据源参数和用户名和密码中input服务器名称。 我在那里select的提供者是“IBM DB2 UDB for iSeries IBMDA400 OLE DB提供者”。 我在这里得到的错误是:“链接的服务器已经创build,但连接testing失败” 关于如何从excel或SQL Server 2008连接到DB2数据库的任何build议将非常有帮助。 谢谢

使用WHERE子句的OLE CALL到Excel

我正在修复一个C#项目,该项目使用带有数据定义的Excel工作表来创buildSQL Server中批量插入所使用的.fmt文件。 我的问题是,Excel文件有时底部有空白行,我正在处理的C#parsing器将检测到的行数超过实际行数的containsint数据定义。 因此,fmt文件在其第二行具有较大数量的行,批量插入到达底部并尝试读取时会引发exception。 例如,只有50行数据和50空白行。 fmt文件的第二行有100(第一行是SQL Server版本)。 第3行到第52行是数据定义的50行。 批量插入尝试到达第53行时,它会返回一些列exception。 C#parsing器使用Ace OleDB 12连接到Excel 97格式文件。 SQL是: var commandText = string.Format("SELECT * FROM [{0}$]", SpreadSheetName); 我试图添加一个WHERE子句的SQL代码,只select非空的“A”列的行,但这是行不通的。 SELECT * FROM [{0}$] WHERE [A] <> '' 有没有一种方法可以通过某些SQL代码来增强命令文本,以仅在符合某些条件的情况下从Excel中提取数据行?

OleDB数据提供者找不到VBA / Excel

我几乎不熟悉VBA(在学校有一些课程,就是这样)。 现在我需要从Excel文件连接到Oracle数据库(在远程服务器上运行)。 我四处窥视,并find一些例子。 所以,到目前为止我已经写了下面的代码: Sub Try() Dim cn As New ADODB.Connection Dim rs As ADODB.Recordset Dim cmd As ADODB.Command Dim chunk() As Byte Dim fd As Integer Dim flen As Long Dim Main As ADODB.Parameter Dim object As ADODB.Parameter Stil = vbYesNo + vbCritical + vbDefaultButton1 Titel = "db connection test" ' Meldung anzeigen. Antwort […]

使用OLEDB / Microsoft Jet驱动程序在Excel文件中导致“存储为文本的数字”

我遇到了一个问题,使用C#中的OLDEDB将条目写入Excel文件。 基本上我想用一个Excel模板文件格式化一些信息。 这个想法是,用户可以运行一个查询,它会将结果填充到一个excel文件中,然后用户可以继续使用excel来控制结果。 要做到这一点,我创build一个“raw_data”选项卡,并使用OLEDB写入它像一个表。 不过,我遇到了预devise算的问题。 一些列是文本,另一些是数字,并且一旦打开表格,原型应该引用这些列。 Excel版本2003 C#/。净3.5 这是我的连接string string connectString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={filename};Extended Properties=""Excel 8.0;HDR=YES;IMEX=0"""; {文件名} get的代码稍后在文件的path代码 DbProviderFactory factory = DbProviderFactories.GetFactory("System.Data.OleDb"); using (DbConnection connection = factory.CreateConnection()) { connection.ConnectionString = connectString; using (DbCommand command = connection.CreateCommand()) { connection.Open(); query = "INSERT INTO [raw_prod$] (correlationid, created, ipaddr, nai, started, delta, csid, bytesin, bytesout, cause, bsid, servopt, […]

C#通过OleDb读取打开的Excel文件

我需要使用.NET 3.5连接到打开的 Excel 2003文件 看来我试图使用的OleDb连接只需要该文件。 但是我需要在Excel中同时打开这个文件。 非locking阅读是可能的吗? 编辑:我打开它之前通过复制文件解决这个问题。

Excel Querytable Refresh只能使用一次

我正在使用VBA将一个ListObject添加到Excel 2007工作簿。 ListObject的后面有一个QueryTable,链接到Access数据库。 代码如下所示: Dim l As ListObject Dim c As ADODB.Connection Dim r As ADODB.Recordset Set c = New ADODB.Connection c.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=myAccessDatabasePath;Persist Security Info=False;" Set r = New ADODB.Recordset r.Open "Select * From myTable", c Set l = ActiveSheet.ListObjects.Add(xlSrcQuery, r, True, xlYes, Range("A1")) l.QueryTable.Refresh False 'this line causes an error l.QueryTable.Refresh False 问题基本上是我不能多次刷新表格。 […]

如何避免OLEDB将“。”s转换为列名中的“#”?

我正在使用ACE OLEDB驱动程序从Excel 2007电子表格中读取,我发现任何'。' 列名中的字符被转换为“#”字符。 例如,如果我在电子表格中有以下内容: Name Amt. Due Due Date Andrew 12.50 4/1/2010 Brian 20.00 4/12/2010 Charlie 1000.00 6/30/2010 第二列的名称在使用以下代码阅读时将被报告为“Amt#Due”: OleDbConnection connection = new OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=MyFile.xlsx; " + "Extended Properties=\"Excel 12.0 Xml;HDR=YES;FMT=Delimited;IMEX=1\""); OldDbCommand command = new OleDbCommand("SELECT * FROM MyTable", connection); OleDbReader dataReader = command.ExecuteReader(); System.Console.WriteLine(dataReader.GetName(1)); 我已经通读了所有我能find的文件,而且我还没有发现什么,甚至提到这会发生。 有没有人遇到过这个? 有没有办法解决这个问题?