1. 程式人生 > >c 讀取Excel的第一個Sheet表

c 讀取Excel的第一個Sheet表

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow

也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!

               

有朋友問道:

[c-sharp] view plain copy print ?
  1. public
     ArrayList ExcelSheetName(string filepath)  
  2.         {  
  3.             ArrayList al = new ArrayList();  
  4.             string
     strConn;  
  5.             strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1;/";";  
  6.             OleDbConnection conn = new
     OleDbConnection(strConn);  
  7.             conn.Open();  
  8.             DataTable sheetNames = conn.GetOleDbSchemaTable  
  9.             (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { nullnullnull"TABLE" });  
  10.             conn.Close();  
  11.             foreach (DataRow dr in sheetNames.Rows)  
  12.             {  
  13.                 al.Add(dr[2]);  
  14.             }  
  15.             return al;  
  16.         }  
public ArrayList ExcelSheetName(string filepath)        {            ArrayList al = new ArrayList();            string strConn;            strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=/"Excel 8.0;HDR=Yes;IMEX=1;/";";            OleDbConnection conn = new OleDbConnection(strConn);            conn.Open();            DataTable sheetNames = conn.GetOleDbSchemaTable            (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });            conn.Close();            foreach (DataRow dr in sheetNames.Rows)            {                al.Add(dr[2]);            }            return al;        }

這個方法獲取的EXCEL表名是按字母順序排列的,如果我要獲得EXCEL的第一個工作表名,怎麼做?

其實利用Framework提供的Excel 物件模型很容易解決這個問題,下面是邀月的測試過程及程式碼:
新建一控制檯專案,新增兩個dll
Microsoft.Office.Interop.Excel
Microsoft.VisualBasic
如圖:

新增程式碼:
[c-sharp] view plain copy print ?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Text;  
  4. //add namespace  
  5. using Microsoft.Office.Interop.Excel;  
  6.   
  7. namespace ReadFirstSheetNameDemo  
  8. {  
  9.     public class Program  
  10.     {  
  11.         public static void Main(string[] args)  
  12.         {  
  13.             //Get Xth SheetName of Excel File  
  14.             Console.WriteLine(GetFirstSheetNameFromExcelFileName("C://test.xls",1));  
  15.             Console.ReadKey();  
  16.         }  
  17.         public static string GetFirstSheetNameFromExcelFileName(string filepath,int numberSheetID)  
  18.         {  
  19.             if (!System.IO.File.Exists(filepath))  
  20.             {  
  21.                 return "This file is on the sky??";  
  22.             }  
  23.             if (numberSheetID <= 1) { numberSheetID = 1; }  
  24.             try  
  25.             {  
  26.                 Microsoft.Office.Interop.Excel.Application obj = default(Microsoft.Office.Interop.Excel.Application);  
  27.                 Microsoft.Office.Interop.Excel.Workbook objWB = default(Microsoft.Office.Interop.Excel.Workbook);  
  28.                 string strFirstSheetName = null;  
  29.   
  30.                 obj = (Microsoft.Office.Interop.Excel.Application)Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application"string.Empty);  
  31.                 objWB = obj.Workbooks.Open(filepath, Type.Missing, Type.Missing,  
  32.                     Type.Missing, Type.Missing, Type.Missing, Type.Missing,   
  33.                     Type.Missing,Type.Missing, Type.Missing, Type.Missing,   
  34.                     Type.Missing, Type.Missing,Type.Missing, Type.Missing);  
  35.   
  36.                 strFirstSheetName = ((Microsoft.Office.Interop.Excel.Worksheet)objWB.Worksheets[1]).Name;  
  37.   
  38.                 objWB.Close(Type.Missing, Type.Missing, Type.Missing);  
  39.                 objWB = null;  
  40.                 obj.Quit();  
  41.                 obj = null;  
  42.                 return strFirstSheetName;  
  43.             }  
  44.             catch (Exception Err)  
  45.             {  
  46.                 return Err.Message;  
  47.             }  
  48.         }  
  49.     }  
  50. }  
using System;using System.Collections.Generic;using System.Text;//add namespaceusing Microsoft.Office.Interop.Excel;namespace ReadFirstSheetNameDemo{    public class Program    {        public static void Main(string[] args)        {            //Get Xth SheetName of Excel File            Console.WriteLine(GetFirstSheetNameFromExcelFileName("C://test.xls",1));            Console.ReadKey();        }        public static string GetFirstSheetNameFromExcelFileName(string filepath,int numberSheetID)        {            if (!System.IO.File.Exists(filepath))            {                return "This file is on the sky??";            }            if (numberSheetID <= 1) { numberSheetID = 1; }            try            {                Microsoft.Office.Interop.Excel.Application obj = default(Microsoft.Office.Interop.Excel.Application);                Microsoft.Office.Interop.Excel.Workbook objWB = default(Microsoft.Office.Interop.Excel.Workbook);                string strFirstSheetName = null;                obj = (Microsoft.Office.Interop.Excel.Application)Microsoft.VisualBasic.Interaction.CreateObject("Excel.Application", string.Empty);                objWB = obj.Workbooks.Open(filepath, 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);                strFirstSheetName = ((Microsoft.Office.Interop.Excel.Worksheet)objWB.Worksheets[1]).Name;                objWB.Close(Type.Missing, Type.Missing, Type.Missing);                objWB = null;                obj.Quit();                obj = null;                return strFirstSheetName;            }            catch (Exception Err)            {                return Err.Message;            }        }    }}
結果:

參考資料:
http://www.cnblogs.com/downmoon/archive/2008/08/20/1272185.html
http://msdn.microsoft.com/zh-cn/library/aa168292%28office.11%29.aspx#EDAA 

邀月注:本文版權由邀月和CSDN共同所有,轉載請註明出處。
助人等於自助!   [email protected]
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述