GridView导出Excel

来源:互联网 发布:linux启用telnet 编辑:程序博客网 时间:2024/04/30 01:02

GridView导出Excel

        dt = ClassCommon.getDataTable(sql);
        DataView dv = dt.DefaultView;
        GC.Collect();
        Excel.Application excel;
// Application excel;// = new Application();
   int rowIndex=4;
   int colIndex=1;

   Excel._Workbook xBk;
   Excel._Worksheet xSt;

   excel = new Excel.ApplicationClass();
  
   xBk = excel.Workbooks.Add(true);

   xSt = (Excel._Worksheet)xBk.ActiveSheet;

   //
   //取得标题
   //
   foreach(DataColumn col in dv.Table.Columns)
    {
    colIndex++;
    excel.Cells[4,colIndex] = col.ColumnName;

    xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[4,

colIndex]).HorizontalAlignment = Excel.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"))
      {
      excel.Cells[rowIndex,colIndex] = (Convert.ToDateTime(row

[col.ColumnName].ToString())).ToString("yyyy-MM-dd");
      xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex,

colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置日期型的字段

格式为居中对齐
     }
     else
      if(col.DataType == System.Type.GetType("System.String"))
      {
      excel.Cells[rowIndex,colIndex] = "'"+row[col.ColumnName].ToString();
      xSt.get_Range(excel.Cells[rowIndex, colIndex], excel.Cells[rowIndex,

colIndex]).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;//设置字符型的字段

格式为居中对齐
     }
     else
      {
      excel.Cells[rowIndex,colIndex] = row[col.ColumnName].ToString();
     }
    }
   }
   //
   //加载一个合计行
   //
   int rowSum = rowIndex + 1;
   int colSum = 2;
   excel.Cells[rowSum,2] = "合计";
   xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum,

2]).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
   //
   //设置选中的部分的颜色
   //
   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells[rowSum,colIndex]).Select

();
   xSt.get_Range(excel.Cells[rowSum,colSum],excel.Cells

[rowSum,colIndex]).Interior.ColorIndex = 19;//设置为浅黄色,共计有56种
   //
   //取得整个报表的标题
   //
   excel.Cells[2,2] = "test";
   //
   //设置整个报表的标题格式
   //
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Bold = true;
   xSt.get_Range(excel.Cells[2,2],excel.Cells[2,2]).Font.Size = 22;
   //
   //设置报表表格为最适应宽度
   //
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Select();
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Columns.AutoFit

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

= Excel.XlHAlign.xlHAlignCenterAcrossSelection;
   //
   //绘制边框
   //
   xSt.get_Range(excel.Cells[4,2],excel.Cells[rowSum,colIndex]).Borders.LineStyle

= 1;
   xSt.get_Range(excel.Cells[4, 2], excel.Cells[rowSum, 2]).Borders

[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlThick;//设置左

边线加粗
   xSt.get_Range(excel.Cells[4, 2], excel.Cells[4, colIndex]).Borders

[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlThick;//设置上边

线加粗
   xSt.get_Range(excel.Cells[4, colIndex], excel.Cells[rowSum,

colIndex]).Borders[Excel.XlBordersIndex.xlEdgeRight].Weight =

Excel.XlBorderWeight.xlThick;//设置右边线加粗
   xSt.get_Range(excel.Cells[rowSum, 2], excel.Cells[rowSum, colIndex]).Borders

[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlThick;//设置

下边线加粗
   //
   //显示效果
   //
   excel.Visible=true;

   //xSt.Export(Server.MapPath(".")

+"//"+this.xlfile.Text+".xls",SheetExportActionEnum.ssExportActionNone,Microsoft.

Office.Interop.OWC.SheetExportFormat.ssExportHTML);
   xBk.SaveCopyAs(Server.MapPath(".")+"//test.xls");

   dt = null;
            xBk.Close(false, null,null);
   
            excel.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(xBk);
            System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
    System.Runtime.InteropServices.Marshal.ReleaseComObject(xSt);
            xBk = null;
            excel = null;
   xSt = null;
            GC.Collect();
   string path = Server.MapPath("test.xls");
  
   //System.IO.FileInfo file = new System.IO.FileInfo(path);
   //Response.Clear();
   //Response.Charset="GB2312";
   //Response.ContentEncoding=System.Text.Encoding.UTF8;
   //// 添加头信息,为"文件下载/另存为"对话框指定默认文件名
   //Response.AddHeader("Content-Disposition", "attachment; filename=" +

Server.UrlEncode(file.Name));
   //// 添加头信息,指定文件大小,让浏览器能够显示下载进度
   //Response.AddHeader("Content-Length", file.Length.ToString());
   
   //// 指定返回的是一个不能被客户端读取的流,必须被下载
   //Response.ContentType = "application/ms-excel";
   
   //// 把文件流发送到客户端
   //Response.WriteFile(file.FullName);
   // 停止页面的执行
   Response.Write("<script>location.href='test.xls';</script>");
   Response.End();
 

原创粉丝点击