Tag: oledb

将Excel导出到System.DataTable时出现未知问题

我正试图从Excel文件到DataTable的数据。 这是我的代码片段: FilePath = WebConfig.SavePath + "Book2.xls"; // Create the connection object OleDbConnection oledbConn = new OleDbConnection(WebConfig.ExcelConnection(FilePath)); // Open connection oledbConn.Open(); // Create OleDbCommand object and select data from worksheet Sheet1 //WebConfig.SheetNameFirstExcel OleDbCommand cmd = new OleDbCommand("SELECT * FROM [" + "Sheet1" + "$]", oledbConn); // Create new OleDbDataAdapter OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand […]

从C#插入多个logging到Excel电子表格时,OLEDB性能下降

我正在使用OLEDB连接(Microsoft.ACE.OLEDB.12)从C#数据表中读取logging,并将logging放入Excel电子表格中。 我正在我的数据表中的每个logging循环,并build立OLEDBCommand.CommandText使用“插入到表名称值(”等我不得不适当格式化的值,使string/字符/整数/小数插入正确。所有的工作正常,我的电子表格创build,但是当有大量的logging插入(例如500,000加),然后performance是非常慢,它需要永远。是否有一个更快的方式做到这一点,而不是阅读一个logging从我的C#数据表中一次,确保SQL语句具有正确的数据types的语法,并一次插入一个? 任何帮助赞赏 谢谢

麻烦打开Oledb的XLS文件

当我尝试打开一个xls文件,我得到这个错误: Rhe Microsoft Office Access database engine cannot open or write to the file ''. It is already opened exclusively by another user, or you need permission to view and write its data. 我做了几次访问,但是我一直closures和部署连接。 这是在我的DEV PC上。 在服务器上,我得到这个错误:没有读/写访问的文件。 该文件位于\ networkdisk \ directory1 \ Files中 我将使用“ACE.OLEDB”,因为Jet未在x64服务器上运行。 任何想法 ? 谢谢,

DataTable到.accdb数据库

我正在使用Excel表格中的数据填充DataSet。 我现在需要将这些数据插入到具有相同结构的Access数据库中的一个表中。 公约将决定我遍历DataTable的行,并为每个INSERT查询,但我想知道是否有一个更有效的方式来完成这个? 也许类似于SQL Server的SqlBulkCopy? 这是我到目前为止的代码: Dim connection As OleDbConnection = New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath(path) & ";Extended Properties=Excel 12.0;") Dim adapter = New OleDbDataAdapter("SELECT * FROM [Sheet1$] WHERE EmpID IS NOT NULL", connection) Dim results = New System.Data.DataSet connection.Open() adapter.Fill(results) connection.Close() connection = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath("~/App_Data/Leaves.accdb")) `Now, short of a loop, how […]

C#通过OLEDB从Excel中提取格式化的文本

我正在读取已格式化文本的大型excel文件中的数据。 我通过oleDBConnection & GetOleDbSchemaTable将数据提取到DataTable对象。 但提取的数据不包含任何格式化的信息。 我的要求是,我只需要提取非删除线文本。 我在阅读时没有任何问题,一切都很好。 但我的提取应该基于excel中的文本格式,我无法find解决scheme。 任何要在connectionString中添加的内容如下: connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + "; Extended Properties=\"Excel 12.0 Xml;HDR=YES;Mode=Read;ReadOnly=True;\""; 约束: 使用OleDBConnection – 没有互操作性 读取到DataTable对象

当string正常出现时从DataTable DataRow获取一个int

我已经在这里和其他地方广泛search了一个答案,但没有取得成功。 我正在使用OLEDB连接到一个电子表格,并提取数据以移植到一个数据库,除了一个小细节之外,一切都会相当顺利。 有一个名为技能的列,我收到的条目通常是一个string,但是值有时可以是一个像334423一样的int,当我尝试将这个值添加到新的数据库时,条目是简单的空白。 通常的方法来提取: foreach(DataRow dr in dt.Rows) { /* dealing with other columns */ sTemp.skill = dr[3].ToString(); /* more stuff */ } 但是,当这行中的列是一个int,只是一个空白的string,我绝对没有任何反应。 它甚至没有抛出任何例外,这至less会给我一些方向。 我也试过把它作为一个整型: sTemp.skill = (int)dr[3].ToString(); (这不起作用) 仅供参考:“sTemp”是一个与其相关的string的对象,技能是一个string。 这个问题的神秘安静的性质也使我很难知道我应该问什么。 任何OLEDB大师在那里,请帮助! 谢谢 编辑:经过一些更多的调查,似乎问题不是转换/string转换为整数,但实际上得到的数据在第一位。 在有数字的字段的情况下,它会完全忽略它(因为我想不出来的原因),所以没有什么可以parsing的。 神秘的行为的确如此。 除非有人知道使用OleDbDataAdapter从excel获取int的已知问题,然后随时回答…对不起,浪费你所有的时间,多么尴尬。 编辑#2:这是一个更新的代码视图: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; […]

重新计算自定义VBA函数,仅在请求

我的问题是这样的: 我想在电子表格中使用一个自定义的Ribbon命令button,甚至是一个简单的命令button来初始化一个OLEDB数据库连接,并更新/重新计算所有需要这种连接的用户定义的函数,或者我指定的那些连接。 除了点击特定button时,我不希望这些function中的任何一个重新计算。 我有困难搞清楚如何做到这一点。 请提供您的帮助或build议。 请参阅下面的细节我做了什么: 我目前在一个访问数据库中存储数据,我使用Excel中的VBA进行特定的查询。 我已经将每个数据请求例程embedded到名为[fnc]的模块下的一组function中。 然后,我将它们作为用户定义的函数从Excel电子表格中进行访问。 这里给出一个例子: Function ValueV(mm As String, yy As String, qtable As String, qcode As String, compare_period As Integer, average_period As Integer, weight As Boolean) As Variant 'Month Value Formula for Horizontal Data 'mm – month value 2-digit 'yy – year value 4-digit 'qtable – query table name […]

通过OLEDB更新Excel字段删除定义的单元名称

我使用OLEDB来更新Excel文件,这是我遇到麻烦的一个更新示例: OleDbConnection myConnection; OleDbCommand myCommand = new OleDbCommand(); myConnection = new OleDbConnection( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\my_template.xslm; Extended Properties=\"Excel 12.0 Macro;HDR=No;\"" ); myConnection.Open(); myCommand.Connection = myConnection; string sql = "Update [Sheet1$D16:D16] SET F1 = 'Some Text Here'"; myCommand.CommandText = sql; myCommand.ExecuteNonQuery(); 该更新正常工作,更新我想要的单元格。 但是,它也更新了以前定义的单元名称。 公式中使用的单元格名称。 你可以看到这个图像的问题: 任何人都面临过这个问题? 有什么build议么 ?

使用oledb连接检索每个单元格的excel数据

我有一个代码从Excel中检索每个数据来更新dbf文件。 我使用Microsoft.Office.Interop.Excel来读取列的每个范围的数据。 现在我想改变使用oledb连接excel ..我如何检索每列的数据,并将其设置为一个variables? 这里是我的代码为Microsoft.Office.Interop.Excel。 xlApp = New Excel.Application xlWorkBook = xlApp.Workbooks.Open(xlsName) xlWorkSheet = xlWorkBook.Worksheets("sheet1") xlRange = xlWorkSheet.UsedRange endrow = xlRange.Rows.Count For rCnt = 3 To endrow Empno = xlRange.Cells(rCnt, 1).Value totalhrs = xlRange.Cells(rCnt, 3).Value latehr = xlRange.Cells(rCnt, 4).Value Next xlWorkBook.Close() xlApp.Quit() 这是我的oledb连接。 连接后,我真的不知道我应该怎么做才能得到的数据。 请帮助我…我希望有人在stackoverflow可以帮助我。 Dim xlsConnect As System.Data.OleDb.OleDbConnection Dim DtSet As System.Data.DataSet Dim MyCommand […]

无法从Excel导入到服务器上的SSIS

我在安装了64位office 2010的W2k8 R2上使用VS2008。 我在我的工作站上创build了一个SSIS项目,并在VS中以32位模式运行(因为出现此错误)。 它在这里完美的工作。 因为我正在使用批量插入,所以我需要将项目移动到服务器以完成开发(它将最终在此服务器上的SQL中运行)。 当我尝试在服务器上运行VS,我再次得到这个 请求的OLE DB提供程序Microsoft.ACE.OLEDB.12.0未注册。 SSIS项目设置为32位模式(也是64位的)。 我已经在pipe理员shell中使用/ passive选项运行AccessDatabaseEngine_x64.exe,但仍然没有运气。 我不能更改xlsx文件,因为它是一个自动下载,必须是一个完全自动化的导入,它赢了;让我安装32位访问DBEngine。 有什么build议么 谢谢 标记