zoukankan      html  css  js  c++  java
  • 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

    邀月注:本文版权由邀月和博客园共同所有,转载请注明出处。
    助人等于自助!  3w@live.cn
  • 相关阅读:
    idea修改代码没法实时编译终极解决方案
    linux 安装 hadoop
    linux克隆虚拟机后需要修改的点
    多线程第一篇
    windows搭建ftp环境
    第8章PostGIS参考
    postgis 简单应用
    linux 安装postgresql
    复杂度分析(下)
    复杂度分析(上)
  • 原文地址:https://www.cnblogs.com/downmoon/p/1671919.html
Copyright © 2011-2022 走看看