Tag: oledb

解决“Microsoft.ACE.OLEDB.12.0”提供程序问题,而不安装“Microsoft Access数据库引擎”

我从MS-Excel导入一些数据到C#。 当我在本地服务器(IIS 7)上部署此应用程序时,出现以下错误。 “Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册 我在本地服务器上安装了“Microsoft Access数据库引擎”来解决这个问题。 现在当我在远程服务器上部署我的应用程序。 我有同样的错误。 出于安全原因,不允许在实时服务器上安装“Microsoft Access数据库引擎”。 我的问题是有什么办法解决这个问题从.dll(添加一些参考项目)或任何其他方式。

如何获取已安装的OLE DB提供程序的列表?

Microsoft Excel允许从“其他来源”导入数据。 其中一个选项是使用OLE DB提供程序。 如何获得可用的OLE DB提供程序的列表?

C#Excel文件OLEDB读取HTML IMPORT

我必须为金融部门自动化一些东西。 我有一个Excel文件,我想阅读使用OleDb: string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=A_File.xls;Extended Properties=""HTML Import;IMEX=1;"""; using (OleDbConnection connection = new OleDbConnection()) { using (DbCommand command = connection.CreateCommand()) { connection.ConnectionString = connectionString; connection.Open(); DataTable dtSchema = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if( (null == dtSchema) || ( dtSchema.Rows.Count <= 0 ) ) { //raise exception if needed } command.CommandText = "SELECT * FROM [NameOfTheWorksheet$]"; using […]

有没有更好的方法来指出Excel中的“空值”?

我有一个Excel 2007工作簿,其中包含我使用ADO.NET导入到DataTable对象中的数据表。 通过一些实验,我设法find了两种不同的方式来表明一个单元应该被ADO.NET视为“空”: 这个单元格是完全空白的。 单元格包含#N/A 不幸的是,这两个都是有问题的: Excel中的大部分数据列都是通过公式生成的,但在Excel中无法生成公式导致完全空白的单元格。 只有一个完全空白的单元格才会被认为是空的(一个空string将不起作用)。 任何计算为#N/A公式(无论是由于实际查找错误还是由于使用了NA()函数) 将被视为空。 这似乎是理想的解决scheme,直到我发现Excel工作簿必须打开这个工作。 只要closures工作簿,OLEDB就会突然开始将所有#N #N/A作为string。 这会导致填充DataTable时抛出如下exception: inputstring的格式不正确。 无法在值列中存储<#N / A>。 预期的types是Int32。 问题:如何通过Excel公式指示空值, 而不必在填充DataTable时打开工作簿? 或者可以做些什么来使#N/A值即使在工作簿closures时也被认为是空值? 万一重要,我的连接string是使用以下方法build立的: var builder = new OleDbConnectionStringBuilder { Provider = "Microsoft.ACE.OLEDB.12.0", DataSource = _workbookPath }; builder.Add("Extended Properties", "Excel 12.0 Xml;HDR=Yes;IMEX=0"); return builder.ConnectionString; ( _workbookPath是工作簿的完整path)。 我已经尝试IMEX=0和IMEX=1但没有区别。

如何使用C#获取上传的Excel文件的sheetname?

我想使用C#代码获取上传的Excel文件的表名。 该文件可能是.xls或.xlsx格式。 我所使用的守则如下: protected void btnGenerateCSV_Click(object sender, EventArgs e) { string sourceFile = ExcelFileUpload.PostedFile.FileName; string worksheetName = ??? (How to get the first sheetname of the uploaded file) string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\""; if (sourceFile.Contains(".xlsx")) strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sourceFile + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\""; try { conn = […]

我无法打开.xlsx文件

我想打开一个xlsx文件,我尝试了下面的代码,但是它也没有打开,也没有引发任何错误。 任何人都可以抛出任何光线 string path = "C:\\examples\\file1.xlsx"; string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"); OleDbConnection cn = new OleDbConnection(connString); cn.Open(); OleDbDataAdapter adapter = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", cn); DataTable dt = new DataTable(); adapter.Fill(dt);

请求的操作需要OLE DB会话对象… – 通过ADO将Excel连接到SQL服务器

我试图把Excel 2003连接到SQL Server 2000来运行一些dynamic生成的SQL查询,最终填充某些单元格。 我试图通过VBA通过ADO(我试过2.8到2.0),但我在设置ADODB.Connection对象内的ActiveConnectionvariables时出现错误。 我需要解决这个很快… 请求的操作需要一个OLE DB会话对象,目前的提供者不支持。 我真的不知道这个错误意味着什么,现在我不在乎。 如何才能使这个连接成功,以便我可以运行我的查询? 这是我的VB代码: Dim SQL As String, RetValue As String SQL = " select top 1 DateTimeValue from SrcTable where x='value' " 'Not the real SQL RetValue = "" Dim RS As ADODB.Recordset Dim Con As New ADODB.Connection Dim Cmd As New ADODB.Command Con.ConnectionString = "Provider=sqloledb;DRIVER=SQL Server;Data […]

什么是使用C#写入Excel文件的最好和最快的方式?

我正在尝试写入使用OLEDB的Excel文件(没有自动化)。 我有大约500行的数据,我从其他应用程序获得,然后使用“INSERT INTO ..”查询逐个写入Excel文件。 我确信从另一个应用程序读取数据是没有延迟的。 我查了一下 在大约3分钟内写入500行的excel文件所需的总时间。 这太多了。 这绝对是因为文件写入操作。 什么是最快的方法? 我应该使用其他一些技巧来写作吗? 我应该尝试一种自动化技术吗? http://support.microsoft.com/kb/306023此链接显示了许多技术,但不确定使用哪一个。

导入Excel到Datagridview

我正在使用此代码打开一个Excel文件,并将其保存在DataGridView中: string name = "Items"; string constr = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source=" + Dialog_Excel.FileName.ToString() + "; Extented Properties =\"Excel 8.0; HDR=Yes;\";"; OleDbConnection con = new OleDbConnection(constr); OleDbDataAdapter sda = new OleDbDataAdapter("Select * From [" + name + "$]", con); DataTable data = new DataTable(); sda.Fill(data); grid_items.DataSource = data; 正如解释: 这个youtube链接 但是我得到ISAM错误。 任何build议?

从Excel读取时如何计算空行

我正在使用OLEDB连接并读取Excel电子表格中的数据。 我有IMEX =“1”,一切正常。 我的问题是我正在阅读的床单可能从几个空行开始,空行的数量是重要的。 例如,如果我正在阅读一个5×5的网格,如: – – – – – – – – – – 2 – 3 3 8 – – – – – – – 5 2 2 其中' – '代表一个空单元格。 前两行是空的事实很重要。 网格的大小是dynamic的。 我的代码似乎忽略了第一个空行。 但处理第4行的空行。 如何计算使用OLEDB的Excel工作表的开始处的空行数? 我限制使用OLEDB,我不会,如果我不必;-) using (var adapter = new OleDbDataAdapter("SELECT * FROM [" + worksheetName + "]", connString)) { var […]