C#通过OleDb读取打开的Excel文件

时间:2011-04-18 09:24:29

标签: c# excel oledb

我需要使用.NET 3.5连接到打开 Excel 2003文件

我试图使用的OleDb连接似乎只需要该文件。但我需要在Excel中同时打开此文件。

非锁定阅读可能吗?

编辑:我在打开文件之前通过复制文件解决了这个问题。

4 个答案:

答案 0 :(得分:2)

问题似乎没有答案。我不能删除它....

我的解决方案是 - 在计时器上运行宏以保存有问题的excel文件,C#app正在将文件复制到另一个并使用OleDb读取它。

答案 1 :(得分:1)

这似乎是一个类似的问题: Writing into excel file with OLEDB

这对你有用吗?

答案 2 :(得分:1)

打开Excel文档时,您传入了哪些参数?你能将Workbook.Open()中的“ReadOnly”参数设置为true吗?见here.

答案 3 :(得分:1)

请参阅下面的代码,了解如何将Excel数据的信息转换为数组。然后,您将在该Excel工作表上执行任何验证。

var fileName = @"D:\Pavan\WorkDiployed.xlsx";
var connectionString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0; data source={0}; Extended Properties=Excel 12.0;", fileName);
OleDbConnection con = new System.Data.OleDb.OleDbConnection(connectionString);
OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", con);

con.Open();
System.Data.DataSet excelDataSet = new DataSet();
cmd.Fill(excelDataSet);
DataTable data = excelDataSet.Tables[0];

DataRow[] arrdata = data.Select();

foreach (DataRow rw in arrdata)
{
    object[] cval = rw.ItemArray;
}           

con.Close();
MessageBox.Show (excelDataSet.Tables[0].ToString ());