我可以用这个代码读取XLS文件: string path =@"c:\r\1.xlsx"; OleDbConnection MyConnection = new OleDbConnection(@"provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + path + @"';HDR=Yes;Jet OLEDB:Engine Type=37"); OleDbDataAdapter MyCommand = new OleDbDataAdapter("select * from [Sheet1$]", MyConnection); DataSet DtSet = new DataSet(); MyCommand.Fill(DtSet); … … 但是 – 当我增强查询以包括一些像SQL Server命令 select *,case when 1=1 then 'a' else 'b' end as rr from [Sheet1$] 它去BANG 我知道OLEDB在幕后正在使用access jet / ace。 […]
我试图从第4行开始在B-E列中select所有内容,其中第4行是标题。 我的工作表名称是“PRODUCTION_Insurer索引”。 到目前为止,我的研究已经暗示,因为我的工作表名称中有空格,所以我需要用单引号将其包装在一起,并在最后添加一个$,这导致了以下SQL: select*从['PRODUCTION_Insurer指数$']select一切就好了。 我在实际select范围时遇到了麻烦。 此外,我研究了范围,并认为与Sheet1这样的名称,我可以做SELECT * FROM [Sheet1 $ B4:E]或类似的select一个范围 但是,以下SQL全部失败,出现错误: Microsoft Jet数据库引擎找不到对象''PRODUCTION_Insurer索引$ B4:E''。 确保对象存在,并且正确拼写其名称和path名称。 SELECT * FROM ['PRODUCTION_Insurer Index $ B4:E'] SELECT * FROM ['PRODUCTION_Insurer Index $'B4:E] SELECT * FROM ['PRODUCTION_Insurer Index'$ B4:E] SELECT * FROM ['PRODUCTION_Insurer Index $ B4:E313'] SELECT * FROM ['PRODUCTION_Insurer Index $'B4:E313] SELECT * FROM ['PRODUCTION_Insurer Index'$ B4:E313]
我正在使用Microsoft.Jet.OLEDB.4.0的ExcelProvider,并从生产计算机获取无法find可安装的ISAM。 Windows Server 2003。 我已经search并search这个下载。 我已经在开发机器上安装了Office,所以我确信这就是为什么它在我的最终工作正常。 但是我无法在生产机器上安装Office。
我正在使用Microsoft OLE DB Provider for Jet来使用VBA在Excel中的电子表格上执行查询。 有没有办法在未保存的工作簿上执行以下代码? 例如,如果工作簿从未保存,则ActiveWorkbook.FullName将返回“Book1”。 在这种情况下,数据源将假定path是活动目录,并且由于文件从未保存而出错。 有没有办法使用Excel临时文件作为Jet的数据源? 我想testing这个,但我甚至不知道如何返回Excel临时文件的path和名称。 Public Sub LocalJetQuery() Dim objStartingRange As Range Dim objConnection As New ADODB.Connection Dim objRecordset As New ADODB.Recordset Dim strDSN As String Dim strSQL As String Set objStartingRange = Application.Selection If CLng(Application.Version) >= 12 Then strDSN = "Provider=Microsoft.ACE.OLEDB.12.0;" _ & "Data Source=" & objStartingRange.Worksheet.Parent.FullName & […]
您好,我有一些问题阅读与Jet数据库引擎的CSV文件。 我得到这个消息: The Microsoft Jet database engine cannot open the file 'C:\Users\mikec\Desktop\'. It is already opened exclusively by another user, or you need permission to view its data. 我有权限访问此文件夹和文件。 我也尝试把我的Visual Studio项目,仍然得到相同的错误。 这是我的代码 string path = @"C:\Users\mikec\Desktop\Book1.csv"; string full = Path.GetFullPath(path); string file = Path.GetFileName(full); string dir = Path.GetDirectoryName(full); //create the "database" connection string string connString […]
我写了一个从Excel电子表格导入数据的ASP.NET页面,没有任何问题。 然后我把它移到服务器上,发现它不能在64位操作系统上工作。 一些谷歌search后,我发现MS没有,也不会有一个64位操作系统的Jet DB驱动程序。 有没有人有任何build议,以便在64位操作系统上使用ASP.NET页面轻松导入数据? 客户只是想要一些简单的方式来批量导入数据。 理想情况下,这将是一个Excel电子表格或CSV文件。 理想情况下,它不会太复杂。 他们希望非技术型业务用户能够填写电子表格(或类似的东西),然后转到网页并将其上传到服务器。 如果没有办法在64位操作系统上使用电子表格来做到这一点,有没有人有任何build议? 谢谢,科里
我想要在Excel表上运行SQL查询: select * from Range[A1:Z50] 我设法做到了。 可悲的是我发现我find的解决scheme是基于Jet: ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0; 我的客户有Windows 7与办公室专业加64位和喷气机不存在我想我需要安装MDAC – 但我不能安装任何东西。 你知道其他解决scheme吗?
在VS 2012中创build一个表单应用程序。我有Office 2013安装,赢得8 64位。 我得到了以下错误的代码。 public void SetConnection(string text1, string text2, string text3, string text4, string text5, string text6, string text7) { connectionString1 = "Initial Catalog=test; Data Source=work\\sqlexpress"; connectionString = "Data Source='c:\\Users\\test1.xlsx';Extended Properties=Excel 12.0 Xml;Readonly=False;"; database = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;" + connectionString); database.Open(); database1 = new OleDbConnection("Provider=SQLOLEDB.1;" + connectionString1); database1.Open(); } 我尝试使用喷气机驱动程序,但不会工作,所以我转向王牌。 首先我得到“无法find可安装的ISAM”; 所以安装AccessDatabaseEngine_x64这导致我这个错误。 然后,我改变了我的构build到x86和相同的错误。 所以我没有select。 […]
我使用Excel VBA ADO中的Microsoft.Jet.OLEDB.4.0提供程序连接到本地存储的.csv和.xls文件。 我在这里使用MS Access函数列表作为我可以在SQL中为Jet编写的指南。 但是并不是所有的function都被支持,而且我正在为某些事情弄清楚语法。 问题1 是否有一个可以通过ADO在Jet查询中使用的一组SQL函数的引用? 问题2 IF(或CASE)语句的正确语法是什么? 没有IF,下面的查询运行良好。 sql = " SELECT " sql = sql & " Date() as `Import Date`, " sql = sql & " `Name` as `User`, " sql = sql & " `Role Title` as `Role`, " sql = sql & " If 1=1 Then 1 Else […]
OLEDB可用于读取和写入Excel工作表。 考虑下面的代码示例: using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\my\\excel\\file.xls;Extended Properties='Excel 8.0;HDR=Yes'")) { conn.Open(); OleDbCommand cmd = new OleDbCommand("CREATE TABLE [Sheet1] ([Column1] datetime)", conn); cmd.ExecuteNonQuery(); cmd = new OleDbCommand("INSERT INTO Sheet1 VALUES (@mydate)", conn); cmd.Parameters.AddWithValue("@mydate", DateTime.Now.Date); cmd.ExecuteNonQuery(); } 这工作得很好。 插入数字,文字等也很好。 但是,插入时间组件的值将失败: using (OleDbConnection conn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\my\\excel\\file.xls;Extended Properties='Excel 8.0;HDR=Yes'")) { conn.Open(); OleDbCommand cmd = new […]