扩展阅读
  • java命名空间javax.net类socketfactory的类成员方法: createsocket定义及介绍
  • .NET版的ExtJS库 Ext.Net
  • java命名空间java.net类datagramsocket的类成员方法: disconnect定义及介绍
  • node.js的.net扩展 node.net
  • java命名空间java.net类datagramsocket的类成员方法: close定义及介绍
  • 为什么输http://www.china-java.net,会自动改为http://www.china-java.net:8081?
  • java命名空间java.net接口cookiestore的类成员方法: get定义及介绍
  • 各位之不知道net-snmp是否收费?我的产品中用到了net-snmp lib是否需要向什么单位或者组织付费?
  • java命名空间java.net类socket的类成员方法: isbound定义及介绍
  • 【人才】有没有人会用VC6.0/VS2003.NET/VS2005.NET写WINDOWS下的驱动程序呀。
  • java命名空间java.net类datagrampacket的类成员方法: getsocketaddress定义及介绍
  • Java.NET or J#.NET is coming!
  • java命名空间java.net类multicastsocket的类成员方法: getinterface定义及介绍
  • make menuconfig时出错:net/Kconfig:221:can't open file "net/wireless/Kconfig"
  • java命名空间java.net枚举proxy.type的类成员方法: http定义及介绍
  • 用过net-snmp(ucd-snmp)的大侠用过net-snmp(ucd-snmp)请进(来者有分)
  • java命名空间java.net类urisyntaxexception的类成员方法: getreason定义及介绍
  • 常用.NET工具(包括.NET可再发行包2.0)下载
  • java命名空间java.net类httpretryexception的类成员方法: getreason定义及介绍
  • Ja.Net
  • java命名空间java.net类httpretryexception的类成员方法: getlocation定义及介绍
  • asp.net判断数据库表是否存在 asp.net修改表名的方法
  •  
    当前位置:  编程语言>c#/asp.net

    .NET下 c#通过COM组件操作并导出Excel实例代码

     
    分享到:
        发布时间:2014-1-15  


        本文导语: .NET下 c#通过COM组件操作并导出Excel实例代码.NET操作Excel表格的整理 首先需要引用一个COM引用: Microsoft Excel 11.0 Object Library. 在程序代码中添加命名空间Microsoft.Office.Interop.Excel的引用. 然后就可以跟Excel进行操作了.基本的E...

    .netc#通过com组件操作并导出excel实例代码

    .NET操作Excel表格整理

        首先需要引用一个COM引用: Microsoft Excel 11.0 Object Library. 在程序代码中添加命名空间Microsoft.Office.Interop.Excel的引用. 然后就可以跟Excel进行操作了.

    基本的Excel对象

    Application: 每个Application对象表示一个Excel程序, 在程序中每创建一个该对象就启动Excel程序的一个实例

    Workbook: 每个Workbook对象表示一个Excel工作薄, 在同一个Excel程序中可以打开多个工作薄

    Worksheet: 每个Worksheet对象表示一个Excle工作表, 在同一个Excel工作薄中可以打开多个工作表

    Range: 每个Range对象表示Excel工作表上的一个区域, 该区域可以是一个单元格, 也可以是多个单元格的组合. 区域可以是连续的, 也可以是离散的

    简单的代码实现对Excel的操作

    private void button1_click(object sender, EventArgs e)
    {
       Microsoft.Office.Interop.Excel.Application app1 = new Microsoft.Office.Interop.Excel.Application
    ();
       app1.visible = true;
       Workbook book1 = app1.Workbooks.Add(Type.Missing);
       Wroksheet sheet1 = (Worksheet)book1.Sheets[1];
       Range rng1 = sheet1.get_Range("A1", Type.Missing);
       rng.Value2 = "hello";
    }

         这样点击按钮之后就会发现新建了一个Excel, 这个Excel里有一个表格, 在A1的单元格里显示文本hello.    

    Workbook book1 = app1.Workbooks.Add(Type.Missing);

           除了Add这个方法外, 如果想打开一个已经存在的表格, 并对它进行操作, 可以使用Open方法.

           获取区域值的方法, 返回的是一个Object类型的数组:      

    sheet1.get_Range("B2", Type.Missing);  //返回B2单元格
    sheet1.get_Range("A1:C10", Type.Missing);  //返回左上角A1到右下角C10区域单元格
    sheet1.get_Range("A1", "C10);  //和上一行效果一样(左上角A1到右下角C10区域单元格)
    sheet1.get_Range("A:A", Type.Missing);  //返回整个A列
    sheet1.get_Range("A:C", Type.Missing);  //返回A到C列
    sheet1.get_Range("3:3", Type.Missing);  //返回A到C列
    sheet1.get_Range("A1:A5, C1:C5", Type.Missing);  //返回两个独立的区域

           除了获取一个区域的值, 获得单个单元格值的方法:

    Range rng1 = (Range)sheet1.Cells[1, 1];   //获取A1单元格
    Range rng2 = (Range)sheet1.Cells[3, "C];   //获取C3单元格
    Range rng3 = (Range)sheet1.Cells[2, Type.Missing];   //获取B1单元格

           Range对象除了Value2属性, 还有Value属性, 只有当涉及日期和货币格式才使用这个属性. 否则, 为保持程序简洁和一致性, 应该使用Value2属性.

           Range对象还有个只读属性: Text, 该属性虽然是Object类型的, 但所有值类型都是按文本方式进行处理的. 所以在使用这个Text属性时, 如果已经确定这个文本的数据类型时, 可以使用Parse方法把文本转变成该数据类型. 如果不能确定, 则可以使用TryParse方法. 除此之外, Range对象中如果某个或某些单元格的值全为数字, 而我们不想按数字来处理这些值, 想把它转变成文本或是其它格式. 可以使用Range的NumberFormat属性.

           操作Excel表格, 还有个专门的控件叫做SpreedSheet控件, 不过在我做东西的时候, 想把日期格式的数据正确显示在这个控件中出现了不少问题, 最后还是舍弃了使用这个控件. 最后还是选择了比较常见的DataGridView

    .NET导出Excel实例代码

    代码如下:

    public static void CreateExcel(DataSet ds)
            {
                string filename = DateTime.Now.ToString("yyyyMMddHHmmssff") + ".xls";
                HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
                HttpContext.Current.Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);
                string colHeaders = "", ls_item = "";
                //定义表对象与行对象,同时用DataSet对其值进行初始化
                DataTable dt = ds.Tables[0];
                DataRow[] myRow = dt.Select();//可以类似dt.Select("id>10")之形式达到数据筛选目的
                int i = 0;
                int cl = dt.Columns.Count;
                //取得数据表各列标题,各标题之间以t分割,最后一个列标题后加回车符
                for (i = 0; i < cl; i++)
                {
                    if (i == (cl - 1))//最后一列,加n
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "n";
                    }
                    else
                    {
                        colHeaders += dt.Columns[i].Caption.ToString() + "t";
                    }
                }
                HttpContext.Current.Response.Write(colHeaders);
                //向HTTP输出流中写入取得的数据信息
                //逐行处理数据 
                foreach (DataRow row in myRow)
                {
                    //当前行数据写入HTTP输出流,并且置空ls_item以便下行数据   
                    for (i = 0; i < cl; i++)
                    {
                        if (i == (cl - 1))//最后一列,加n
                        {
                            ls_item += row[i].ToString() + "n";
                        }
                        else
                        {
                            ls_item += row[i].ToString() + "t";
                        }
                    }
                    HttpContext.Current.Response.Write(ls_item);
                    ls_item = "";
                }
                HttpContext.Current.Response.End();
            }
    • 本站(WWW.169IT.COM)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
      本站(WWW.169IT.COM)站内文章除注明原创外,均为转载,整理或搜集自网络.欢迎任何形式的转载,转载请注明出处.
      转载请注明:文章转载自:[169IT-IT技术资讯]
      本文标题:.NET下 c#通过COM组件操作并导出Excel实例代码
    相关文章推荐:


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

    浙ICP备11055608号