c#读取Excel的第一个Sheet表

来源:互联网 发布:制作彩铃用什么软件 编辑:程序博客网 时间:2024/06/05 08:07

有朋友问道:

 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.ExcelMicrosoft.VisualBasic (这2个都在.NET下天添加)

如图:
邀月工作室


结果:

邀月工作室 



添加代码:


using System;
using System.Collections.Generic;

using System.Text;

//add namespace
using 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
            {

                Excel.Application obj = default(Excel.Application);
                Excel.Workbook objWB = default(Excel.Workbook);
                string strFirstSheetName = null;
                obj = (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 = ((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

原创粉丝点击