CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

如何在ASP.net导出的EXCEL中插入多页

楼主CADILLAC_AD(水神)2006-05-03 14:11:42 在 .NET技术 / ASP.NET 提问

就是SHeet1,sheet2这样子的  
  问题点数:100、回复次数:5Top

1 楼insiderc()回复于 2006-05-03 14:47:14 得分 40

//作参考吧  
  一)   使用动态创建的方法  
   
  首先创建   Excel   对象,使用ComObj:  
  var   ExcelApp:   Variant;  
  ExcelApp   :=   CreateOleObject(   'Excel.Application'   );  
   
  1)   显示当前窗口:  
  ExcelApp.Visible   :=   True;  
   
  2)   更改   Excel   标题栏:  
  ExcelApp.Caption   :=   '应用程序调用   Microsoft   Excel';  
   
  3)   添加新工作簿:  
  ExcelApp.WorkBooks.Add;  
   
  4)   打开已存在的工作簿:  
  ExcelApp.WorkBooks.Open(   'C:\Excel\Demo.xls'   );  
   
  5)   设置第2个工作表为活动工作表:  
  ExcelApp.WorkSheets[2].Activate;    
  或    
  ExcelApp.WorksSheets[   'Sheet2'   ].Activate;  
   
  6)   给单元格赋值:  
  ExcelApp.Cells[1,4].Value   :=   '第一行第四列';  
   
  7)   设置指定列的宽度(单位:字符个数),以第一列为例:  
  ExcelApp.ActiveSheet.Columns[1].ColumnsWidth   :=   5;  
   
  8)   设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:  
  ExcelApp.ActiveSheet.Rows[2].RowHeight   :=   1/0.035;   //   1厘米  
   
  9)   在第8行之前插入分页符:  
  ExcelApp.WorkSheets[1].Rows.PageBreak   :=   1;  
   
  10)   在第8列之前删除分页符:  
  ExcelApp.ActiveSheet.Columns[4].PageBreak   :=   0;  
   
  11)   指定边框线宽度:  
  ExcelApp.ActiveSheet.Range[   'B3:D4'   ].Borders[2].Weight   :=   3;  
  1-左   2-右   3-顶   4-底   5-斜(   \   )   6-斜(   /   )  
   
  12)   清除第一行第四列单元格公式:  
  ExcelApp.ActiveSheet.Cells[1,4].ClearContents;  
   
  13)   设置第一行字体属性:  
  ExcelApp.ActiveSheet.Rows[1].Font.Name   :=   '隶书';  
  ExcelApp.ActiveSheet.Rows[1].Font.Color   :=   clBlue;  
  ExcelApp.ActiveSheet.Rows[1].Font.Bold   :=   True;  
  ExcelApp.ActiveSheet.Rows[1].Font.UnderLine   :=   True;  
   
  14)   进行页面设置:  
   
  a.页眉:  
  ExcelApp.ActiveSheet.PageSetup.CenterHeader   :=   '报表演示';  
  b.页脚:  
  ExcelApp.ActiveSheet.PageSetup.CenterFooter   :=   '第&P页';  
  c.页眉到顶端边距2cm:  
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin   :=   2/0.035;  
  d.页脚到底端边距3cm:  
  ExcelApp.ActiveSheet.PageSetup.HeaderMargin   :=   3/0.035;  
  e.顶边距2cm:  
  ExcelApp.ActiveSheet.PageSetup.TopMargin   :=   2/0.035;  
  f.底边距2cm:  
  ExcelApp.ActiveSheet.PageSetup.BottomMargin   :=   2/0.035;  
  g.左边距2cm:  
  ExcelApp.ActiveSheet.PageSetup.LeftMargin   :=   2/0.035;  
  h.右边距2cm:  
  ExcelApp.ActiveSheet.PageSetup.RightMargin   :=   2/0.035;  
  i.页面水平居中:  
  ExcelApp.ActiveSheet.PageSetup.CenterHorizontally   :=   2/0.035;  
  j.页面垂直居中:  
  ExcelApp.ActiveSheet.PageSetup.CenterVertically   :=   2/0.035;  
  k.打印单元格网线:  
  ExcelApp.ActiveSheet.PageSetup.PrintGridLines   :=   True;  
   
  15)   拷贝操作:  
   
  a.拷贝整个工作表:  
  ExcelApp.ActiveSheet.Used.Range.Copy;  
  b.拷贝指定区域:  
  ExcelApp.ActiveSheet.Range[   'A1:E2'   ].Copy;  
  c.从A1位置开始粘贴:  
  ExcelApp.ActiveSheet.Range.[   'A1'   ].PasteSpecial;  
  d.从文件尾部开始粘贴:  
  ExcelApp.ActiveSheet.Range.PasteSpecial;  
   
  16)   插入一行或一列:  
  a.   ExcelApp.ActiveSheet.Rows[2].Insert;  
  b.   ExcelApp.ActiveSheet.Columns[1].Insert;  
   
  17)   删除一行或一列:  
  a.   ExcelApp.ActiveSheet.Rows[2].Delete;  
  b.   ExcelApp.ActiveSheet.Columns[1].Delete;  
   
  18)   打印预览工作表:  
  ExcelApp.ActiveSheet.PrintPreview;  
   
  19)   打印输出工作表:  
  ExcelApp.ActiveSheet.PrintOut;  
   
  20)   工作表保存:  
  if   not   ExcelApp.ActiveWorkBook.Saved   then  
  ExcelApp.ActiveSheet.PrintPreview;  
   
  21)   工作表另存为:  
  ExcelApp.SaveAs(   'C:\Excel\Demo1.xls'   );  
   
  22)   放弃存盘:  
  ExcelApp.ActiveWorkBook.Saved   :=   True;  
   
  23)   关闭工作簿:  
  ExcelApp.WorkBooks.Close;  
   
  24)   退出   Excel:  
  ExcelApp.Quit;  
   
  (二)   使用Delphi   控件方法  
  在Form中分别放入ExcelApplication,   ExcelWorkbook和ExcelWorksheet。    
   
  1)   打开Excel    
  ExcelApplication1.Connect;  
   
  2)   显示当前窗口:  
  ExcelApplication1.Visible[0]:=True;  
   
  3)   更改   Excel   标题栏:  
  ExcelApplication1.Caption   :=   '应用程序调用   Microsoft   Excel';  
   
  4)   添加新工作簿:  
  ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));  
   
  5)   添加新工作表:  
  var   Temp_Worksheet:   _WorkSheet;  
  begin  
  Temp_Worksheet:=ExcelWorkbook1.  
  WorkSheets.Add(EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)   as   _WorkSheet;  
  ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);  
  End;  
   
  6)   打开已存在的工作簿:  
  ExcelApplication1.Workbooks.Open   (c:\a.xls  
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,  
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,  
  EmptyParam,EmptyParam,EmptyParam,EmptyParam,0)  
   
  7)   设置第2个工作表为活动工作表:  
  ExcelApplication1.WorkSheets[2].Activate;   或  
  ExcelApplication1.WorksSheets[   'Sheet2'   ].Activate;  
   
  8)   给单元格赋值:  
  ExcelApplication1.Cells[1,4].Value   :=   '第一行第四列';  
   
  9)   设置指定列的宽度(单位:字符个数),以第一列为例:  
  ExcelApplication1.ActiveSheet.Columns[1].ColumnsWidth   :=   5;  
   
  10)   设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:  
  ExcelApplication1.ActiveSheet.Rows[2].RowHeight   :=   1/0.035;   //   1厘米  
   
  11)   在第8行之前插入分页符:  
  ExcelApplication1.WorkSheets[1].Rows.PageBreak   :=   1;  
   
  12)   在第8列之前删除分页符:  
  ExcelApplication1.ActiveSheet.Columns[4].PageBreak   :=   0;  
   
  13)   指定边框线宽度:  
  ExcelApplication1.ActiveSheet.Range[   'B3:D4'   ].Borders[2].Weight   :=   3;  
  1-左   2-右   3-顶   4-底   5-斜(   \   )   6-斜(   /   )  
   
  14)   清除第一行第四列单元格公式:  
  ExcelApplication1.ActiveSheet.Cells[1,4].ClearContents;  
   
  15)   设置第一行字体属性:  
  ExcelApplication1.ActiveSheet.Rows[1].Font.Name   :=   '隶书';  
  ExcelApplication1.ActiveSheet.Rows[1].Font.Color   :=   clBlue;  
  ExcelApplication1.ActiveSheet.Rows[1].Font.Bold   :=   True;  
  ExcelApplication1.ActiveSheet.Rows[1].Font.UnderLine   :=   True;  
   
  16)   进行页面设置:  
  a.页眉:  
  ExcelApplication1.ActiveSheet.PageSetup.CenterHeader   :=   '报表演示';  
  b.页脚:  
  ExcelApplication1.ActiveSheet.PageSetup.CenterFooter   :=   '第&P页';  
  c.页眉到顶端边距2cm:  
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin   :=   2/0.035;  
  d.页脚到底端边距3cm:  
  ExcelApplication1.ActiveSheet.PageSetup.HeaderMargin   :=   3/0.035;  
  e.顶边距2cm:  
  ExcelApplication1.ActiveSheet.PageSetup.TopMargin   :=   2/0.035;  
  f.底边距2cm:  
  ExcelApplication1.ActiveSheet.PageSetup.BottomMargin   :=   2/0.035;  
  g.左边距2cm:  
  ExcelApplication1.ActiveSheet.PageSetup.LeftMargin   :=   2/0.035;  
  h.右边距2cm:  
  ExcelApplication1.ActiveSheet.PageSetup.RightMargin   :=   2/0.035;  
  i.页面水平居中:  
  ExcelApplication1.ActiveSheet.PageSetup.CenterHorizontally   :=   2/0.035;  
  j.页面垂直居中:  
  ExcelApplication1.ActiveSheet.PageSetup.CenterVertically   :=   2/0.035;  
  k.打印单元格网线:  
  ExcelApplication1.ActiveSheet.PageSetup.PrintGridLines   :=   True;  
   
  17)   拷贝操作:  
   
  a.拷贝整个工作表:  
  ExcelApplication1.ActiveSheet.Used.Range.Copy;  
   
  b.拷贝指定区域:  
  ExcelApplication1.ActiveSheet.Range[   'A1:E2'   ].Copy;  
   
  c.从A1位置开始粘贴:  
  ExcelApplication1.ActiveSheet.Range.[   'A1'   ].PasteSpecial;  
   
  d.从文件尾部开始粘贴:  
  ExcelApplication1.ActiveSheet.Range.PasteSpecial;  
   
  18)   插入一行或一列:  
  a.   ExcelApplication1.ActiveSheet.Rows[2].Insert;  
  b.   ExcelApplication1.ActiveSheet.Columns[1].Insert;  
   
  19)   删除一行或一列:  
  a.   ExcelApplication1.ActiveSheet.Rows[2].Delete;  
  b.   ExcelApplication1.ActiveSheet.Columns[1].Delete;  
   
  20)   打印预览工作表:  
  ExcelApplication1.ActiveSheet.PrintPreview;  
   
  21)   打印输出工作表:  
  ExcelApplication1.ActiveSheet.PrintOut;  
   
  22)   工作表保存:  
  if   not   ExcelApplication1.ActiveWorkBook.Saved   then  
  ExcelApplication1.ActiveSheet.PrintPreview;  
   
  23)   工作表另存为:  
  ExcelApplication1.SaveAs(   'C:\Excel\Demo1.xls'   );  
   
  24)   放弃存盘:  
  ExcelApplication1.ActiveWorkBook.Saved   :=   True;  
   
  25)   关闭工作簿:  
  ExcelApplication1.WorkBooks.Close;  
   
  26)   退出   Excel:  
  ExcelApplication1.Quit;  
  ExcelApplication1.Disconnect;  
   
  (三)   使用Delphi   控制Excle二维图  
  在Form中分别放入ExcelApplication,   ExcelWorkbook和ExcelWorksheet  
  var   asheet1,achart,   range:variant;  
   
  1)选择当第一个工作薄第一个工作表  
  asheet1:=ExcelApplication1.Workbooks[1].Worksheets[1];  
   
  2)增加一个二维图  
  achart:=asheet1.chartobjects.add(100,100,200,200);  
   
  3)选择二维图的形态  
  achart.chart.charttype:=4;  
   
  4)给二维图赋值  
  series:=achart.chart.seriescollection;  
  range:=sheet1!r2c3:r3c9;  
  series.add(range,true);  
   
  5)加上二维图的标题  
  achart.Chart.HasTitle:=True;  
  achart.Chart.ChartTitle.Characters.Text:=’   Excle二维图’    
  Top

2 楼insiderc()回复于 2006-05-03 14:48:44 得分 0

这是  
  Delphi&Excel     的用法,要用C#你自己改改吧Top

3 楼sky592(阿炳)回复于 2006-05-03 15:18:06 得分 60

以下的方法,我试过非常的好用  
   
  使用时必须先引入excel   com控件。。  
   
  using   System;  
  using   System.Data;  
  using   Excel   ;  
   
  namespace   DataSetAndExcel  
  {  
    ///   <summary>  
    ///   将数据集转换成excel工作簿  
    ///   </summary>  
     
    public   class   DataSet2WorkBook  
    {  
   
      private   DataSet   mDs   =   new   DataSet()   ;   //存放数据源  
      private   string   mFilePath   =   "c:\\temp.xls"   ;   //excel文件名,保存的路径  
   
   
      public   DataSet2WorkBook(ref   DataSet   ds   ,   string   filePath   )  
      {  
        //  
        //   TODO:   在此处添加构造函数逻辑  
                          //  
        this.mDs   =   ds   ;  
        this.mFilePath   =   filePath   ;  
      }  
       
   
      ///   <summary>  
      ///   将数据表转换成excel工作簿中的sheet  
      ///   </summary>  
      ///   <param   name="tb">要转换的数据表(引用类型)</param>  
      ///   <param   name="xSheet">目标sheet</param>  
      ///   <param   name="SheetName">sheet名字</param>  
      ///   <returns></returns>  
      private   bool   DataTable2Sheet(   ref   System.Data.DataTable   tb   ,ref   Excel._Worksheet   xSheet   ,string   SheetName   )  
      {  
       
        try  
        {  
          int   rowIndex=2;  
          int   colIndex=0;  
          if(SheetName   ==   "")  
          {  
            xSheet.Name   =   tb.TableName   ;  
          }  
          else  
          {  
            xSheet.Name   =   SheetName   ;  
          }  
          foreach(DataColumn   tempCol   in   tb.Columns   )  
          {  
                       
            xSheet.Cells[1,colIndex+1]=tempCol.ColumnName;    
             
            rowIndex   =   2   ;  
            foreach(DataRow   tempRow   in   tb.Rows   )  
            {  
              xSheet.Cells[rowIndex   ,colIndex+1]   =     "'"+tempRow[colIndex].ToString()   ;  
              rowIndex++   ;  
            }  
            colIndex++;    
          }  
           
          return   true   ;  
        }  
        catch  
        {  
          return   false   ;  
        }  
      }  
      ///   <summary>  
      ///   将指定数据集里的表转换成工作簿里sheet  
      ///   </summary>  
      ///   <param   name="starPos">数据表开始位置从0开始计数</param>  
      ///   <param   name="Count">要转换数据表的数目</param>  
      ///   <returns>成功返回true</returns>  
      public   bool   Convert(int   starPos   ,int   Count)  
      {  
        try  
        {  
          System.Data   .DataTable   tempTable   ;   //创建临时表  
          Excel.Application   xApp=   new   Excel.Application();  
          xApp.Visible   =   false   ;  
          object   objOpt   =   System.Reflection.Missing.Value;  
               
          Excel.Workbook   xBook   =   xApp.Workbooks.Add(true)   ;//添加新工作簿  
          Excel.Sheets   xSheets   =   xBook.Sheets   ;  
          Excel._Worksheet   xSheet   =   null   ;  
          //  
          //转换从指定起始位置以后一定数目的数据集  
          //  
          for(int   i   =   starPos   ,   iCount   =   1   ;   iCount   <=   Count   &&   i<   this.mDs.Tables.Count   ;   i++   ,iCount++   )  
          {  
            tempTable   =   this.mDs.Tables[i]   ;  
            //  
            //创建空的sheet  
            //  
            xSheet   =   (Excel._Worksheet)(xBook.Sheets.Add(objOpt,objOpt,objOpt,objOpt))   ;  
   
            DataTable2Sheet(ref   tempTable     ,ref     xSheet   ,"")   ;  
             
          }  
   
          //  
          //获取默认生成的sheet并将其删除  
          //  
          //Excel._Worksheet   tempXSheet   =   (Excel._Worksheet)   (xSheets.get_Item(1))   ;  
          //  
          Excel._Worksheet   tempXSheet   =   (Excel._Worksheet)   (xBook.Worksheets[Count+1])   ;  
          tempXSheet.Delete()   ;  
          System.Runtime.InteropServices.Marshal.ReleaseComObject(tempXSheet)   ;  
          tempXSheet=null   ;  
          //  
          //保存  
          //  
          xBook.Saved   =   true   ;  
          xBook.SaveCopyAs(this.mFilePath   )   ;  
          //  
          //释放资源  
          //  
          System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheet)   ;  
          xSheet=null   ;  
          System.Runtime.InteropServices.Marshal.ReleaseComObject(xSheets)   ;  
          xSheets=null   ;  
           
          System.Runtime.InteropServices.Marshal.ReleaseComObject(xBook)   ;  
          xBook=null   ;  
          xApp.Quit();  
          System.Runtime.InteropServices.Marshal.ReleaseComObject(xApp);  
          xApp   =   null   ;  
          GC.Collect();//强行销毁  
          return   true   ;  
        }  
        catch  
        {  
          return   false   ;  
        }  
   
         
      }  
  ///   <summary>  
  ///   重载convert,将数据集里所有的表转换工作簿的sheet  
  ///   </summary>  
  ///   <returns></returns>  
       
      public   bool   Convert()  
      {  
        return   this.Convert(   0   ,this.mDs.Tables.Count   )   ;  
      }  
       
    }  
  Top

4 楼CADILLAC_AD(水神)回复于 2006-05-08 16:59:24 得分 0

sky592(阿炳)   的方法很好  
  用了,有效!  
  insiderc()   的没用过  
  不过相信应该很有帮助  
  我最多能给100,系统限制了  
  6,4   开了,呵呵  
  希望能交个朋友Top

5 楼ldw701(★水若寒★)回复于 2006-06-09 13:14:34 得分 0

markTop

相关问题

关键词

得分解答快速导航

  • 帖主:CADILLAC_AD
  • insiderc
  • sky592

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo