C#讀取Excel檔案的操作教學&程式碼範例

本篇提供 C#讀取Excel檔案的操作教學&程式碼範例,在撰寫C#程式中,如果需要將execl檔案的內容讀取出來,可以藉由以下兩種方式來達成,趕緊來看看吧。

  讀取EXCEL方法介紹  
1. 將Excel轉換成csv 
優點:適應性高,電腦無需安裝excel程式也能執行。
缺點:單獨讀取某個位置撰寫程式較不方便。
2.使用Microsoft Excel 來讀取
優點:可單獨針對EXCEL中某個位置進行讀取
缺點:需要安裝EXCEL
這兩種式各有其優點與缺點就看程式設計師斟酌要使用哪一種方式來達成。
以下提供第二種方式來讀取Excel檔案範例。

C#讀取EXCEL程式範例

/* Excel using */
using Excel =  Microsoft.Office.Interop.Excel;
Excel.Application _Excel = null;
void initailExcel()
{
    /* 檢查PC有無Excel在執行 */
    bool flag = false;
    foreach (var item in Process.GetProcesses())
    {
        if (item.ProcessName == "EXCEL")
        {
            flag = true;
            break;
        }
    }
    if (!flag)
    {
        this._Excel = new Excel.Application();
    }
    else
    {
        object obj = Marshal.GetActiveObject("Excel.Application");//引用已在執行的Excel
        _Excel = obj as Excel.Application;
    }
    /* 設false 將不會顯示執行Excel */
    this._Excel.Visible = false;
}
/* Excel 讀取資料操作Function - Lucas 2018/03/29 */
void operExcel()
{
    Excel.Workbook book = null;
    Excel.Worksheet sheet = null;
    Excel.Range range = null;
    string path = @"D:FTPSTI_Tape.xls";
    try
    {
        /* 開啟舊檔案 */
        book = _Excel.Workbooks.Open
              (path,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing,
               Type.Missing);
        sheet = (Excel.Worksheet)book.Sheets[1];
        /* 獲取長度Excel資料長度 & Device_type */
        int Rows_Count = 0; //存放Excel檔案高度
        /*填寫Excel表格讀取座標(範圍: A5 ~ D23 方形範圍)*/
        range = sheet.get_Range("Q2","Q65536");
        /* 使用foreach 將資料讀取出來 */
        foreach (Excel.Range item in range)
        {
            string Device_Value = item.Cells.Formula.ToString();
            aDevice_type.Add(Device_Value);
            if (Device_Value == "")
            {
                break;
            }
            Rows_Count++;
            /* 將讀出的資料依序存入到動態陣列中 */
        }
        /*** 獲取 CARRIER ***/
        /*填寫Excel表格讀取座標(範圍: A5 ~ D23 方形範圍)*/
        range = sheet.get_Range("BE2", "BE33");
        /* 使用foreach 將資料讀取出來 */
        foreach (Excel.Range item in range)
        {
            string CARRIER_Value = item.Cells.Formula.ToString();
            /* 將讀出的資料依序存入到動態陣列中 */
            aCARRIER.Add(CARRIER_Value);
        }
        /*** 獲取 COVER ***/
        /*填寫Excel表格讀取座標(範圍: A5 ~ D23 方形範圍)*/
        range = sheet.get_Range("BQ2", "BQ33");
        /* 使用foreach 將資料讀取出來 */
        foreach (Excel.Range item in range)
        {
            string COVER_Value = item.Cells.Formula.ToString();
            /* 將讀出的資料依序存入到動態陣列中 */
            aCOVERTAPE.Add(COVER_Value);
        }
   }
   finally
   {
       book.Close(Type.Missing, Type.Missing, Type.Missing);
       book = null;
   }
}