您的位置:程序门 -> .net技术 -> asp.net



数据导出到excel模板 100分 求救啊!!!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


数据导出到excel模板 100分 求救啊!!!
发表于:2007-12-04 15:37:03 楼主
要将数据库中的数据导出到excel模板中     c#2005   sql   2005     经理要做成通用的组件,。。。。

而且数据可能不在一个表中   比如一个表里存的是一个数据的代码而另一个表里存的是汉字

哪位仁兄   给个完整的例子啊   !!!!!!
发表于:2007-12-04 16:19:381楼 得分:0
100分的帖子没人理啊

没天理啦!!!!!!!1
发表于:2007-12-04 16:26:462楼 得分:0
工期紧张啊     郁闷   !!!!!
发表于:2007-12-04 16:28:023楼 得分:0
将数据库中的数据导出到excel模板中   这个还知道,但是要做成通用的组件,。。。。  

而且数据可能不在一个表中       比如一个表里存的是一个数据的代码而另一个表里存的是汉字  


这句话偶看不懂,你是要什么样。。的
发表于:2007-12-04 16:31:214楼 得分:0
不懂的那句就不用管了    

就是几个关联的表里的数据呗  

知道的说说撒
发表于:2007-12-04 17:06:365楼 得分:0
        protected   void   cmdexport_click(object   sender,   eventargs   e)
        {
                string   path   =   server.mappath("../");
                string   templatename   =   path   +   "\\template\\customer.xls";

                string   filen   =   system.datetime.now.tostring("yyyymmddhhmmss")   +   ".xls";
                string   exportpath   =   path   +   "export";
                if   (!system.io.directory.exists(exportpath))
                {
                        system.io.directory.createdirectory(exportpath);
                }

                string   filename   =   exportpath   +   "\\"   +   filen;


                if   (system.io.file.exists(filename))
                {
                        system.io.file.delete(filename);
                }

                excelbase   myexcelbase   =   new   excelbase();
                myexcelbase.open(templatename);

                int   i   =   1;

                cop_customer   mycop_customer   =   new   cop_customer();//从数据层读数据,你要的不同表数据就可以直接写到数据层的方法里了
                datatable   dt_customer   =   mycop_customer.getall();
                foreach   (datarow   dr   in   dt_customer.rows)
                {
                        i++;
                        //myexcelbase.setcelltext(i,   1,   dr["cust_id"].tostring());
                        //myexcelbase.setcelltext(i,   2,   dr["companyno"].tostring());
                        //myexcelbase.setcelltext(i,   3,   dr["cust_customertype"].tostring());
                        //myexcelbase.setcelltext(i,   4,   dr["cust_customerno"].tostring());
                        myexcelbase.setcelltext(i,   1,   dr["cust_customername"].tostring());
                        myexcelbase.setcelltext(i,   2,   dr["cust_shortname"].tostring());
                        myexcelbase.setcelltext(i,   3,   dr["cust_code"].tostring());
                        myexcelbase.setcelltext(i,   4,   dr["cust_linkman"].tostring());
                        myexcelbase.setcelltext(i,   5,   dr["cust_telephone"].tostring());
                        myexcelbase.setcelltext(i,   6,   dr["cust_fax"].tostring());
                        myexcelbase.setcelltext(i,   7,   dr["cust_email"].tostring());
                        myexcelbase.setcelltext(i,   8,   dr["cust_acceptaddress"].tostring());
                        myexcelbase.setcelltext(i,   9,   dr["cust_freightcompany"].tostring());
                        myexcelbase.setcelltext(i,   10,   dr["cust_invoicepoint"].tostring());
                        myexcelbase.setcelltext(i,   11,   dr["cust_iscontaintax"].tostring());
                        myexcelbase.setcelltext(i,   12,   dr["cust_credibility"].tostring());
                }


                myexcelbase.saveas(filename);
                myexcelbase.dispose();
                response.redirect("../export/"   +   filen);

        }
发表于:2007-12-04 17:11:016楼 得分:0
excel调用的那方法发不上来,太长了,晕
发表于:2007-12-04 17:12:447楼 得分:0
namespace   excelclass
{
        ///   <summary>
        ///  
        ///   </summary>
        public   class   excelbase
        {
                #region   "   private   variable   definition   "

                private   application   exlapp;
                private   _workbook   exlworkbook;
                private   _worksheet   exlworksheet;
                private   int   sheetnumber   =   1;

                #endregion

                #region   "   public   property   and   constant   definition   "

                ///   <summary>
                ///   excel单元格边框的线条的粗细枚举
                ///   </summary>
                public   enum   excelborderweight
                {
                        ///   <summary>
                        ///   极细的线条
                        ///   </summary>
                        hairline   =   excel.xlborderweight.xlhairline,
                        ///   <summary>
                        ///   中等的线条
                        ///   </summary>
                        medium   =   excel.xlborderweight.xlmedium,
                        ///   <summary>
                        ///   粗线条
                        ///   </summary>
                        thick   =   excel.xlborderweight.xlthick,
                        ///   <summary>
                        ///   细线条
                        ///   </summary>
                        thin   =   excel.xlborderweight.xlthin
                }

                ///   <summary>
                ///   excel单元格边框枚举
                ///   </summary>
                public   enum   excelbordersindex
                {
                        ///   <summary>
                        ///   主对角线从
                        ///   </summary>
                        diagonaldown   =   excel.xlbordersindex.xldiagonaldown,
                        ///   <summary>
                        ///   辅对角线
                        ///   </summary>
                        diagonup   =   excel.xlbordersindex.xldiagonalup,
                        ///   <summary>
                        ///底边框
                        ///   </summary>
                        edgebottom   =   excel.xlbordersindex.xledgebottom,
                        ///   <summary>
                        ///   左边框
                        ///   </summary>
                        edgeleft   =   excel.xlbordersindex.xledgeleft,
                        ///   <summary>
                        ///   右边框
                        ///   </summary>
                        edgeright   =   excel.xlbordersindex.xledgeright,
                        ///   <summary>
                        ///   顶边框
                        ///   </summary>
                        edgetop   =   excel.xlbordersindex.xledgetop,
                        ///   <summary>
                        ///   边框内水平横线
                        ///   </summary>
                        insidehorizontal   =   excel.xlbordersindex.xlinsidehorizontal,
                        ///   <summary>
                        ///   边框内垂直竖线
                        ///   </summary>
                        insidevertical   =   excel.xlbordersindex.xlinsidevertical
                }

                ///   <summary>
                ///   excel单元格的竖直方法对齐枚举
                ///   </summary>
                public   enum   excelverticalalignment
                {
                        ///   <summary>
                        ///   居中
                        ///   </summary>
                        center   =   excel.constants.xlcenter,
                        ///   <summary>
                        ///   靠上
                        ///   </summary>
                        top   =   excel.constants.xltop,
                        ///   <summary>
                        ///   靠下
                        ///   </summary>
                        bottom   =   excel.constants.xlbottom,
                        ///   <summary>
                        ///   两端对齐
                        ///   </summary>
                        justify   =   excel.constants.xljustify,
                        ///   <summary>
                        ///   分散对齐
                        ///   </summary>
                        distributed   =   excel.constants.xldistributed

                };

                ///   <summary>
                ///   excel   水平方向对齐枚举
                ///   </summary>
                public   enum   excelhorizontalalignment
                {
                        ///   <summary>
                        ///常规
                        ///   </summary>
                        general   =   excel.constants.xlgeneral,
                        ///   <summary>
                        ///   靠左
                        ///   </summary>
                        left   =   excel.constants.xlleft,
                        ///   <summary>
                        ///   居中
                        ///   </summary>
                        center   =   excel.constants.xlcenter,
                        ///   <summary>
                        ///   靠右
                        ///   </summary>
                        right   =   excel.constants.xlright,
                        ///   <summary>
                        ///   填充
                        ///   </summary>
                        fill   =   excel.constants.xlfill,
                        ///   <summary>
                        ///   两端对齐
                        ///   </summary>
                        justify   =   excel.constants.xljustify,
                        ///   <summary>
                        ///   跨列居中
                        ///   </summary>
                        centeracrossselection   =   excel.constants.xlcenteracrossselection,
                        ///   <summary>
                        ///   分散对齐
                        ///   </summary>
                        distributed   =   excel.constants.xldistributed

                }


                ///   <summary>
                ///   excel边框线条的枚举
                ///   </summary>
                public   enum   excelstyleline
                {
                        ///   <summary>
                        ///   没有线条
                        ///   </summary>
                        stylenone   =   excel.xllinestyle.xllinestylenone,
                        ///   <summary>
                        ///   连续的细线
                        ///   </summary>
                        continious   =   excel.xllinestyle.xlcontinuous,
                        ///   <summary>
                        ///   点状线
                        ///   </summary>
                        dot   =   excel.xllinestyle.xldot,
                        ///   <summary>
                        ///   双条线
                        ///   </summary>
                        double   =   excel.xllinestyle.xldouble,
                }

                ///   <summary>
                ///   排序的玫举
                ///   </summary>
                public   enum   excelsortorder
                {
                        ///   <summary>
                        ///   升序
                        ///   </summary>
                        ascending   =   excel.xlsortorder.xlascending,
                        ///   <summary>
                        ///   降序
                        ///   </summary>
                        descending   =   excel.xlsortorder.xldescending,
                }


                #endregion
发表于:2007-12-04 17:14:188楼 得分:0
                #region   "   construction   method   "

                ///   <summary>
                ///   构造函数
                ///   </summary>
                public   excelbase()
                {
                        //实例化excel对象。
                        exlapp   =   new   excel.application();
                }

                ///   <summary>
                ///   构造函数
                ///   </summary>
                ///   <param   name="excelvisible"> excel是否可见 </param>
                public   excelbase(bool   excelvisible)
                {
                        exlapp   =   new   excel.application();
                        exlapp.visible   =   excelvisible;
                }

                #endregion

                #region   "   open   and   dispose   method   definition   "

                ///   <summary>
                ///   打开一个excel文件
                ///   </summary>
                public   void   open()
                {
                        //get   a   new   worksheet  
                        exlworkbook   =   (workbook)exlapp.workbooks.add(missing.value);
                        exlworksheet   =   (worksheet)exlworkbook.activesheet;
                }

                ///   <summary>
                ///   打开已经存在的excel文件模版
                ///   </summary>
                ///   <param   name="xltpath"> 已经存在的文件模版的完整路径 </param>
                public   void   open(string   xltpath)
                {
                        if   (system.io.file.exists(xltpath))
                        {
                                exlworkbook   =   (workbook)exlapp.workbooks.add(xltpath);
                                exlworksheet   =   (worksheet)exlworkbook.activesheet;
                        }
                        else
                        {
                                throw   new   system.io.filenotfoundexception(string.format("{0}不存在,请重新确定文件名",   xltpath));
                        }
                }

                ///   <summary>
                ///   保存excel文件
                ///   </summary>
                ///   <param   name="filename"> 保存的文件名 </param>
                public   void   saveas(string   filename)
                {
                        exlworksheet.saveas(filename,   missing.value,   missing.value,   missing.value,   false,   false,   excel.xlsaveasaccessmode.xlnochange,   missing.value,   missing.value,   missing.value);
                }

                ///   <summary>
                ///   彻底关闭excel的资源和进程
                ///   </summary>
                public   void   dispose()
                {
                        if   (exlapp   !=   null)
                        {
                                exlapp.quit();
                        }
                        if   (exlworkbook   !=   null)
                        {
                                system.runtime.interopservices.marshal.releasecomobject(exlworkbook);
                                exlworkbook   =   null;
                        }
                        system.runtime.interopservices.marshal.releasecomobject(exlworksheet);
                        exlworksheet   =   null;
                        system.runtime.interopservices.marshal.releasecomobject(exlapp);
                        exlapp   =   null;
                        gc.collect();
                }
                #endregion

                #region   "   print   and   printpreview   method   definition   "

                ///   <summary>
                ///   打印excel文件,可以设置是否是打印前预览打印的excel文件
                ///   </summary>
                ///   <param   name="isprintpreview"> 打印前是否预览   ,   true:打印前预览false:直接打印,不预览   </param>
                public   void   print(bool   isprintpreview)
                {
                        bool   flag   =   exlapp.visible;
                        if   (exlapp.visible)
                        {
                                exlapp.visible   =   true;
                        }
                        exlworksheet.printout(missing.value,   missing.value,   missing.value,   isprintpreview,   missing.value,   missing.value,   missing.value,   missing.value);
                        exlapp.visible   =   flag;
                }

                ///   <summary>
                ///   打印excel文件,可以设置是否打印预览,以及打印的份数
                ///   </summary>
                ///   <param   name="isprintpreview"> 打印前是否预览   ,   true:打印前预览false:直接打印,不预览 </param>
                ///   <param   name="icopy"> 打印的份数 </param>
                public   void   print(bool   isprintpreview,   int   icopy)
                {
                        if   (icopy   <   1)
                        {
                                icopy   =   1;
                        }
                        exlworksheet.printout(missing.value,   missing.value,   missing.value,   isprintpreview,   icopy,   missing.value,   missing.value,   missing.value);
                }

                ///   <summary>
                ///   打印预览excel文件
                ///   </summary>
                public   void   printpreview()
                {
                        exlworksheet.printpreview(missing.value);
                }

                #endregion

                #region   "   detail   control   excel   method   "

                ///   <summary>
                ///   将excel隐藏
                ///   </summary>
                public   void   hide()
                {
                        exlapp.visible   =   false;
                }

                ///   <summary>
                ///   将excel显示
                ///   </summary>
                public   void   show()
                {
                        exlapp.visible   =   true;
                }

                ///   <summary>
                ///   设置工作簿的名称
                ///   </summary>
                ///   <param   name="worksheet"> </param>
                public   void   setworksheetname(string   worksheet)
                {
                        exlworksheet.name   =   worksheet;
                }

                ///   <summary>
                ///返回指定单元格的内容  
                ///   </summary>
                ///   <param   name="irow"> 定位的行 </param>
                ///   <param   name="icol"> 定位的列 </param>
                ///   <returns> 返回指定单元格的内容 </returns>
                public   string   getcelltext(int   irow,   int   icol)
                {
                        range   srange   =   getrange(irow,   icol,   irow,   icol);
                        string   returntext   =   (string)srange.text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                        return   returntext;
                }

  ///   <summary>
                ///返回指定单元格的内容  
                ///   </summary>
                ///   <param   name="irow"> 定位的行 </param>
                ///   <param   name="icol"> 定位的列 </param>
                ///   <returns> 返回指定单元格的内容 </returns>
                public   string   getcelltext(int   startrow,int   startcol,int   startrow2,   int   startcol2)
                {
                        range   srange   =   getrange(startrow,   startcol,   startrow2,   startcol2);
                        string   returntext   =   (string)srange.text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                        return   returntext;
                }
               

                ///   <summary>
                ///   设置指定范围单元格的内容,通过单元格,比如从"a1"   到   "b3"
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格,比如"a1" </param>
                ///   <param   name="endcell"> 结束的单元格,比如"b2" </param> 机动车统计表.xlt
                ///   <param   name="text"> 要设置的内容,可以使用excel的公式 </param>
                public   void   setcelltext(string   startcell,   string   endcell,   string   text)
                {
                        range   srange   =   exlworksheet.get_range(startcell,   endcell);
                        //这里没有用value属性,而用formula属性,因为考虑到可以扩展,可以利用公式
                        srange.cells.formula   =   text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定范围单元格的内容,通过单元格,比如从"a1"   到   "b3"
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格,比如"a1" </param>
                ///   <param   name="endcell"> 结束的单元格,比如"b2" </param> 机动车统计表.xlt
                ///   <param   name="text"> 要设置的内容,可以使用excel的公式 </param>
                public   void   setcelltext(string   startcell,   string   endcell,   int   text)
                {
                        range   srange   =   exlworksheet.get_range(startcell,   endcell);
                        //这里没有用value属性,而用formula属性,因为考虑到可以扩展,可以利用公式
                        srange.cells.formula   =   text.tostring();
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
发表于:2007-12-04 17:14:469楼 得分:0
                ///   <summary>
                ///   设置指定范围的单元格的内容,通过行列来定位。如第1行第2列内容
                ///   </summary>
                ///   <param   name="irow"> 开始的行 </param>
                ///   <param   name="icol"> 开始的列 </param>
                /// <param   name="text"> 要设置的文本,可以使用excel的公式 </param>
                public   void   setcelltext(int   irow,   int   icol,   string   text)
                {
                        range   srange   =   this.getrange(irow,   icol,   irow,   icol);
                        srange.cells.formula   =   text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }


                ///   <summary>
                ///   设置指定范围的单元格的内容,通过行列来定位。如第1行第2列内容
                ///   </summary>
                ///   <param   name="irow"> 开始的行 </param>
                ///   <param   name="icol"> 开始的列 </param>
                /// <param   name="text"> 要设置的文本,可以使用excel的公式 </param>
                public   void   setcelltextnozero(int   irow,   int   icol,   string   text)
                {
                        string   txt   =   "";
                        try
                        {
                                if   (system.convert.toint32(text)   ==   0)
                                {
                                        txt   =   "";
                                }
                                else
                                {
                                        txt   =   text;
                                }
                        }
                        catch
                        {
                                txt   =   text;
                        }


                        range   srange   =   this.getrange(irow,   icol,   irow,   icol);
                        srange.cells.formula   =   txt;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;

                }

                ///   <summary>
                ///   设置指定范围的单元格的内容,通过行列来定位。如第1行第2列内容
                ///   </summary>
                ///   <param   name="irow"> 开始的行 </param>
                ///   <param   name="icol"> 开始的列 </param>
                /// <param   name="text"> 要设置的文本,可以使用excel的公式 </param>
                public   void   setcelltext(int   irow,   int   icol,   int   text)
                {
                        range   srange   =   this.getrange(irow,   icol,   irow,   icol);
                        srange.cells.formula   =   text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
                ///   <summary>
                ///   设置指定单元格的内容,比如设置"a1"单元格的内容
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <param   name="text"> 要设置的内容,可以使用excel的公式,如sum(a1:a7)--合计a1到a7数值 </param>
                public   void   setcelltext(string   cell,   string   text)
                {
                        range   srange   =   getrange(cell);
                        srange.cells.formula   =   text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定单元格的内容
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <param   name="num"> 要设置的内容 </param>
                public   void   setcelltext(string   cell,   int32   num)
                {
                        range   srange   =   getrange(cell);
                        srange.cells.formula   =   num.tostring();
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定单元格的内容,可以指定格式
                ///   </summary>
                ///   <param   name="cell"> 要指定的单元格 </param>
                ///   <param   name="textvalue"> 要填写的内容 </param>
                ///   <param   name="stringformat"> 要显示的格式 </param>
                /// <param   name="fontname"> 设置单元格的字体 </param>
                ///   <param   name="fontsize"> 设置单元格的字体大小 </param>
                public   void   setcelltextbyformat(string   cell,   string   textvalue,   string   stringformat,   string   fontname,   string   fontsize)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        if   (stringformat   !=   "")
                        {
                                srange.numberformatlocal   =   stringformat;
                        }
                        if   (fontname   !=   "")
                        {
                                srange.font.name   =   fontname;
                        }
                        if   (fontsize   !=   "")
                        {
                                srange.font.size   =   fontsize;
                        }
                        srange.cells.formula   =   textvalue;


                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定单元格的内容,可以指定格式
                ///   </summary>
                ///   <param   name="cell"> 要指定的单元格 </param>
                ///   <param   name="textvalue"> 要填写的内容 </param>
                ///   <param   name="stringformat"> 要显示的格式 </param>
                /// <param   name="fontname"> 设置单元格的字体 </param>
                ///   <param   name="fontsize"> 设置单元格的字体大小 </param>
                ///   <param   name="colorindex"> 设置单元格的颜色,我查了msdn但是没有颜色代码的说明,excel中一共有56种颜色的代码,常用的几个是
                ///   1-黑色   2-白色   3-红色   4-草绿色   5-蓝色   6-黄色   7-紫色   ,如果想看仔细的颜色,就依次从   1   循环到   56   把颜色打印出来看看 </param>
                public   void   setcelltextbyformat(string   cell,   string   textvalue,   string   stringformat,   string   fontname,   string   fontsize,   int   colorindex)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        if   (stringformat   !=   "")
                        {
                                srange.cells.numberformatlocal   =   stringformat;
                        }
                        if   (fontname   !=   "")
                        {
                                srange.font.name   =   fontname;
                        }
                        if   (fontsize   !=   "")
                        {
                                srange.font.size   =   fontsize;
                        }
                        if   (colorindex   !=   0)
                        {
                                srange.font.colorindex   =   colorindex;
                        }
                        srange.cells.formula   =   textvalue;

                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
                ///   <summary>
                ///   设置单元格的内容(指定单元格的格式化字符串)
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <param   name="textvalue"> 内容 </param>
                ///   <param   name="stringformat"> 格式化字符串 </param>
                public   void   setcelltext(string   cell,   string   textvalue,   string   stringformat)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        if   (stringformat   !=   "")
                        {
                                srange.cells.numberformatlocal   =   stringformat;
                        }
                        srange.cells.formula   =   textvalue;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
                ///   <summary>
                ///   得到指定单元格的内容
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格比如   a1,a2 </param>
                ///   <returns> 返回指定的内容 </returns>
                public   object   getcelltext(string   cell)
                {
                        object   returnvalue;
                        range   srange   =   getrange(cell);
                        returnvalue   =   srange.cells.text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                        return   returnvalue;
                }

                ///   <summary>
                ///   设置指定单元格的内容,比如设置"a1"单元格的内容
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <param   name="text"> 要设置的内容,使用excel里面的r1c1这样的格式(不知道是不是画蛇添足,因为excel里的macro中是这样使用的) </param>
                public   void   setcelltextr1c1(string   cell,   string   text)
                {
                        range   srange   =   getrange(cell);
                        srange.cells.formular1c1   =   text;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
发表于:2007-12-04 17:15:2610楼 得分:0
                ///   <summary>
                ///设置单元格的单元格格式  
                ///   </summary>
                ///   <param   name="cell"> 要设定的单元格的坐标 </param>
                ///   <param   name="formatstring"> 单元格的格式化字符        
                ///   常规:"g/通用格式"
                ///   数值:"[红色]-0.00"(表示是2位小数,如果是负数的话则用红色表示)
                ///   货币:"¥#,##0.000;[红色]¥-#,##0.000"(¥是货币符号,可以用$,也可以不填写,0.000代表三位小数位;[红色]表示如果是负数的话,用红色表示)
                ///   日期:@"yyyy"年"m"月"d"日";@"         (表示用年月日了表示)                 @"[dbnum1][$-804]yyyy"年"m"月"d"日";@"(表示用汉字表示年月日)
                ///   百分比:"0.000%;[红色]-0.000%"(表示小数位为3位,红色表示如果是负数的话则用红色表示)
                ///   文本:"@"(表示是文本格式)
                ///   特殊:"[dbnum1][$-804]g/通用格式"(能将数字转换成中文小写,如1234转换成一千二百三十四)                 "[dbnum2][$-804]g/通用格式"(能将数字转换成中文大写,如1234转换成   壹仟贰佰叁拾肆)
                ///   自定义:输入自定义的格式化字符串
                ///   </param>
                public   void   setcellformat(string   cell,   string   formatstring)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        srange.numberformatlocal   =   formatstring;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定范围的单元格格式
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格 </param>
                ///   <param   name="endcell"> 结束的单元格 </param>
                ///   <param   name="formatstring"> 单元格的格式化字符        
                ///   常规:"g/通用格式"
                ///   数值:"[红色]-0.00"(表示是2位小数,如果是负数的话则用红色表示)
                ///   货币:"¥#,##0.000;[红色]¥-#,##0.000"(¥是货币符号,可以用$,也可以不填写,0.000代表三位小数位;[红色]表示如果是负数的话,用红色表示)
                ///   日期:@"yyyy"年"m"月"d"日";@"         (表示用年月日了表示)                 @"[dbnum1][$-804]yyyy"年"m"月"d"日";@"(表示用汉字表示年月日)
                ///   百分比:"0.000%;[红色]-0.000%"(表示小数位为3位,红色表示如果是负数的话则用红色表示)
                ///   文本:"@"(表示是文本格式)
                ///   特殊:"[dbnum1][$-804]g/通用格式"(能将数字转换成中文小写,如1234转换成一千二百三十四)                 "[dbnum2][$-804]g/通用格式"(能将数字转换成中文大写,如1234转换成   壹仟贰佰叁拾肆)
                ///   自定义:输入自定义的格式化字符串 </param>
                public   void   setareacellformat(string   startcell,   string   endcell,   string   formatstring)
                {
                        range   srange   =   getrange(startcell,   endcell);
                        srange.select();
                        srange.numberformatlocal   =   formatstring;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置某一列,某几列的列宽为自动适应大小,比如要设置第1列为自动适应大小setcolumnautofit("a","a")
                ///   </summary>
                ///   <param   name="startcolumn"> 开始的列 </param>
                ///   <param   name="endcolumn"> 结束的列 </param>
                ///  
                //todo:stapangpang     要增加自动适应列大小的方法
                public   void   setcolumnautofit(string   startcolumn,   string   endcolumn)
                {
                        range   srange   =   (range)exlworksheet.columns[string.format("{0}:{1}",   startcolumn,   endcolumn),   missing.value];
                        srange.select();
                        srange.entirecolumn.autofit();
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
                #endregion

                #region   "   get   excel   range   method   definition   "

                ///   <summary>
                ///   根据行列的定位,返回选定的单元格。因为range   是通过cell来定位的,而cell需要2个参数定位,所以需要四个参数。                                
                ///   </summary>
                ///   <param   name="istartrow"> 定位开始range的cell的行 </param>
                ///   <param   name="istartcol"> 定位开始range的cell的列 </param>
                ///   <param   name="iendrow"> 定位结束range的cell的行 </param>
                ///   <param   name="iendcol"> 定位结束range的cell的列 </param>
                ///   <returns> 返回指定范围的range </returns>
                public   range   getrange(int   istartrow,   int   istartcol,   int   iendrow,   int   iendcol)
                {
                        return   exlworksheet.get_range(exlapp.cells[istartrow,   istartcol],   exlapp.cells[iendrow,   iendcol]);
                }

                ///   <summary>
                ///   返回指定的单元格
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <returns> 返回指定的单元格 </returns>
                public   range   getrange(string   cell)
                {
                        return   exlworksheet.get_range(cell,   missing.value);
                }

                ///   <summary>
                ///   返回一个单元格的范围
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格坐标 </param>
                ///   <param   name="endcell"> 结束的单元格坐标 </param>
                ///   <returns> 返回指定的单元格范围 </returns>
                public   range   getrange(string   startcell,   string   endcell)
                {
                        return   exlworksheet.get_range(startcell,   endcell);
                }

                ///   <summary>
                ///   增加一个工作簿
                ///   </summary>
                public   void   addworksheet()
                {
                        if   (this.sheetnumber   <=   3)
                        {
                                exlapp.activeworkbook.sheets.add(missing.value,   missing.value,   missing.value,   missing.value);
                                exlworksheet   =   (worksheet)exlworkbook.activesheet;
                                exlworksheet.select(missing.value);
                        }
                        else
                        {
                                sheetnumber++;
                                exlapp.activeworkbook.sheets.add(missing.value,   missing.value,   missing.value,   missing.value);
                                exlworksheet   =   (worksheet)exlworkbook.activesheet;
                                exlworksheet.select(missing.value);
                        }
                        //exlworkbook.activesheet;

                }


                #endregion

                #region   "   excel   range   style   method   definition   "
                ///   <summary>
                ///   设置单元格的垂直方向对齐方式
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>
                ///   <param   name="cellalignment"> 垂直方向的对齐方式 </param>
                public   void   setcellverticalalignment(string   cell,   excelverticalalignment   cellalignment)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        srange.verticalalignment   =   cellalignment;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设定指定范围的单元格的垂直对齐方式
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格的坐标 </param>
                ///   <param   name="endcell"> 结束单元格的坐标 </param>
                ///   <param   name="cellalignment"> 对齐方式 </param>
                public   void   setcellareaverticalalignment(string   startcell,   string   endcell,   excelverticalalignment   cellalignment)
                {
                        range   srange   =   getrange(startcell,   endcell);
                        srange.select();
                        srange.verticalalignment   =   cellalignment;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

发表于:2007-12-04 17:15:4311楼 得分:0
                ///   <summary>
                ///设置单元格的单元格格式  
                ///   </summary>
                ///   <param   name="cell"> 要设定的单元格的坐标 </param>
                ///   <param   name="formatstring"> 单元格的格式化字符        
                ///   常规:"g/通用格式"
                ///   数值:"[红色]-0.00"(表示是2位小数,如果是负数的话则用红色表示)
                ///   货币:"¥#,##0.000;[红色]¥-#,##0.000"(¥是货币符号,可以用$,也可以不填写,0.000代表三位小数位;[红色]表示如果是负数的话,用红色表示)
                ///   日期:@"yyyy"年"m"月"d"日";@"         (表示用年月日了表示)                 @"[dbnum1][$-804]yyyy"年"m"月"d"日";@"(表示用汉字表示年月日)
                ///   百分比:"0.000%;[红色]-0.000%"(表示小数位为3位,红色表示如果是负数的话则用红色表示)
                ///   文本:"@"(表示是文本格式)
                ///   特殊:"[dbnum1][$-804]g/通用格式"(能将数字转换成中文小写,如1234转换成一千二百三十四)                 "[dbnum2][$-804]g/通用格式"(能将数字转换成中文大写,如1234转换成   壹仟贰佰叁拾肆)
                ///   自定义:输入自定义的格式化字符串
                ///   </param>
                public   void   setcellformat(string   cell,   string   formatstring)
                {
                        range   srange   =   getrange(cell);
                        srange.select();
                        srange.numberformatlocal   =   formatstring;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置指定范围的单元格格式
                ///   </summary>
                ///   <param   name="startcell"> 开始的单元格 </param>
                ///   <param   name="endcell"> 结束的单元格 </param>
                ///   <param   name="formatstring"> 单元格的格式化字符        
                ///   常规:"g/通用格式"
                ///   数值:"[红色]-0.00"(表示是2位小数,如果是负数的话则用红色表示)
                ///   货币:"¥#,##0.000;[红色]¥-#,##0.000"(¥是货币符号,可以用$,也可以不填写,0.000代表三位小数位;[红色]表示如果是负数的话,用红色表示)
                ///   日期:@"yyyy"年"m"月"d"日";@"         (表示用年月日了表示)                 @"[dbnum1][$-804]yyyy"年"m"月"d"日";@"(表示用汉字表示年月日)
                ///   百分比:"0.000%;[红色]-0.000%"(表示小数位为3位,红色表示如果是负数的话则用红色表示)
                ///   文本:"@"(表示是文本格式)
                ///   特殊:"[dbnum1][$-804]g/通用格式"(能将数字转换成中文小写,如1234转换成一千二百三十四)                 "[dbnum2][$-804]g/通用格式"(能将数字转换成中文大写,如1234转换成   壹仟贰佰叁拾肆)
                ///   自定义:输入自定义的格式化字符串 </param>
                public   void   setareacellformat(string   startcell,   string   endcell,   string   formatstring)
                {
                        range   srange   =   getrange(startcell,   endcell);
                        srange.select();
                        srange.numberformatlocal   =   formatstring;
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }

                ///   <summary>
                ///   设置某一列,某几列的列宽为自动适应大小,比如要设置第1列为自动适应大小setcolumnautofit("a","a")
                ///   </summary>
                ///   <param   name="startcolumn"> 开始的列 </param>
                ///   <param   name="endcolumn"> 结束的列 </param>
                ///  
                //todo:stapangpang     要增加自动适应列大小的方法
                public   void   setcolumnautofit(string   startcolumn,   string   endcolumn)
                {
                        range   srange   =   (range)exlworksheet.columns[string.format("{0}:{1}",   startcolumn,   endcolumn),   missing.value];
                        srange.select();
                        srange.entirecolumn.autofit();
                        system.runtime.interopservices.marshal.releasecomobject(srange);
                        srange   =   null;
                }
                #endregion

                #region   "   get   excel   range   method   definition   "

                ///   <summary>
                ///   根据行列的定位,返回选定的单元格。因为range   是通过cell来定位的,而cell需要2个参数定位,所以需要四个参数。                                
                ///   </summary>
                ///   <param   name="istartrow"> 定位开始range的cell的行 </param>
                ///   <param   name="istartcol"> 定位开始range的cell的列 </param>
                ///   <param   name="iendrow"> 定位结束range的cell的行 </param>
                ///   <param   name="iendcol"> 定位结束range的cell的列 </param>
                ///   <returns> 返回指定范围的range </returns>
                public   range   getrange(int   istartrow,   int   istartcol,   int   iendrow,   int   iendcol)
                {
                        return   exlworksheet.get_range(exlapp.cells[istartrow,   istartcol],   exlapp.cells[iendrow,   iendcol]);
                }

                ///   <summary>
                ///   返回指定的单元格
                ///   </summary>
                ///   <param   name="cell"> 指定的单元格 </param>