我是用这个方法来访问EXCEL的。
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;MAXSCANROWS=1'";
string exSql = "SELECT * FROM [" + sheetName + "$]";
OleDbConnection conn = new OleDbConnection(connStr);
OleDbDataAdapter adp = new OleDbDataAdapter(exSql,conn); try
{
adp.Fill(data,sheetName);
conn.Close();
adp.Dispose();
}
catch(Exception e)
{
throw e;
}
finally
{
conn.Close();
adp.Dispose();
}
但由于另一个程序要打开EXCEL并更新它中表中的数据。
报以下错误:MICROSOFT JET数据引擎打不开文件。它已经被别的用户以独占方式打开,或没有查看数据的权限。
要求一边打开EXCEL修改其表值一边用程序读EXCEL数据。
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName + ";Extended Properties='Excel 8.0;MAXSCANROWS=1'";
string exSql = "SELECT * FROM [" + sheetName + "$]";
OleDbConnection conn = new OleDbConnection(connStr);
OleDbDataAdapter adp = new OleDbDataAdapter(exSql,conn); try
{
adp.Fill(data,sheetName);
conn.Close();
adp.Dispose();
}
catch(Exception e)
{
throw e;
}
finally
{
conn.Close();
adp.Dispose();
}
但由于另一个程序要打开EXCEL并更新它中表中的数据。
报以下错误:MICROSOFT JET数据引擎打不开文件。它已经被别的用户以独占方式打开,或没有查看数据的权限。
要求一边打开EXCEL修改其表值一边用程序读EXCEL数据。
解决方案 »
- c# indexer的优点?
- C# ListBox 模糊查询
- changepassword控件中的membershipprovider属性怎么使用?
- 怎么用C#管理域用户帐号?
- c#控制台应用程序怎么执行SQL 的ddl语句
- 菜鸟程序员想网手机方面转.无奈不会java..想问下wp8现在有前途么..
- c#用API两次调用SendMessage,但参数类型不同,如何声明
- C# 怎么播放 amr 格式的音频文件
- 请问:如何解决CSharp中动画闪烁问题?
- 关于.config文件
- 急:请问在VS2005中如何获取Media player控件的播放时间
- winform中如何把datagrid中的数据写入excel2003中
测试的时候我也把这个excel文件打开了。
private void button1_Click(object sender, System.EventArgs e)
{
OleDbConnection ole = new OleDbConnection();
ole.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Documents and Settings\Administrator\桌面\新建 Microsoft Excel 工作表.xls" + ";Extended Properties=Excel 8.0;Persist Security Info=False";
OleDbDataAdapter oa = new OleDbDataAdapter("select * from jobs",ole);
DataSet ds = new DataSet();
try
{
oa.Fill(ds);
dataGrid1.DataSource = ds.Tables[0];
}
catch(OleDbException ex)
{
MessageBox.Show(ex.Message);
}
}
一般的做法都是为了同时读写冲突先找到该process,kill掉,然后读了再打开写。这种类似于数据库的锁机制。
因为现在数据访问做成长连接并不符合要求,所以包括ADO.NET等在内的都设计成离线式,楼主也可以同样将数据读取到中间层然后更改/读取,最后统一提交到excel,这样便于处理小量的并发。如果并发量较大,你的数据存在excel里就不太合适了,需要存到DB或XML中。