【发布时间】:2017-09-29 09:43:53
【问题描述】:
以前我使用ExcelPackage 从 .xlsx 文件中读取数据。那工作正常,但后来我意识到ExcelPackage 不适用于旧的 .xls 格式。所以我升级为使用OleDbConnection 而不是ExcelPackage,如下所示:
var 文件 = HttpContext.Current.Request.Files[0];
数据表 sheetData = new DataTable();
string connStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +
file.FileName + "; Jet OLEDB:Engine Type=5;Extended Properties=\"Excel 8.0;\"";
使用 (OleDbConnection conn = new OleDbConnection(connStr))
{
conn.Open();
DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
字符串 sheetName = dtSchema.Rows[0].Field("TABLE_NAME");
OleDbDataAdapter sheetAdapter = new OleDbDataAdapter("select * from [" + sheetName + "]", conn);
sheetAdapter.Fill(sheetData);
}
基本上只是试图阅读那里的第一个电子表格。但是我在异常中得到了这个错误:
Cannot update. Database or object is read-only.
我做错了什么?里面是否隐藏着某种更新操作?
【问题讨论】:
-
尝试关闭你正在用C#读取的excel文件
-
您是否打开了 Excel,并且偶然打开了这个特定文件?
-
我没有在 excel 中打开文件。克里斯蒂安,你是什么意思关闭文件?和疯一样吗?
-
excel文件在哪里?是本地的吗?我发布的代码出错了,但是,一定有其他事情发生。如果您只是尝试读取文件,则错误
Cannot update似乎是一个奇怪的错误。
标签: c# excel oledbconnection