Tag: oledb

ACE Oledb 12.0和XLSX问题

我使用下面的代码来设置具有Office 2007,SQL Server 2008的本地PC上的连接string: string connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + MapPath(Request.ApplicationPath) + "\\" + excelFolderName + fileName + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\""; 我的操作系统是Windows 7(64位),我可以读取XLS和XLSX文件没有任何问题。 我已经将我的项目发布到MS Server 2003 R2标准版X64中,并遇到一些问题,因为我没有安装ACE OLEDB 12.0 ,所以我安装了“Microsoft Access数据库引擎2010可再发行组件”,我无法读取XLS文件。 当我尝试打开XLSX (使用Office 2007创build的)时出现问题,因为出现此错误: 外部表格不是预期的格式 我究竟做错了什么? 我不想安装以前的“Microsoft Access数据库引擎2007年可再发行组件”,因为它只有一个32位版本,迫使我build立我的项目为32位… 提前致谢

如何从Excel文件中select默认工作表

在我的用户只用一个工作表上载Excel文件的情况下,我想智能地只使用该工作表。 但是,当我拉这个文件的架构,我看到一个意外的工作表(盘旋): 模式通过以下方式检索: OleDBConnection.GetSchema("Tables") 在这种情况下,它看起来像第二个工作表是一个filter定义的用户“滚动”从滚动两列。 问题 :是否安全地忽略了添加了“$ <filter>”的工作表? 换句话说,如果我运行所有的工作表,抛出“$ <filter>”types,并发现只剩下一个了,这是合理的默认使用该工作表? 有没有人有一个参考? 谢谢!

Excel OLEDB / Jet连接string&%APPDATA%

我有可能是一个常见的情况。 我有一个MS-Access应用程序拆分成前端和后端文件。 我想用一个连接到后端数据的Excel电子表格来设置用户。 但是不是每个人都直接打到后端,我想通过前端的链接表连接到后端,后端位于每个用户机器/环境下的%APPDATA%下的一个文件夹中。 那么是否有可能使用shellvariables(或任何它们),例如类似于%APPDATA%/path/to/app.mdb指定OLEDB中的Jet连接string的数据源参数? 我似乎无法得到这个语法工作。 如果可以的话,我不想诉诸使用Excel VBA。 或者 ,或者,您可以向我保证,多个用户直接连接(只读)到Excel后端文件不是问题吗? 非常感谢, 埃里克

如何防止在excel中自动生成列名的oledb

我正在使用OleDB从C#3.5读取excel文件。 我只想读取那些有列标题的列。 当我试图使用所有列名称 GetOleDbSchemaTable(OleDbSchemaGuid.Columns …),它会自动生成列名,如F30,F34等。有没有办法阻止这种自动生成列名? [编辑]好的,我解决了这个问题,使用一个工作周围 – 使用一个reg ex匹配模式F <>: 正则expression式r =新的正则expression式(“^ F {1} [0-9] + $”); 请让我知道,如果任何人有更好的解决scheme。 感谢vikram

用于Excel电子表格创build的OLEDB和C#批量插入

我正在使用C#读取SQL存储过程,将存储过程的结果放入C#数据表中,然后逐行读取数据表以build立我的“插入…值”等。 这将创build具有正确数据的Excel电子表格。 但是,而不是逐行插入,是否有一种做批量插入的方法? 如果我没有想到让存储过程把结果写到一个永久表中,因此有办法做一个“Insert into …. select from”。 当我在C#中试过这个代码无法find指定的“Microsoft数据库访问引擎无法find对象”的SQL表名时,什么是正确的语法,以及在哪里指定了何处/如何访问SQL表? 谢谢 嗨,该链接看起来像使用Microsoft.Office.Interop.Excel; 我正在使用OLEDB(我现在开始后悔!)。 所以基本上我有一个从另一个组件调用的C#类。 这个C#类读取一个sql存储过程,把结果放到一个数据表中。 然后使用OLEDB命令“Insert into([])values(”?“)设置表定义,然后定义参数,例如cmd.Parameters.Add(columnHeading,OleDbType.VarChar,size)等等。我发现在数据表中我设置了cmd.Parameters [i] .value = row [i],其中参数[i]增加了该列中的每一列,然后循环为每个数据列设置cmd.Parameters因为我必须为我的数据集中find的每一行设置cmd.Parameters [i] .Value,然后设置cmd.ExecuteNonQuery();这是非常耗时的。批量插入数据表中的数据到OLEDB命令,如果没有,我可以插入数据通过直接引用一个SQL表,并做一个“插入到..select”?

错误阅读使用asp.net的excel

在我的要求中,我成功打开和阅读Asp.net OLEDB的Excel(包括2003&07)数据。 但是,只有当Excel表格保持打开在我们的电脑 ,否则它会给'外部表格格式错误'。究竟是什么问题?可以任何人告诉我请轻。 这是访问权限的问题吗? 肯定它与连接string无关。 我的代码 protected void Page_Load(object sender, EventArgs e) { string path = @"C:\Users\abcd\Desktop\raj.xls"; connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + absoluteDir + ";Extended Properties=\"Excel 8.0;HDR=YES;\""; OleDbConnection oledbConn = new OleDbConnection(connStr); try { oledbConn.Open(); OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn); OleDbDataAdapter oleda = new OleDbDataAdapter(); oleda.SelectCommand = cmd; DataSet ds […]

命名范围在更新时被删除

我有一个我用作后端的Excel文件(我无法控制这个select),我创build了我的命名范围。 我使用OLEDB来连接到我的应用程序在VB.Net床单。 但是,一旦我从我的应用程序更新任何表,所有我的名称范围被删除,应用程序停止工作。 如果我只是从工作簿阅读,这不会发生。 任何人都经历过这个和任何可能的想法或解

通过OleDb将数据写入Excel中的Asp.net应用程序

所以,我没有任何问题插入到一个使用OleDbConnection这样的excel表格命名的范围内的行: string con_string = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0 Xml;HDR=NO;\";", tempfilename) 然后我将行插入到命名的范围内,以便应用程序的用户可以下载生成的excel工作簿,在其中input对数据的一些更改,然后稍后上载这些更改,然后由应用程序将它们读入数据库。 当我在我的工作站上运行应用程序时,这一切都很好。 但是,当我在我们的testing服务器上运行它时,生成的表单中没有任何命名范围,这太疯狂了,因为它只是通过插入到这个命名范围来构build所有的数据,但是它并不当用户试图上传带有更改的工作簿时,由于OleDb驱动程序未find该命名范围,所以会出现错误。 任何线索,为什么这在工作站上,而不是在服务器上?

OLEDB excel插入不需要的字符(')

在excel公式栏插入后,我得到了不需要的字符'这就限制了像date这样的字段types以特定的格式进行转换 query="INSERT INTO [book$] ([Book Name]) VALUES ('" + txtbookname.Text +"')"; 这个值是插入后的stringtypes 例如:如果我已经插入I AM在Excel单元格中,它将是相同的。 但是当编辑该单元格时,它显示'I AM 。 开始时我不想要这个字符

OpenXML花费比OLEDB更长的时间从Excel工作表中读取行

当我使用OLEDB时,从Excel工作表中读取3200行只需要2 – 3秒。 我更改为OpenXML格式,现在需要1分钟以上才能从Excel工作表中读取3200行。 以下是我的代码: public static DataTable ReadExcelFileDOM(string filename) { DataTable table; using (SpreadsheetDocument myDoc = SpreadsheetDocument.Open(filename, true)) { WorkbookPart workbookPart = myDoc.WorkbookPart; Sheet worksheet = workbookPart.Workbook.Descendants<Sheet>().First(); WorksheetPart worksheetPart = (WorksheetPart)(workbookPart.GetPartById(worksheet.Id)); SheetData sheetData = worksheetPart.Worksheet.Elements<SheetData>().First(); List<List<string>> totalRows = new List<List<string>>(); int maxCol = 0; foreach (Row r in sheetData.Elements<Row>()) { // Add the empty […]