Tag: oledbcommand

C#创buildExcel文件 – JET.OLEDB.4.0和ACE.OLEDB.12.0以不同的date格式输出相同的数据列

我有一些有趣的事情发生,我似乎无法find任何东西,虽然我发现了一些类似的案件有趣的信息。 我正在尝试在仅使用OLEDB和ADO.NET的服务器(即Windows 2003 Server 32位)上创buildExcel工作簿。 (我尝试了ADO,但它根本不起作用 – 不同的故事)。我使用CREATE TABLE语句生成Excel工作簿,然后使用INSERT INTO语句将值添加到电子表格中。 我遇到的问题发生在我的开发机器 – Windows 7 64位笔记本电脑上。 我还没有把它移到生产环境(服务器)。 我拉的数据存储在一个数据表(System.Data),并来自一个MS Access数据库。 电子表格的连接string有所不同,具体取决于我是否尝试创build较新的格式或较旧的格式。 下面是这个事情:当我使用Microsoft.Jet.OLEDB.4.0作为提供者时,我得到了一个电子表格,这个电子表格至less是没有吸引力的,但是却拥有正确格式的所有正确的数据。 特别是,我在这里谈论date栏 – 它们被格式化为m / d / yyyy,这是正确的。 当我使用Microsoft.ACE.OLEDB.12.0作为提供程序时,date格式(从完全相同的数据表)格式化为格式为yyyy-mm-dd hh:mm:ss的string。 我不知道为什么这两个数据都不是相同的格式。 我检查了其中一个date列的数据表的数据types,并且无论我使用哪个提供者,它都检查为DateTime。 这里是使用的连接string: OleDbConnection cn = new OleDbConnection(string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data source={0}{1};" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'", ssPth, ssXlsx)); 第二个是: OleDbConnection cn = new OleDbConnection(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data source={0}{1};" + "Extended Properties='Excel […]

C#OleDbCommand文本:特殊字符和Excel范围参考

我正要从头到尾地试图用C#中的OleDB读取Excel中的数据。 我的电子表格包含两个标签,名字完全如下: FC One FC二,三,四四 我需要读取的数据位于范围A14:AG140。 因此,我发射一个命令 "SELECT * From [FC One$A14:AG140]" – 并获得我需要的第一个标签的结果。 我如何拼写第二个标签的命令? 以下是我尝试的选项,并没有成功: "SELECT * From ['FC Two, Three, 4Four'$A14:AG140]" "SELECT * From ['FC Two, Three, 4Four'$!A14:AG140]" "SELECT * From ['FC Two, Three, 4Four$'A14:AG140]" "SELECT * From ['FC Two, Three, 4Four$'!A14:AG140]" "SELECT * From ['FC Two, Three, 4Four$!A14:AG140']" "SELECT * From ['FC […]

Excel OleDb C# – 如果工作表有特殊字符,则无法select范围

从excel中的工作簿中读取信息时,遇到了一个问题,该信息中包含工作表名称中的“#”。 我能够select整个工作表,但不能在工作表中的范围。 码: using (OleDbConnection conn = new OleDbConnection()) { DataTable dt = new DataTable(); string Import_FileName = "C:/TestExcel/TestWorkbook.xlsm"; conn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + Import_FileName + ";" + "Extended Properties='Excel 12.0 Xml;HDR=YES;'"; using (OleDbCommand comm = new OleDbCommand()) { comm.CommandText = "Select * from [Sheet #1$A1:A22]"; comm.Connection = conn; using (OleDbDataAdapter da = new OleDbDataAdapter()) […]

从Excel文件通过OleDbDataAdapter方法(C#)古怪的select

我有这样一个Excel文件: Column 1 Column 2 Column 3 data1 data2 data1 data2 data1 data2 data1 data2 data1 data2 data3 也就是说,除了最后一行,整个列3是空的。 我通过OleDbDataAdapter访问Excel文件,返回一个DataTable:这是代码。 query = "SELECT * FROM [" + query + "]"; objDT = new DataTable(); objCmdSQL = this.GetCommand(); objCmdSQL.CommandText = query; objSQLDad = new OleDbDataAdapter(objCmdSQL); objSQLDad.Fill(objDT); return objDT; 重点是,在这种情况下我的代码返回一个DataTable只有列1和列2。 我的猜测是,JET引擎试图根据每列中第一个单元格的types来推断列types; 作为第一个值null,整个列被忽略。 我试图填充零,这个代码实际上是返回所有三列; 这显然是最不可取的解决scheme,因为我必须处理大量的小文件。 反转select范围(从“A1:C5”到“C5:A1”)也不起作用。 我正在寻找更优雅的东西。 我已经find了一些讨论types不匹配的post(int列中的varchar单元格,反之亦然),但实际上并没有find与此相关的任何内容。 […]

OleDataAdapter填充方法返回空行到数据表

这是我的代码: public static DataTable GetDataFromSpreadsheet(OleDbConnection conn) { DataTable dt = new DataTable(); OleDbCommand cmd = new OleDbCommand("SELECT * FROM [Sheet1$]", conn); conn.Open(); OleDbDataAdapter da = new OleDbDataAdapter(cmd); da.Fill(dt); conn.Close(); return dt; } 当这个方法被调用的时候,我根本没有得到一个错误! 当我把数据表(dt)放在手表上时,我可以看到它是空的。 没有行标题,行是空的。 我知道这个查询在某种程度上是有效的,因为dt上的Rows.Count返回了我正在查询的表中的行数。 我可能做错了什么? 谢谢您的帮助! 编辑:这是我的连接string <add name="EXCEL" connectionString="Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties='Excel 8.0; HDR=Yes; IMEX=1;'" /> 我将文件位置replace为{0}

用C#查询Excel文件,用数字单元格问题

我正在查询Excel文件以检索数据logging并将其显示在监视工具中。 事情是,当我试图select一个logging与它的ID,与下面的请求,它会引发执行查询时的错误: ExecuteCommandTextErrorHandling 告诉我查询中的types与目标单元格不兼容。 我的请求看起来像 SELECT TOP 20 [Fields…] FROM [RECORD$] WHERE (([id] = '1')) id列可以包含多个数字,所以它的单元格types是标准的默认types。 我的问题是 :我怎样才能获取logging而不知道它的types? 我是否必须执行列types,如果是这样的话? 我是否必须赶上例外情况,并重试没有引号? 这里是用于查询Excel文件和我的连接string的代码 public static DataTable queryXlsFile(String query, OleDbConnection dbConnection) { OleDbDataAdapter dbCommand = new OleDbDataAdapter(query, dbConnection); DataTable dt = new DataTable(); dbCommand.Fill(dt); return dt; } Provider=Microsoft.ACE.OLEDB.12.0; data source=C:\\test\\321.xls; Extended Properties=\"Excel 8.0;HDR=Yes;\"; 提前致谢。