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#加载Excel

using System; using System.Collections.Generic; using System.Text; namespace ConsoleApplication...

添加或删除Excel2010加载项

★激活Excel加载项     单击“文件”选项卡,单击“选项”,然后单击“加载项”类别。在“管理”框中,单击“Excel加载项”,然后单击“转到”。此时将显示“加载项”对话框,在“可用加载项”框...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

MFC加载EXCEL代码

9:09|  分类: 默认分类|字号 订阅 一直以来就对EXCEL的各种功能很崇拜,后来经常使用VC,由于工作的需要,经常会遇到将文本文件中的庞大数据提取到Excel...

MFC加载EXCEL代码

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

C# 给Excel添加水印

我们知道Microsoft Excel并没有内置的功能直接给Excel表添加水印,但是其实我们可以用其他变通的方式来解决此问题,如通过添加页眉图片或艺术字的方法来模仿水印的外观。所以在这篇文章中,我将...

【C#】延迟加载

延迟加载

通过Excel加载菜单栏

Platfor:Win7 Compiler:VS2010 使用第三方控件:Component One 新建一个窗体,在窗体上拖两个控件: C1MainMenu和c1CommandDoc...

Java创建excel表格并下载

public void toExcel(HttpServletResponse response){ //创建工作薄 WritableWorkbook book = null; //创建工...

动态链接库DLL的加载:隐式加载(载入时加载)和显式加载(运行时加载)

静态链接库在链接时,编译器会将 .obj 文件和 .LIB 文件组织成一个 .exe 文件,程序运行时,将全部数据加载到内存。 如果程序体积较大,功能较为复杂,那么加载到内存中的时间就会比较长,...

位图加载

本文要点: ⑴getDC与beginpa的区别 ⑵LoadBitmap的使用方法介绍 ⑶SelectObject的使用方法介绍 ⑷hbitmap与bitmap的区别 ⑸b...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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