簡體   English   中英

從Excel First Sheet讀取數據-C#

[英]Reading data from Excel First Sheet - C#

有2個Excel工作表-FileA和FileB。

FileA中只有一張紙。 它具有數據並命名為“ Sep”。 肯定沒有隱藏的工作表。

FileB有3張紙。 第一個具有數據&的名稱為“ Sheet1”。

使用FileA進行測試,我編寫了這段代碼,並且工作正常。 FileB出現問題。 在代碼中檢查FileA模式時,我看到“ SEP”顯示為第2行。 所以,寫這個以獲得第一張紙的名字

string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"].ToString();

但是對於FileB,Sheet1顯示為架構中的第一行。

  1. 為什么這對於不同的工作表有所不同。
  2. 我應該寫些什么,以便總能從具有數據的第一張紙中獲取數據。

      private void GetDataFromExcel() { DataSet dsExcel = null; if (true) { OleDbCommand cmdSelect = null; OleDbDataAdapter daXls = null; OleDbConnection xlsCSV = null; DataTable dtSchema = null; try { xlsCSV = new OleDbConnection(ExcelFileConnString); if (xlsCSV.State == ConnectionState.Closed) { xlsCSV.Open(); } dtSchema = xlsCSV.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); //Screenshots of dtSchema attached. if (dtSchema.Rows.Count > 0) { string FirstSheetName = dtSchema.Rows[2]["TABLE_NAME"] .ToString(); cmdSelect = new OleDbCommand("select * from [" + FirstSheetName + "]", xlsCSV); daXls = new OleDbDataAdapter(); daXls.SelectCommand = cmdSelect; dsExcel = new DataSet(); daXls.Fill(dsExcel); xlsCSV.Close(); } int count = dsExcel.Tables[0].Rows.Count; } catch (Exception) { } finally { if (xlsCSV != null && xlsCSV.State == ConnectionState.Open) { xlsCSV.Close(); xlsCSV.Dispose(); } if (cmdSelect != null) { cmdSelect.Dispose(); } } } } 

    在此處輸入圖片說明在此處輸入圖片說明

嘗試使用庫ExcelDataReader。 您可以讀取和保存舊格式(.xls)和新格式(.xlsx)的Excel文件。

這樣,您無需安裝任何Office組件,並且使用非常簡單。 自2014年1月以來,我一直在使用,我一直很喜歡。 您可以從CodePlexGitHub獲取它

如果僅使用.xlsx文件,並且需要更高級的內容,則可以嘗試Microsoft Office Open XML SDK。 它不是那么簡單,但是允許您使用Excel文件執行任何操作-或幾乎執行任何操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM