Tag: oledb

无法使用System.Data.OleDb.OleDbConnection打开Excel文件

Iam试图打开一个XLSX文件(以便我可以创build一个数据表)Iam使用下面的代码。 System.Data.OleDb.OleDbConnection oleDbCon; System.Data.OleDb.OleDbDataAdapter oleDbDataAd; oleDbCon = new System.Data.OleDb.OleDbConnection("provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePath + "';Extended Properties=Excel 8.0;"); 但是当文件path包含扩展名为xlsx的文件时,出现错误“外部表格不是预期的格式”。 上面的代码工作正常时,文件扩展xls。 我必须更改连接string吗? 任何帮助吗?在此先感谢。

如何使用OleDb创buildExcel数据库

我的任务是采取一个Access数据库并创build一个Excel文件,但我似乎无法创build OleDb将使用的Excel文件。 Excel文件名将由运行该工具的工程师提供。 Access数据库中的每个数据表都将成为Excel文件中的一个工作表。 现在,我有一个我不能克服的冲突:如果Excel文件不存在,我不能创build它! internal const string XL_FMT = "Provider=Microsoft.{0}.OLEDB.{1};Data Source={2};Mode=ReadWrite;Extended Properties=\"Excel {1};HDR={3};IMEX=1;\""; internal DataTable tableNames; internal OleDbConnection oleCon; private string conStr; public OleBase(string connectionString) { conStr = connectionString; // Using the debugger, conStr is: // "Provider=Microsoft.ACE.OLEDB.12.0;" + // "Data Source=C:\\Users\\cp-jpool\\Documents\\Ecat5.xlsx;" + // "Mode=ReadWrite;Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1;\"" object[] param = new object[] { null, null, […]

使用c#将数据更新到Excel工作表

我正在尝试使用OLEDB连接更新格式为“xlsx”的Excel工作表中的某些数据,但我无法确定连接的build立。 这是我的代码: String sConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source='" + "D:\abc1.xlsx" + "';Extended Properties='Excel 8.0;HDR=Yes'"; OleDbConnection con = new OleDbConnection(sConnectionString); con.Open(); OleDbCommand com = new OleDbCommand("select * from Sheet1",con); OleDbDataReader reader = null; reader = com.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader[0]); } con.Open(); Console.ReadLine(); } 当我运行代码时,我正面临以下exception: “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。 任何想法如何从这个exception恢复或任何其他build议,我可以在Excel中更新我的数据是可取的。

C#问题从Excel中读取文本

我尝试使用OLEDB读取Excel文件。 我可以正确读取整数,但是当我想要读取文本时会出现问题。 我也尝试IMEX = 1,但它没有工作! 这是我的示例代码: connectionString = String.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + file + ";Extended Properties='Excel 8.0;IMEX=1;HDR=Yes'"); adapter = new OleDbDataAdapter("SELECT * FROM [" + sheet + "$]", connectionString); DataSet data= new DataSet(); adapter.Fill(data);

需要JET 4.0驱动程序

我正在使用Microsoft.Jet.OLEDB.4.0的ExcelProvider,并从生产计算机获取无法find可安装的ISAM。 Windows Server 2003。 我已经search并search这个下载。 我已经在开发机器上安装了Office,所以我确信这就是为什么它在我的最终工作正常。 但是我无法在生产机器上安装Office。

条件expression式中的数据types不匹配从Excel文件通过OLEDB

我正在通过ASP.NET页面处理上传的文件。 我正在使用以下连接string: string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + excelFile + @";Extended Properties=""Excel 8.0;HDR=YES;"""; 这是SQL语句: string sql = "SELECT * FROM [Sheet1$] WHERE [req_tf_order_no] <> ''"; 这是通过DataReader循环的代码 using (OleDbConnection connection = new OleDbConnection(connectionString)) { using (OleDbCommand command = connection.CreateCommand()) { command.CommandText = sql; connection.Open(); using (OleDbDataReader reader = command.ExecuteReader()) { if (reader.HasRows) { hasMoreData = reader.Read(); […]

有没有办法在一个未保存的Excel工作簿上使用OLE DB Provider for Jet?

我正在使用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 & […]

使用oledb导出excel文件的Asp.net返回空的excel文件

我正在使用asp.net oledb将信息导出到excel文件。 当导出的信息变得太大时,我遇到了问题,在这个例子中,我给出了下面的代码,生成的excel文件变成了一个空的电子表格。 如果我将循环更改为1123插入行。 生成的Excel文件很好,显示了1125行和4列。 无论有多less行,Windows窗体中的testing程序也正常工作。 代码已被简化,sql插入命令中的“information …”代表1803个字符。 ExcelObjConn = "Provider=Microsoft.Ace.OLEDB.12.0;" & _ "Data Source=" & fileName & ";Extended Properties=Excel 12.0 XML" ExcelConnection = New System.Data.OleDb.OleDbConnection(ExcelObjConn) ExcelConnection.Open() Try SqlCommand = "CREATE TABLE ABC ([row1] text, [row2] text, [row3] text, [row4] text)" ExcelCommand = New OleDb.OleDbCommand(SqlCommand, ExcelConnection) ExcelCommand.ExecuteNonQuery() ExcelCommand.Dispose() For i As Integer = 0 To […]

使用C#selectExcel中的特定列

我想从Excel中select部分列,但不是全部。 我应该使用什么查询? 我的查询工作,如果我使用select * ,而不是4个特定的列。 我正在使用一个OLEDB连接string。 当我运行我的查询时得到的结果是: 没有给出一个或多个所需参数的值

使用C#/ OLEDB从Excel导入时更改值

我试图从Excel电子表格导入一些数据到我的C#应用​​程序使用OleDB。 我使用IMEX=1,HDR=YES选项的标准连接string Provider = Microsoft.ACE.OLEDB.12.0; Data Source = {0};扩展属性=“Excel 12.0; HDR = YES; IMEX = 1” 我有一个列的值大部分是文本:TRUE或FALSE。 下半部分有几个值的空白。 当导入发生时,BLANK值被replace为空string。 这大概是因为OleDB确定列的数据types为布尔值,并且不导入任何非布尔值,如BLANK。 我在这个答案尝试解决scheme,但它没有奏效。 即使当我预先创buildDataTable并将其列设置为全部具有string的数据types时,BLANK值仍将被删除。 我曾尝试黑客在同一个问题中提出的registry键,但没有效果。 有追索权吗? 或者我将不得不尝试使用COM? 我们没有SpreadsheetGear的预算,我不能使用excellibrary,因为我主要处理.xlsx文件。 提前致谢