c#读取Excel的第一个Sheet表

有朋友问道:

代码
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[] { nullnullnull"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
如图:
邀月工作室
添加代码:
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
            {
                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

 

posted @ 2010-02-23 14:25  邀月  阅读(9556)  评论(7编辑  收藏  举报