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
  • 相关阅读:
    js数组扁平化
    react 监听页面滚动
    package.json 里的 dependencies和devDependencies区别
    背景图自适应屏幕居中显示,且不变形
    antd table 点击行触发radio 或 checkbox
    使用antd Table + mobx 处理数组 出现的一系列问题
    定时刷新页面或请求接口
    添加索引,联合唯一索引
    添加 查看 和删除 索引
    phpEXCEL如何设置单元格格式为百分比
  • 原文地址:https://www.cnblogs.com/downmoon/p/1671919.html
Copyright © 2011-2022 走看看