Tag: oledb

dynamicCREATE TABLE命令只创build“通用”列数据types(Excel连接)

我想将DB中的所有表导出为Excel文件。 这个过程应该是dynamic的,因为DB中的表格可能会有所不同。 目前的过程是使用SSIS如下: 生成一个CREATE TABLEstring。 在Excel CM中Execute Sql任务时使用该string,该CM创buildExcel文件。 生成一个INSERT INTO OPENROWSET… SELECT FROM …命令string。 在SQL SERVER CM的Execute Sql Task中使用这个string。 问题是,创build的Excel文件列types都是“一般”,即使我的脚本另有说明。 一个示例CREATE TABLE脚本: CREATE TABLE `CONTACT1` ( [ACCOUNTNO] LongText, [COMPANY] LongText, [CREATEON] datetime, [CREATEAT] LongText, ) 用数据types“玩”没有帮助。 例如,使用VARCHAR(1000)而不是LongText等 我试着生成xlsx和xls文件。 这个问题阻止了我以后插入数据时使用*INSERT INTO OPENROWSET(…) SELECT FROM …*命令。 一个示例INSERT INTO脚本: INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Excel 12.0;Database=c:\\junk \\accountnoWithNoApps.xlsx;HDR=YES;IMEX=1\"', 'SELECT [accountno], [COMPANY], [CREATEON], […]

加载csv“找不到可安装的ISAM”

我在Excel VBA中创build一个程序来自动化一个进程,并且我需要导入一个csv文件中存储的数据。 所以,我试图使用查询表导入csv文件中的特定列。 我使用ADO来使用Jet Provider OLE DB与csv文件进行交互。 在连接string中,我指定了提供者,数据源和扩展属性。 我使用Windows XP和Office 2003,所以我的Excel版本是8.0。 我指定提供程序为Microsoft.Jet.OLEDB.4.0。 我的代码粘贴在下面。 当代码执行时,我在下面的代码中包含的最后一行出现错误“Could not find installable ISAM”。 我不能find任何错误的语法,所以我想知道如果这个错误可能是因为我没有正确版本的Jet安装? 请参阅下面的代码。 谢谢 Sub Excel_QueryTable() Dim oCn As ADODB.Connection Dim oRS As ADODB.Recordset Dim ConnString As String Dim SQL As String Dim qt As QueryTable ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=C:\testfile.csv;" & _ "Extended Properties=Excel 8.0;HDR=Yes; […]

ACE.OLEDB提供程序不正确地读取某些列名称

我正在使用ACE.OLEDB从C#应用程序读取excel文件。 到目前为止,一切都工作得很好,直到今天我发现列名之一被错误地读取。 这是我在我的Excel文件中 这是我的debugging器 基本上,由于某种原因,点(“。”)被replace为散列(“#”)。 代码很简单,大部分工作正常,不要认为问题出在那里,只是为了清楚起见而显示。 DataTable data = new DataTable(); string strAccessConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path.FullName + ";Extended Properties=\"Excel 12.0\";\"HDR=YES\";\"IMEX=1;\""; OleDbConnection myAccessConn = new OleDbConnection(strAccessConn); string strAccessSelect = "select * from [" + SheetName + "];"; OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn); OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand); myDataAdapter.Fill(0, maxRows, data); 有什么我做错了还是在OLEDB中的错误?

错误外部表格不是预期的格式

我试图从我的C#窗口应用程序,从sheet1.xls文件通过oledb连接在visual studio-2008中的数据到sqlserver2005 ,我正在使用Windows7操作系统,我没有安装我的系统上的Excel。 这是我的连接string: string excelconnectionstring = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +excelfilepath + ";"+"Extended Properties='Excel 8.0;HDR=Yes;'"; 我尝试了很多方法,但我仍然得到这个错误: "External table is not in the expected format. " 请帮帮我。

使用OleDB范围错误从Excel 2013文件中读取非常大的数据

我正尝试使用Visual Basic.NET在OleDB的帮助下阅读Excel 2013文件(.xlsx,大小约为100 MB)。 主要担心的是系统内存exception的系统: da.Fill(dt) 从下面的代码。 Private Function ReadExcelFile() As DataSet Dim ds As New DataSet() Dim connectionString As String = "Provider=Microsoft.ACE.OLEDB.12.0;;Extended Properties=Excel 12.0 XML;Data Source=C:\file.xlsx;" Using connection As New OleDbConnection(connectionString) connection.Open() Dim cmd As New OleDbCommand() cmd.Connection = connection Dim dtSheet As DataTable = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) For Each dr As DataRow In dtSheet.Rows […]

导出到Excel .xlsx文件

我试图用这些代码导出xlsx文件: OleDbDataAdapter adapter = new OleDbDataAdapter(select, accessConnection); 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"; 我试图导出200000行到xlsx文件,但得到电子表格是完整的错误。 当我尝试打开Excel文件时,我得到的文件扩展名是无效的错误。 将.xlsx扩展名更改为.xls后,文件正在打开,但行数对我来说还不够。 Microsoft Access数据库引擎2010版本安装到计算机。 我该如何解决?

使用OleDB连接将撇号字符添加到Excel导出

我想要生成与之前(使用旧版本的Excel)相同的Excel报告。 唯一的问题是,旧式报告中的所有单元格都以带有撇号字符的string呈现: 我用下面的代码创build了基本相同的报告: oleDbConnection = new System.Data.OleDb.OleDbConnection( "provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileFullPath + ";Extended Properties='Excel 12.0 Xml;HDR=YES' "); oleDbConnection.Open(); oleDbCommand.Connection = oleDbConnection; string commandHeader = String.Join("] char(255), [", headers); commandHeader = "[" + commandHeader + "]"; commandHeader = "CREATE TABLE data (" + commandHeader + " char(255))"; oleDbCommand.CommandText = commandHeader; oleDbCommand.ExecuteNonQuery(); foreach (var item in exportList) […]

如何从C#连接到不同版本的Excel?

我有一个从Excel导入数据到数据集的程序。 要连接到Excel我使用下面的代码… return new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + "; Jet OLEDB:Engine Type=5;"+ "Extended Properties=\"Excel 8.0;\""); 我刚刚安装了Excel 2010的新计算机,现在连接尝试失败,并引发一个exceptionThe 'Microsoft.Jet.OLEDB.4.0' provider is not registered on the local machine 这是因为新版本的Excel需要不同的连接string? 有没有人遇到过这个? 编辑:其实我只是读的地方,使用System.Data.OleDbClient类不需要甚至要安装在计算机上的Excel。 所以我的问题可能与Excel无关,而与Microsoft.Jet工具无关。 我的电脑运行Windows7 64位。 不应该已经安装?

如何读取超过65535行的Excel 2007电子表格?

这是我的连接string看起来像.. m_conn = new OleDbConnection(String.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=" + (char)34 + "Excel 12.0;HDR=YES" + (char)34, m_fileName)); 当我做一个select,我只得到65535行,但我知道Excel电子表格至less有100,000。 我如何阅读其余的行。 注意我必须使用OLEDB,现在没有第三方工具。 非常感谢! 编辑:这些是我正在使用的Excel 2007/2010文件 编辑2:似乎我实际上可以select电子表格中的所有行,如果我做了“从工作表中select*”而不是“从工作表中select* WHERE的东西” 我想当你实现一个WHERE子句时,结果行被限制在65535

为什么OleDB忽略Excel单元格?

这是设置: 我有一个非常简单的页面的Excel电子表格。 它看起来像这样: 我使用下面的连接string来访问这个文件: string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=NO\";", fn) 我访问该文件的function如下所示: try { string select = string.Format("SELECT * FROM [{0}$]", tab.PageName); OleDbDataAdapter adapter = new OleDbDataAdapter(select, con); DataSet ds = new DataSet(); adapter.Fill(ds, tab.PageName); // DEBUG: Let's just see what it is getting… for (int x = 0; x < 13; x++) { for (int y […]