c#加载Excel

原创 2012年03月30日 14:44:39
using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{
    public class ExcelHelper
    {
        private Excel._Application excelApp;
        private string fileName = string.Empty;
        public Excel.WorkbookClass wbclass;
        public ExcelHelper(string _filename)
        {
            excelApp = new Excel.Application();
            object objOpt = System.Reflection.Missing.Value;
            wbclass = (Excel.WorkbookClass)excelApp.Workbooks.Open(_filename, objOpt, false, objOpt, objOpt, objOpt, true, objOpt, objOpt, true, objOpt, objOpt, objOpt, objOpt, objOpt);
        }
        /**/
        /// <summary>
        /// 所有sheet的名称列表
        /// </summary>
        /// <returns></returns>
        public List<string> GetSheetNames()
        {
            List<string> list = new List<string>();
            Excel.Sheets sheets = wbclass.Worksheets;
            string sheetNams = string.Empty;
            foreach (Excel.Worksheet sheet in sheets)
            {
                list.Add(sheet.Name);
            }
            return list;
        }
        public Excel.Worksheet GetWorksheetByName(string name)
        {
            Excel.Worksheet sheet = null;
            Excel.Sheets sheets = wbclass.Worksheets;
            foreach (Excel.Worksheet s in sheets)
            {
                if (s.Name == name)
                {
                    sheet = s;
                    break;
                }
            }
            return sheet;
        }
        /**/
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sheetName">sheet名称</param>
        /// <returns></returns>
        public Array GetContent(string sheetName)
        {
            Excel.Worksheet sheet = GetWorksheetByName(sheetName);
            //获取A1 到AM24范围的单元格
            Excel.Range rang = sheet.get_Range("A1", "AM24");
            //读一个单元格内容
            //sheet.get_Range("A1", Type.Missing);
            //不为空的区域,列,行数目
            //   int l = sheet.UsedRange.Columns.Count;
            // int w = sheet.UsedRange.Rows.Count;
            //  object[,] dell = sheet.UsedRange.get_Value(Missing.Value) as object[,];
            System.Array values = (Array)rang.Cells.Value2;
            return values;
        }

        public void Close()
        {
            excelApp.Quit();
            excelApp = null;
        }

    }
}

 

using System;
using System.Collections.Generic;
using System.Text;

namespace ConsoleApplication1
{

    public struct stWorldMapCfg
    {
        public int MapId;//地图id
        public string MapName;//地图名
    }

    /************************************************************************/
    /* 
     * 
     * 使用例子
      static void test_WorldMapCfg()
        {
            WorldMapCfg maplist = new WorldMapCfg("c:\\WorldMapCfg.xls");

            Console.WriteLine(maplist.GetWorldMapCfg(7).MapName);

        }
     * 
     */
    /************************************************************************/

    public class WorldMapCfg
    {
        public WorldMapCfg(string _filename)
        {
            LoadWorldMapCfg(_filename);
        }


        public List<stWorldMapCfg> m_list;

        static int ToInt(object o)
        {
            if (o is int)
                return (int)o;
            else if (o is short)
                return (int)(short)o;
            else if (o is byte)
                return (int)(byte)o;
            else if (o is long)
                return (int)(long)o;
            else if (o is double)
                return (int)(double)o;
            else if (o is float)
                return (int)(float)o;
            else if (o is decimal)
                return (int)(decimal)o;
            else if (o is uint)
                return (int)(uint)o;
            else if (o is ushort)
                return (int)(ushort)o;
            else if (o is ulong)
                return (int)(ulong)o;
            else if (o is sbyte)
                return (int)(sbyte)o;
            else
                return (int)double.Parse(o.ToString());
        }

        public stWorldMapCfg GetWorldMapCfg(int MapId)
        {

            foreach (stWorldMapCfg map in m_list)
            {
                if (map.MapId == MapId)
                {
                    return map;
                }
            }

            stWorldMapCfg ret = new stWorldMapCfg();
            ret.MapName = "找不到";
            ret.MapId = -1;
            return ret;
        }

        public int MapNameToID(string Mapname)
        {

            foreach (stWorldMapCfg map in m_list)
            {

                if ( map.MapName == Mapname )
                {
                    return map.MapId;
                }
            }

 
            return -1;
        }

        private void  LoadWorldMapCfg(string path)
        {
            m_list = new List<stWorldMapCfg>();

            stWorldMapCfg map = new stWorldMapCfg();

            ExcelHelper h = new ExcelHelper(path);

            Excel.Worksheet sheet = h.GetWorksheetByName("WorldMapCfg");


            for (int row = 3; row <= sheet.UsedRange.Rows.Count; row++)
            {
                Excel.Range rng2 = (Excel.Range)sheet.Cells[row, 1];

                Excel.Range rng3 = (Excel.Range)sheet.Cells[row, 2];

                try
                {
                    map.MapId = ToInt(rng2.Value2);
                    map.MapName = (string)rng3.Value2;
                    m_list.Add(map);
                }
                catch (System.Exception e)
                {
                    //Console.WriteLine(row + " ex");
                }

            }

            h.Close();
            h = null;
 
        }




    }
}


以上

相关文章推荐

C# WinForm窗体加载Excel、Word文件

  • 2014年03月19日 13:03
  • 2.23MB
  • 下载

C#导入Excel2010出现加载DLL失败或者类库未注册的问题,0x8002801D或者0x80029C4A

最近在客户机器上出现了无法导出报表的问题,错误提示为: System.InvalidCastException: Unable to cast COM object of type 'Microso...

Excel2007 VBA 加载项增加菜单

  • 2017年06月15日 10:01
  • 145KB
  • 下载

Excel POI通过模版的方式加载数据

Excel模版如上,可以通过模版进行Excel样式加载,常量设置       ---------------------------------------Excel模版类--------------...

安卓加载excel数据并导出

  • 2017年08月25日 11:58
  • 7.01MB
  • 下载

EXCEL工具栏加载项(含源码)

  • 2010年09月04日 10:52
  • 1.47MB
  • 下载

MFC加载EXCEL代码

1。首先按照常规的方式建立对话框的MFC应用程序,然后添加类,也就是我们需要进行数据处理的类。由于只涉及到字符转换和数字提取,我建的是常规类,没有基类。 2。既然要使用EXCEL的各种功能,...

VC加载Excel模板生成报表

  • 2012年04月09日 17:03
  • 2.24MB
  • 下载

EXCEL加载模板生成报表范例

  • 2008年09月10日 10:43
  • 98KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#加载Excel
举报原因:
原因补充:

(最多只允许输入30个字)