是否可以使用Oledb将数据写入公共Excel?
没有表格结构或任何内容,它是用户文档。
当我尝试时,我总是有一个OleDbException
我的代码:
using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
{
connection.Open();
OleDbCommand commande = new OleDbCommand(
"INSERT INTO [Feuil1$](F1,F2,F3) VALUES ('A3','B3','C3');", connection);
commande.ExecuteNonQuery();
connection.Close();
connection.Dispose();
}
新测试(没有成功!):
using (OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + @"C:\Users\[...]\Classeur.xls" + ";Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\""))
{
string column = "A";
string row = "1";
string worksheetName = "Feuil1";
string data = "TEST";
connection.Open();
string commandString = String.Format("UPDATE [{0}${1}{2}:{1}{2}] SET F1='{3}'", worksheetName, column, row, data);
OleDbCommand commande = new OleDbCommand(
commandString, connection);
connection.Close();
connection.Dispose();
}
答案 0 :(得分:5)
我终于找到了! 关于IMEX的简单问题(因此失去了很多小时!)
所以如果有人有同样的问题:
//for reading data
Extended Properties=\"Excel 8.0;HDR=NO;IMEX=1;READONLY=FALSE\"
//for writing data
Extended Properties=\"Excel 8.0;HDR=NO;IMEX=3;READONLY=FALSE\"
答案 1 :(得分:0)
这种用于写入数据的 IMEX 情况让我疯狂了好几个月,我不得不将其删除以使其正常工作。 我刚刚找到了 [CheapD] 答案,它完美无缺,谢谢便宜。
我建议添加 MODE 参数:
Extended Properties='Excel 12.0; HDR=Yes; IMEX=3; MODE=Share; READONLY=False';