Tag: oledb

为什么在填写DataTable时OleDbDataAdapter会留下工件?

我写了一些应该为Excel文件中的每个WorkSheet获取DataTable的方法: 第一步是获取包含在.xlsx文件中的所有工作表的名称: private static List<string> GetSheetNames(string filePath) { List<string> sheetNames = new List<string>(); DataTable dt = null; try { OleDbConnection connection = new OleDbConnection("provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePath + "';Extended Properties='Excel 12.0 Xml;HDR=YES;'"); connection.Open(); dt = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dt == null) { return null; } // Add the sheet name to the string array. foreach […]

循环工作表在Excel中使用C#

我想循环所有工作表在Excel中,需要插入到SQL Server表中。 我已经完成了一个编码部分插入一个单张表excel到一个sql服务器表。 如果Excel中包含更多的工作表,我想要循环这些工作表,并需要将其插入到SQL Server表中。 我写了下面的代码循环的目的,但它给出了以下错误; “ComException被捕获”“检索具有CLSID {00024500-0000-0000-C000-000000000046}的组件的COM类工厂失败,原因如下:80040154类未注册(exception来自HRESULT:0x80040154(REGDB_E_CLASSNOTREG))。 这是循环的代码: string path = @"D:/Projects/sample.xls"; string strConnection = ConfigurationManager.ConnectionStrings["Source"].ToString(); string excelConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1\";"; Excel.Application ExcelApp = new Excel.Application(); var Wbook = ExcelApp.Workbooks.Open(path); foreach (var sheet in Wbook.Worksheets) { OleDbCommand cmd = new OleDbCommand("Select [Name], [City], [Address], [Designation] from [" + […]

使用单元格格式的OLEDB读取Excel

我在C#中使用ADO DB读取Excel表格,但是我面对的问题是无法复制其格式的单元格数据。 例如 我的一个单元格是货币格式($ 2,123.45),所以当我得到结果集时,我得到的单元格值为(2123.45)。 有什么办法可以得到完全相同的单元格数据,因为它显示在Excel表单。 下面是我从Excel中获取结果集的代码 string sQuery = "Select * From [" + sSheet + "$]"; if (dtType == DataLayer.TestData) sWorkbook = Path.GetDirectoryName(ConfigurationManager.AppSettings["resourcesFolder"]) + @"\Data\Test Data\" + sWorkbook; if (dtType == DataLayer.ExpectedData) sWorkbook = Path.GetDirectoryName(ConfigurationManager.AppSettings["resourcesFolder"]) + @"\Data\Expected Data\" + sWorkbook; string cnStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sWorkbook + "; Extended Properties= 'Excel 8.0; […]

在使用LIKE运算符时,使用来自访问的OLEDB连接的Excel中的数据不会更新

当我在Access中使用LIKE运算符并在Excel中创buildOLEDB连接以将此数据导入Excel时,即使在使用另一个筛选器更改查询后,数据也不会更新。 就像我没有改变新的filter的查询。 我可以通过这个查询来解决这个问题,并添加一个INTO TempTable,并将这个temptable链接到excel的OLEDB连接中。 在这种情况下,更改反映,但查询直接不是。 询问 SELECT tb_fechamento_ddd.PERIODO, tb_fechamento_ddd.DDD, tb_fechamento_ddd.metrica, tb_fechamento_ddd.categoria, tb_fechamento_ddd.Qtd FROM tb_fechamento_ddd WHERE (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) AND ((tb_fechamento_ddd.DDD)="93") AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*" And (tb_fechamento_ddd.metrica) Not Like "*CDMA*" And (tb_fechamento_ddd.metrica) Not Like "*LTE*")) AND ((tb_fechamento_ddd.categoria)="Pre")) OR (((tb_fechamento_ddd.PERIODO)>=#3/1/2014#) AND ((tb_fechamento_ddd.DDD)="93") AND (((tb_fechamento_ddd.metrica) Not Like "*GSM*" And (tb_fechamento_ddd.metrica) Not Like "*CDMA*" And (tb_fechamento_ddd.metrica) Not Like "*LTE*") And […]

初始化string的格式不符合OLE DB规范

尝试使用第三方组件读取Excel文件时出现以下错误 初始化string的格式不符合OLE DB规范 现在,我知道“第三方组件”这个词会在这里发出警钟,但是听我说。 这是我正在使用的连接string Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\users\rory\downloads\testdb_4.xls; Extended Properties='Excel 8.0;HDR=YES;'; 我有这个确切的连接string工作没有问题,以下的C#代码 using (OleDbConnection conn = new OleDbConnection()) { DataTable dt = new DataTable(); conn.ConnectionString = connstring; using (OleDbCommand comm = new OleDbCommand()) { comm.CommandText = "select * from [TEST_DB$]"; // TEST_DB is the name of the sheet comm.Connection = conn; using (OleDbDataAdapter da = […]

如何从Powershell查询excel时强制数据types返回?

我正在使用Powershell来查询使用OLEDB连接的Excel电子表格。 我有一个列中有多个值。 我注意到,当我们的4个单元格中包含字母时,查询将返回一个NULL ,数据types将是一个System.DBNull 。 见下文: 脚本输出: PS D:\temp> D:\WCC_Powershell\ExcelTypeTest.ps1 test.xls Ticket Number: 1 | Type: System.Double Ticket Number: 2 | Type: System.Double Ticket Number: | Type: System.DBNull Ticket Number: 4 | Type: System.Double 但是,如果4个单元格中的2个包含字母,则所有单元格数据types都将返回为String 。 例: 脚本输出: PS D:\temp> D:\WCC_Powershell\ExcelTypeTest.ps1 test.xls Ticket Number: 1 | Type: System.String Ticket Number: ZZZZ | Type: System.String Ticket […]

如何SQL查询这个excel表的重复名称列中的标题?

简介:使用Jet.OLEDB提供程序和SQL查询,我无法从Excel表中提取某些列。 原因可能是标题文本包含一些重音字符。 技术上可以参考这些列吗? 就像列K或C12而不是使用标题的文本… 详细信息:其实,具体的Excel文档可以从http://www.sukl.cz/file/80129_1_1下载 – 文档名称是DistribuceLP_2015_01.xls (见后面的处方)。 它包含一些公开可用的统计数据,将被下载和提取。 下载并保存文件后,我确实提取了一些没有问题的列。 我有一个工具,它需要一个连接string,目标目录和一系列的SQL命令+目标表名。 它用提取的内容生成普通的旧DBF表。 具有变换描述的文本文件看起来像这样 – 所以你可以看到连接string和SELECT查询。 该表被重新命名为testingA : connection:Provider=Microsoft.Jet.OLEDB.4.0;Data source=d:\download\DistribuceLP_2015_01.xls;Extended Properties="Excel 8.0;HDR=Yes;" outputdir:. —————- test SELECT [Období] AS obdo, [Typ odběratele] AS typodb, ATC7, [Kód SÚKL] AS kodsukl, [Název přípravku] AS nazev, [Doplněk názvu] AS baleni, [Držitel registračního rozhodnutí] AS drr, [Země] AS zeme, [Typ pohybu] […]

用于查询Excel的多个打开命令oledb连接

Private Function CreateConnString(ByVal Str As String) As String Return "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Str & ";Extended Properties=""Excel 12.0;HDR=Yes;IMEX=1""" End Function … For Each sMatl_Num As String In alMaterialNumbers ifileNo = 1 dbConnection.ConnectionString = CreateConnString(sExcelDBPath) dbCommand.Connection = dbConnection dbCommand.CommandText = "SELECT [col1], [col2], [col3], [col4], [col5], [col6] FROM [sheet$] WHERE [material]='" & sMatl_Num & "'" & " […]

SSAS 2005同伴过早地closures了连接

2005年SSAS的工作很完美,现在performance得很奇怪。 在进行Windows更新后,查询时会引发随机错误,具体取决于所选客户端。 它发生在OleDb和AdoMD.NET驱动程序。 这是我得到的 OleDbException(0x80004005):传输层遇到错误。 同伴过早地closures了连接。 起初,Windows Update打破了我的SPN,所以我不得不使用Kerberos Configuration Manager for SQL Server来修复它。 身份validation返回到SQL Server事件探查器(在NTUserName列上不再有匿名login) 但是例外,在Excel中build立连接和一些成功的浏览之后,似乎总是随机的! Excel 2007,取决于选定的成员。 Excel 2013,取决于选定的成员(Excel 2007以外)。 做一些报告的网站也会得到0x80004005exception SQL Server Management Studio 2012正在运行 服务器上的Excel 2007正在运行 当我在工作MDX上使用SQL Server Profiler时,没有什么特别的。 发现开始4 – MDSCHEMA_CUBES 发现结束4 – MDSCHEMA_CUBES 查询开始0 – MDXQuery 查询结束0 – MDXQuery 而当我select一个特殊的不同领域(这导致exception) 发现开始4 – MDSCHEMA_CUBES 发现结束4 – MDSCHEMA_CUBES 审计注销 多维数据集正在工作。 他们多年来一直没有改变。 有任何想法吗 […]

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()) […]