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#学习笔记 ODBC 操作Excel

1,ODBC->开放数据库连接(Open Database Connectivity,ODBC)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)...
  • FairyTailQ
  • FairyTailQ
  • 2016年06月21日 10:59
  • 3252

C# 嵌入Excel、winform 嵌入Ecxel 、.net 嵌入 Excel、winform 打开 Excel、webBrowser打开Excel (转)

 转自:http://www.cnblogs.com/ok519/archive/2009/09/21/1570903.html  最近开发 Winform 应用程序,涉及到 嵌入Excel 文件。技...
  • zhengzhichen
  • zhengzhichen
  • 2009年11月27日 17:13
  • 1825

MFC加载EXCEL代码

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

C# 操作excel 常见问题解决方案

1、C#与excel互操作的错误无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的 COM 对象强制 如果您使用的电脑要操作的是offi...
  • zk_1949
  • zk_1949
  • 2014年08月26日 10:58
  • 1614

C# 加载 Excel

   DataTable dt = new DataTable();  string strCon = " Provider = Microsoft.Jet.OLEDB.4.0 ; Data Sour...
  • hujiajun120
  • hujiajun120
  • 2010年04月08日 17:57
  • 263

用C#写Excel插件

对Excel插件的开发,目的是在工具栏中添加一个外部程序,点击这个外部程序,可以将当前的Sheet数据获取到并保存到另外一个sheet里面;主要注意两方面: 一、Excel插件外部程序建立向导,具体...
  • wangyong0921
  • wangyong0921
  • 2012年12月03日 17:42
  • 3005

C#读取和导出EXCEL类库(可操作多个SHEET)

改进的一个EXCEL类,可以读取EXCEL,也可以将内容导出到EXCEL.操作多个SHEET比较方便. 而且无须安装任何EXCEL. 1.读取. public void Read(str...
  • hwm831002
  • hwm831002
  • 2013年09月30日 10:59
  • 6839

C# 实现Excel导出 加载模板 导入数据到模板

前些天公司做了个项目,遇到要导出数据到Excel,并要求有格式,不用客户在去排版。本来用水晶报表之类的插件,做这个比较好,公司不愿掏钱,只好自己写程序去实现。 关于格式的控制有两种方案:一、填充数据时...
  • rubychen410
  • rubychen410
  • 2010年04月23日 14:58
  • 7678

Excel数据,dataGridview, openFileDialog

从Excel中读取数据,在WinForm界面的DataGridView中进行显示。使用的Excel2007;  private void btnOpen_Click(object sender, E...
  • u012142423
  • u012142423
  • 2013年09月16日 11:13
  • 1349

C# 用spreadsheet打开excel文件

using System.IO; using Microsoft.Office.Core; using Excel = Microsoft.Office.Interop.Excel; pub...
  • evanyanglibo
  • evanyanglibo
  • 2015年08月27日 16:36
  • 1125
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c#加载Excel
举报原因:
原因补充:

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