【发布时间】:2012-12-02 23:41:47
【问题描述】:
我需要使用 .NET 3.5 连接到 打开 Excel 2003 文件
我尝试使用的 OleDb 连接似乎只需要该文件。但我需要同时在 Excel 中打开这个文件。
非锁定读取可能吗?
编辑:我通过在打开文件之前复制文件解决了这个问题。
【问题讨论】:
我需要使用 .NET 3.5 连接到 打开 Excel 2003 文件
我尝试使用的 OleDb 连接似乎只需要该文件。但我需要同时在 Excel 中打开这个文件。
非锁定读取可能吗?
编辑:我通过在打开文件之前复制文件解决了这个问题。
【问题讨论】:
这个问题似乎没有答案。我不能删除它....
我的解决方案是 - 在计时器上运行宏以保存有问题的 excel 文件,C# 应用程序将文件复制到另一个文件并使用 OleDb 读取它。
【讨论】:
这似乎是一个类似的问题: Writing into excel file with OLEDB
这对你有用吗?
【讨论】:
打开 Excel 文档时传入了哪些参数?您可以将 Workbook.Open() 中的“ReadOnly”参数设置为 true 吗?见here.
【讨论】:
参考下面的代码如何将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 ());
【讨论】: