f zID:cpp2017
11185次访问,排名9718好友21人,关注者225
好的工具是成功的一半
cpp2017的文章
原创 12 篇
翻译 0 篇
转载 0 篇
评论 24 篇
cpp2017(慕白兄)的公告
由于很多网友经常提到一些问题,所以在此将这些问题整理一下.这里并没有什么很深的技术,只是一些常见且基础的问题,尽量以最简单易懂和浅显的实例,让新学者受到些启发,希望能对他们有帮助,如有不对之处,请不吝批评指正。
最近评论
jeffcn2:有一个问题,这样在服务器上不是产生了很多Excel文件,还有就是要控制输出的工作表的样式要如何控制(如:我想从A2开始输出,并设置标题为粗体居中?),请达人指点
ucemouse:我在调用File.Copy(,,true)是,提示:文件正在被另一进程使用,其实就是它自己的进程在使用,两个文件是放在同一个目录中的.请求帮助
lex1982:很有创意,我喜欢
xp1056:这个是不是要求.net版本2005以上?我在03里面用的,没体现出效果来。
比如:SetFocusOnError="True"提示验证控件的该属性找不到
xudongyh:http://blog.csdn.net/xudongyh/archive/2008/04/04/2248700.aspx
文章分类
收藏
    相册
    文件
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 asp.net导出数据到Excel的几种方法(2/3) 收藏

    新一篇: asp.net导出数据到Excel的几种方法(3/3)  | 旧一篇: asp.net导出数据到Excel的几种方法(1/3)

         继续前文,第二种方法是利用Excel的Com接口库来完成,这种方法的优点是功能强大,可像使用Excel程序一样来操作Excel文件,缺点是需要服务器安装Excel程序,且需要一定的安全配置。

    一、准备工作:

    1)安装Microsoft Excel

    2)Com的安全设置。

       在命令行输入DCOMCNFG ,进入组件服务设置界面,如图:

    打到Micorosoft Excel应用程序,如图:

    右键点击属性,然后点击“安全”,将“启动和激活权限”、“访问权限”、“配置权限”都选择自定义,然后添加运行ASP.NET的用户(IIS6以上是NETWORK SERVICE以下是ASPNET),给予全部权限,如图所示:

    3)配置文件目录权限,因为可能要保存文件到某目录中,所以要将该目录对ASP.NET用户予以写入权限。

     

    二、使用

    在VS.NET的工程中添加引用,如图:

     

    如果添加引用后Excel组件不能正常使用(excel组件的左边显示一个黄色的感叹号),可以使用.Net工具进行组件转换。

    转换方法,运行vs.net的命令行工具,进入Office目录,输入TlbImp Excel.exe即可,然后删除有问题的引用重新添加引用,这次使用浏览,然后引用Excel.DLL。

    根据我的经验,vs2003可以直接引用Microsoft  Excel x.0 ObjectLibary,而vs2005就需要使用工具转换成DLL才可使用。

    然后即可以使用Excel.Application对象来操作它了。

    以下就一段简单的将GirdView的数据导出到Excel的代码,功能较简单,权当抛砖引玉了。

     

      this.GridView1.DataBind();



                Excel.ApplicationClass oExcel 
    = new Excel.ApplicationClass();
                
    object oMissing  = System.Reflection.Missing.Value;
                
                oExcel.Workbooks.Add(oMissing);
                Excel.Workbook oBook 
    = oExcel.Workbooks[1];
                Excel.Worksheet oSheet 
    = (Excel.Worksheet)oBook.Sheets[1];
                oSheet.Name 
    = this.Title;
               
                Excel.Range rg;

                
    for (int j = 0; j < this.GridView1.HeaderRow.Cells.Count; j++)
                
    {
                    rg 
    = ((Excel.Range)oSheet.Cells[ 1, j + 1]);
                    rg.FormulaR1C1 
    = this.GridView1.HeaderRow.Cells[j].Text;
                }


                
    for(int i = 0;i<this.GridView1.Rows.Count;i++)
                
    {
                    
    for (int j = 0; j < this.GridView1.Rows[0].Cells.Count; j++)
                    
    {
                        rg 
    = ((Excel.Range)oSheet.Cells[i + 2, j+1]);
                        rg.FormulaR1C1 
    = this.GridView1.Rows[i].Cells[j].Text;
                    }

                }

                rg 
    = null;

                
    string VirFileName = Guid.NewGuid().ToString() + ".xls";
                oBook.SaveAs(Server.MapPath(VirFileName), Excel.XlFileFormat.xlExcel9795, oMissing, oMissing, oMissing, oMissing, Excel.XlSaveAsAccessMode.xlExclusive,
                    oMissing, oMissing, oMissing, oMissing, oMissing);
                oExcel.Workbooks.Close();
                oExcel.Quit();
               
                oSheet 
    = null;
                oBook 
    = null;
                oExcel 
    = null;

                GC.Collect();

                Response.Redirect(VirFileName);

     

    说明一下:为了Excel进程在使用完成后能彻底退出,需要将所有对象在使用完成后清空,像代码中的rg,oSheet,oBook,oExcel等。

    发表于 @ 2008年04月02日 15:47:00|评论(loading...)|编辑

    新一篇: asp.net导出数据到Excel的几种方法(3/3)  | 旧一篇: asp.net导出数据到Excel的几种方法(1/3)

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © cpp2017(慕白兄)