Tag: oledbconnection

阅读Excel表格使用C#合并单元格来创build一个XML

我有一个excel的格式: col1 col2 col3 col4 col5 Row 1: 1 Head data1 r11 r12 Row 2: 1 Head data2 r21 r22 Row 3: 1 Head data3 r31 r32 Row 4: 1 Head data4 r41 r42 Row 5: 1 Head data5 r51 r52 Row 6: 1 Head2 data6 r61 r62 Row 7: 1 Head2 data7 r71 r72 […]

Oledb数据读取器读取Excel文档中已删除的行

我正在使用OLEDB连接来读取一个Excel文档,该文档有多达100行的数据。 但是当我删除5行然后尝试再次阅读文档,该OLEDB阅读器读取100行不95.然后引发exception。 我想知道为什么它读取多达100行,因为只有95行是存在的。

OleDb连接不读取Excel文件中的所有行

我在C#连接中使用OleDb从Excel工作表读取数据。 并将其填充到Datatable中。 该表包含275行和27列。 读完之后,1,2和3行是空的。 所有其他行都填写正确。 任何人有关于这个问题的想法? 这是我的代码: string connString = "Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source=" + "C:/Sheets/DataSheet.xls" + ";Extended Properties=Excel 12.0;"; objConn = new OleDbConnection(connString); string Query = "SELECT * FROM [Sheet1$]"; OleDbCommand objCmd = new OleDbCommand(Query, objConn); DataTable Table = new DataTable(); objAdapter1.SelectCommand = objCmd; objAdapter1.Fill(Table);

在microsoft.ace.oledb.12.0提供者没有注册在本地计算机上阅读Excel文件在C#中

我正在阅读一个excel文件,我想访问它的内容。 我正在使用这个连接string: connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0}; Extended Properties=Excel 12.0;", Server.MapPath(fileName)); 但是我看到这个错误: “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 我的服务器在64位操作系统上运行。 我已经安装了Microsoft Office Professional Plus 2010(32位)和Microsoft Access数据库引擎2010。 问题是什么?

Excel SqlBulkCopy在本地PC和应用程序服务器上的工作方式不同。

我的应用程序截断一个数据库表,并用Excel中的行填充它。 使用一个excel文件(2000行),下面的上传代码完全插入到我的本地pc(我的开发环境)中的所有行到数据库,它也在服务器上,所以我认为我成功地完成了任务, 但是,然后用户添加了10个新行到我的Excel,并试图上传2010行,但除了新增加的10行2000行被插入,所以使用该Excel文件与2010行,如果我从服务器数据库表上载2000行,如果我上传它使用我的工作环境决赛桌是2010行。 服务器和本地应用程序是完全一样的。 我也尝试格式化等 编辑示例执行:文件MyRecords.xlsx位于我的桌面,现在我连接到我的应用程序使用 http://myserver/myapplication 并上传MyRecords.xlsx,然后检查数据库中的计数,它说2361logging,然后打开Visual Studio并运行我的应用程序( http://localhost:58029/ )并上传MyRecords.xlsx并再次检查数据库它说2362logging。 编辑示例执行2:我的excel有2160行,如果我上传,它会从本地和服务器中插入2160行。 如果我删除了1000行并上传,现在它按预期从本地和从服务器插入1160行。 现在,如果我重新添加这1000行并上传Excel,现在如果我使用本地环境进行此过程,它可以很好地插入2160行,如果服务器,插入1160行。 所以在excel上的任何修改都不在服务器端看到,所以你确定这是原因吗? – private void UploadData(string path, string dbTableName) { //Create connection string to Excel work book string excelConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;Persist Security Info=False"; //Create Connection to Excel work book OleDbConnection excelConnection = new OleDbConnection(excelConnectionString); //Create […]

在VBA中修改现有的Excel连接名称

我需要更新Excel工作簿的sql连接的连接名称。 这是我的尝试。 我已经能够通过执行标准的replace修改连接string和命令文本。 Sub ConnectionString_modify() Dim i As Long Dim cnt As Long Dim modtext As String Dim modrange As String 'Grab nummber of workbook connections cnt = ActiveWorkbook.Connections.Count For i = 1 To cnt 'Changes to Connection string –This works modtext = ActiveWorkbook.Connections.Item(i).OLEDBConnection.Connection modtext = VBA.Replace(modtext, "_FY2013", "_FY2014") ActiveWorkbook.Connections.Item(i).OLEDBConnection.Connection = modtext 'Changes Connection Name […]

使用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) { … […]

如何强制ADO.Net在读取器TableSchema中仅使用System.String DataType

我正在使用OleDbConnection查询Excel 2007电子表格。 我想迫使OleDbDataReader只使用string作为列的数据types。 系统正在查看前8行数据并推断数据types为Double。 问题是,在第9行我有一个string在该列和OleDbDataReader返回一个空值,因为它不能转换为双。 我已经使用这些连接string: Provider = Microsoft.ACE.OLEDB.12.0; Data Source =“ExcelFile.xlsx”; Persist Security Info = False; Extended Properties =“Excel 12.0; IMEX = 1; HDR = No” Provider = Microsoft.Jet.OLEDB.4.0; Data Source =“ExcelFile.xlsx”; Persist Security Info = False; Extended Properties =“Excel 8.0; HDR = No; IMEX = 1” 看着reader.GetSchemaTable()。行[7] .ItemArray [5],它的dataType是Double。 此架构中的第7行与Excel中的特定列相关,我遇到了问题。 ItemArray [5]是它的DataType列 是否有可能为读者创build一个自定义的TableSchema,所以当访问ExcelFiles时,我可以将所有单元格视为文本,而不是让系统尝试推断数据types? […]

Excel单元格值由OLEDB提供程序截断

我使用OleDbConnection类从Excel 2000/2003工作簿检索数据: string connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + filename + ";" + "Extended Properties=\"Excel 8.0;IMEX=1\";"; OleDbConnection connection = new OleDbConnection(connectionString); connection.Open(); // code to get table name from schema omitted var dataAdapter = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", name),connection); var myDataSet = new DataSet(); dataAdapter.Fill(myDataSet, "ExcelInfo"); 现在事实certificate,长度大于255个字符的工作表中的单元格被截断。 这是Microsoft.Jet.OLEDB提供程序中的限制,还是我可以做些什么呢? 任何人?