asp.net 导出Excel

第一办法:

public void ExportToExcel(System.Web.UI.Control ctl)
         {
             bool CurrCtlVisible=ctl.Visible;
             ctl.Visible=true;         Response.AppendHeader("Content-Disposition","attachment;filename=Excel.xls");
             Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");
             Response.ContentType = "application/ms-excel";
             ctl.Page.EnableViewState = false;
             System.IO.StringWriter tw = new System.IO.StringWriter();
             System.Web.UI.HtmlTextWriter hw = new HtmlTextWriter(tw);
             ctl.RenderControl(hw);
             Response.Write(tw.ToString());
             Response.End();
            
             ctl.Page.EnableViewState = true;
             ctl.Visible=CurrCtlVisible;
         }

第二种办法

public class ExportToExcel
     {

         #region 私有成员
         // 数据的DataView
         private DataView dv=null;

         // 表格标题
         private string title=null;

         // 输出文件路径
         private string outFilePath=null;


         // 输入文件名
         private string inputFilePath=System.Windows.Forms.Application.StartupPath+@" emplate.xls";

         #endregion

         公共属性      

         #region 构造函数

         public ExportToExcel()
         {
         }

//         public OutputExcel(DataView dv,string title)
//         {
//
//         }

         #endregion

         #region 公共方法
         //
         public void CreateExcel()
         {
             int rowIndex=4;//行起始坐标
             int colIndex=1;//列起始坐标

             ApplicationClass myApp=null;
             Workbook myBook=null;
             Worksheet mySheet=null;

             //如果文件不存在,则将模板文件拷贝一份作为输出文件
             if(!File.Exists(outFilePath))
             {
                 File.Copy(inputFilePath,outFilePath,true);
             }

             myApp= new ApplicationClass();
             myApp.Visible=false;
             object oMissiong=System.Reflection.Missing.Value;
             myApp.Workbooks.Open(outFilePath,oMissiong,oMissiong,oMissiong,oMissiong,
                 oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,
                 oMissiong,oMissiong,oMissiong);
             myBook=myApp.Workbooks[1];
             mySheet=(Worksheet)myBook.ActiveSheet;

             //取得标题
             foreach(DataColumn col in dv.Table.Columns)
             {
                 colIndex++;
                 mySheet.Cells[4,colIndex] = col.ColumnName;
                 mySheet.get_Range(mySheet.Cells[4,colIndex],mySheet.Cells[4,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置标题格式为居中对齐
             }

             //取得表格中的数据
             foreach(DataRowView row in dv)
             {
                 rowIndex ++;
                 colIndex = 1;
                 foreach(DataColumn col in dv.Table.Columns)
                 {
                     colIndex ++;
                     if(col.DataType == System.Type.GetType("System.DateTime"))
                     {
                         mySheet.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
                         mySheet.get_Range(mySheet.Cells[rowIndex,colIndex],mySheet.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置日期型的字段格式为居中对齐
                     }
                     else if(col.DataType == System.Type.GetType("System.String"))
                     {
                         mySheet.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();
                         mySheet.get_Range(mySheet.Cells[rowIndex,colIndex],mySheet.Cells[rowIndex,colIndex]).HorizontalAlignment = XlVAlign.xlVAlignCenter;//设置字符型的字段格式为居中对齐
                     }
                     else
                     {
                         mySheet.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
                     }
                 }
             }

             //加载一个合计行
             int rowSum = rowIndex + 1;
             int colSum = 2;
             mySheet.Cells[rowSum,2] = "合计";
             mySheet.get_Range(mySheet.Cells[rowSum,2],mySheet.Cells[rowSum,2]).HorizontalAlignment = XlHAlign.xlHAlignCenter;

             //设置选中的部分的颜色
             mySheet.get_Range(mySheet.Cells[rowSum,colSum],mySheet.Cells[rowSum,colIndex]).Select();
             mySheet.get_Range(mySheet.Cells[rowSum,colSum],mySheet.Cells[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种

             //取得整个报表的标题
             mySheet.Cells[2,2] = title;

             //设置整个报表的标题格式
             mySheet.get_Range(mySheet.Cells[2,2],mySheet.Cells[2,2]).Font.Bold = true;
             mySheet.get_Range(mySheet.Cells[2,2],mySheet.Cells[2,2]).Font.Size = 22;

             //设置报表表格为最适应宽度
             mySheet.get_Range(mySheet.Cells[4,2],mySheet.Cells[rowSum,colIndex]).Select();
             mySheet.get_Range(mySheet.Cells[4,2],mySheet.Cells[rowSum,colIndex]).Columns.AutoFit();

             //设置整个报表的标题为跨列居中
             mySheet.get_Range(mySheet.Cells[2,2],mySheet.Cells[2,colIndex]).Select();
             mySheet.get_Range(mySheet.Cells[2,2],mySheet.Cells[2,colIndex]).HorizontalAlignment = XlHAlign.xlHAlignCenterAcrossSelection;

             //绘制边框
             mySheet.get_Range(mySheet.Cells[4,2],mySheet.Cells[rowSum,colIndex]).Borders.LineStyle = 1;
             mySheet.get_Range(mySheet.Cells[4,2],mySheet.Cells[rowSum,2]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗
             mySheet.get_Range(mySheet.Cells[4,2],mySheet.Cells[4,colIndex]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置上边线加粗
             mySheet.get_Range(mySheet.Cells[4,colIndex],mySheet.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗
             mySheet.get_Range(mySheet.Cells[rowSum,2],mySheet.Cells[rowSum,colIndex]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗
             myBook.Save();
             myBook.Close( true,outFilePath,true);

             System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);
             System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
             System.Runtime.InteropServices.Marshal.ReleaseComObject(myApp);

             myApp.Quit();
             GC.Collect();
         }
         #endregion

        
     }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值