此前我使用ExcelPackage
从.xlsx文件中读取数据。这工作正常,但后来我意识到ExcelPackage
不适用于旧的.xls格式。所以我升级到使用OleDbConnection
,而不是ExcelPackage
这样的:如何使用C#和OleDbConnection读取.xlsx和.xls文件?
var file = HttpContext.Current.Request.Files[0]; DataTable 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;\""; using (OleDbConnection conn = new OleDbConnection(connStr)) { conn.Open(); DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string 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中打开该文件。基督徒,你是什么意思关闭文件?疯了吗? – Ryan