此前我使用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