using (OleDbConnection connection = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + ";IMEX=1;Readonly=1;Extended Properties=Excel 8.0;\""))
{
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
dataTable = new DataTable();
adapter.Fill(dataTable);
}
}
}
上面是我正在使用的代码,并得到以下错误:
无法更新。数据库或对象是只读的。
有人遇到过同样的问题吗?
答案 0 :(得分:0)
您的连接字符串包含“ Readonly = 1;”。尝试更改“ Readonly = 0;”。并尝试删除“ imex = 1”。所以您的代码应该像这样:
using (OleDbConnection connection = new
OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly + ";Extended Properties=\"Text;HDR=" + header + ";Readonly=0;Extended Properties=Excel 8.0;\""))
{
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
dataTable = new DataTable();
adapter.Fill(dataTable);
}
}
}
答案 1 :(得分:0)
尝试使用以下语法(由于用于导入csv文件,因此从扩展属性中删除Text
)
using (OleDbConnection connection = new
OleDbConnection(String.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"HDR={1};IMEX=1;Readonly=1;Extended Properties=Excel 8.0;\"",pathOnly ,header )))
{
using (OleDbCommand command = new OleDbCommand(sql, connection))
{
using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
{
dataTable = new DataTable();
adapter.Fill(dataTable);
}
}
}
如果您安装了Office 2007或更高版本的提供程序,请尝试使用Microsoft.ACE.OLEDB.12.0
提供程序,因为该程序还支持读取旧的excel格式。
如果您要导入文本文件(csv),则最好使用文本解析库,例如: