在做EXCEL匯入時,常因Sheet Name 使用者會自行更名,造成在程式編寫時會出現檔案名稱不存在的問題,如果限定使用者固定只能使用單一的Sheet Name又不是很人性化。
所以在網路上找了一下解決方法
解法如下

以 C# 取得 excel 檔中各個 sheet name 的方法如下:
1. 建立並打開 OleDBConnection
2. 以 OleDBConneciton.GetOleDbSchemaTable 取得 data table
3. 以 DataRow["TABLE_NAME"] 取出 sheet name
4. 關閉並釋放 OleDBConnection

範例程式如下
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Text;

namespace ExcelSheet
{
 class Program
 {
  static void Main(string[] args)
  {
   OleDbConnection objConn = null;
   DataTable dataTable = null;
   try
   {
    // connection string
    String connString =
    "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
    + "D:\\Excel.xlsx" + ";Extended Properties=Excel 12.0;";
    // Create and Open OleDbConnection
    objConn = new OleDbConnection(connString);
    objConn.Open();

    // Get the data table
    dataTable =
    objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,null);

    if(dataTable == null)
    {
      Console.WriteLine("no table");
    }

    foreach(DataRow row in dataTable.Rows)
    {
     // Write the sheet name to the screen

     //就是在這取得Sheet Name
     Console.WriteLine(row["TABLE_NAME"].ToString());
    }
   }
   catch(Exception e)
   {
    Console.WriteLine(e.ToString());
   }
   finally
   {
    // Close and dispose the connection
    if(objConn != null)
    {
     objConn.Close();
     objConn.Dispose();
    }
    if(dataTable != null)
    {
     dataTable.Dispose();
    }    
   }
  }
 }
}

創作者介紹
創作者 chchou 的頭像
chchou

雨中即景@痞客邦

chchou 發表在 痞客邦 留言(0) 人氣()