zoukankan      html  css  js  c++  java
  • 从DataTable导出Excel,并下载,删除Excel进程。

    页面上加入一个button即可.
    源代码如下:

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using Microsoft.Office.Interop.Excel;

    namespace Test
    {
        
    /// <summary>
        
    /// TestExcel 的摘要说明。
        
    /// </summary>

        public class TestExcel : System.Web.UI.Page
        
    {
            
    protected System.Web.UI.WebControls.Button Button1;
        
            
    private void Page_Load(object sender, System.EventArgs e)
            
    {
                
            }


            
    #region Web 窗体设计器生成的代码
            
    override protected void OnInit(EventArgs e)
            
    {
                
    //
                
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
                
    //
                InitializeComponent();
                
    base.OnInit(e);
            }

            
            
    /// <summary>
            
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
            
    /// 此方法的内容。
            
    /// </summary>

            private void InitializeComponent()
            
    {    
                
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
                
    this.Load += new System.EventHandler(this.Page_Load);

            }

            
    #endregion


            
    private void Button1_Click(object sender, System.EventArgs e)
            
    {
                
    try
                
    {
                    
    string DownloadPath=Server.MapPath(".");    //副本的文件夹路径。
                    
    //副本的文件名。
                    string TempFileName = DateTime.Now.ToString("yyyyMMdd"+ DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + ".XLS"
                    
    this.txtTempFileName.Text=TempFileName;
                    
    object missing = System.Reflection.Missing.Value;
                    
    object missing2 = System.Reflection.Missing.Value;
                    ApplicationClass myExcel
    =new ApplicationClass();

                    Workbook myBook
    =(Workbook)myExcel.Workbooks.Add(missing);
                    Worksheet curSheet 
    = (Worksheet)myBook.Sheets[1];
                    
    //设置Excel样式
                    Range r1=(Range)myExcel.Cells[1,2];

                    Range r2
    =(Range)myExcel.Cells[3,4];

                    r1.Font.Bold
    =true;
                    r2.Font.Bold
    =true;


                    
    string DownloadFilePath=DownloadPath+"\\"+TempFileName;

                     System.Data.DataTable dt
    =this.GetTable();
                    
    int rc=dt.Rows.Count;
                    
    //绘制边框
                    Range rBorders=(Range)curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[7+rc+1,10]);
                    rBorders.Borders.LineStyle
    =1;
                    curSheet.get_Range(myExcel.Cells[
    7,1],myExcel.Cells[7+rc+1,1]).Borders[XlBordersIndex.xlEdgeLeft].Weight = XlBorderWeight.xlThick;//设置左边线加粗
                    curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[7,10]).Borders[XlBordersIndex.xlEdgeTop].Weight = XlBorderWeight.xlThick;//设置设置上边线加粗
                    curSheet.get_Range(myExcel.Cells[7+rc+1,1],myExcel.Cells[7+rc+1,10]).Borders[XlBordersIndex.xlEdgeBottom].Weight = XlBorderWeight.xlThick;//设置下边线加粗
                    curSheet.get_Range(myExcel.Cells[7,10],myExcel.Cells[7+rc+1,10]).Borders[XlBordersIndex.xlEdgeRight].Weight = XlBorderWeight.xlThick;//设置右边线加粗



                    
    //Excel的表头信息
                    myExcel.Cells[1,2]="表头信息";

                    myExcel.Cells[
    2,2]="New Added:" + DateTime.Now.ToString();
                    myExcel.Cells[
    3,4]="VENDOR  CODE  LIST  -  BY  PRODUCTS.";
                    myExcel.Cells[
    4,4]="****************************************";

                    myExcel.Cells[
    5,9]="DATE From:" + DateTime.Now.ToString();
                    myExcel.Cells[
    6,9]="DATE To:" + DateTime.Now.ToString();

                    myExcel.Cells[
    7,5]="PARTS SUPPLIER";

                    
    //设置Excel表列头
                    myExcel.Cells[8,1]="Item";
                    myExcel.Cells[
    8,2]="OrgCode";
                    myExcel.Cells[
    8,3]="VendorCode";
                    myExcel.Cells[
    8,4]="VendorName";
                    myExcel.Cells[
    8,5]="A";
                    myExcel.Cells[
    8,6]="B";
                    myExcel.Cells[
    8,7]="C";
                    myExcel.Cells[
    8,8]="PayMentType";
                    myExcel.Cells[
    8,9]="TermsCode";
                    myExcel.Cells[
    8,10]="CreateTime";
                    
    //设置表头字体风格
                    curSheet.get_Range(myExcel.Cells[7,1],myExcel.Cells[8,10]).Font.Bold=true;
                    
    int j=1;//j为总结的Item数目的变量
                    int i=9;
                    
    while (i-8<=dt.Rows.Count)
                    
    {
                        myExcel.Cells[i,
    1]=j.ToString();
                        myExcel.Cells[i,
    2]=dt.Rows[i-9]["Name"].ToString().Trim();
                        myExcel.Cells[i,
    3]=dt.Rows[i-9]["cost"].ToString().Trim();
                        myExcel.Cells[i,
    4]=dt.Rows[i-9]["bug"].ToString().Trim();
                        myExcel.Cells[i,
    5]="";
                        myExcel.Cells[i,
    6]="";
                        myExcel.Cells[i,
    7]="";
                        
                        
    //设置颜色,否则日期显示成"######"格式。
                        Range rCol10=(Range)myExcel.Cells[i,10];
                        rCol10
    =null;
                        
    //从1开始循环
                        j++;
                        i
    ++;
                    }
     

                    myBook.Saved
    =true;
                    myBook.SaveAs(DownloadFilePath,missing2,
    "","",false,false,XlSaveAsAccessMode.xlNoChange,1,false,missing,missing,missing);

                    myBook.Close(
    falsenull,null);
                    myExcel.Quit();
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(myExcel);
                    myBook 
    = null;
                    myExcel 
    = null;
                    GC.Collect();
                    
    //下载文件
                    HttpResponse response = HttpContext.Current.Response; 
                    response.Clear();
                    response.WriteFile(DownloadFilePath);
                    
    string httpHeader="attachment;filename=backup.Xls";
                    response.AppendHeader(
    "Content-Disposition", httpHeader);
                    response.Flush();
                    
    //删除临时文件
                    System.IO.File.Delete(DownloadFilePath);
                    
                    killExcelProcess();
                }

                
    catch(Exception Ex)
                
    {
                    
    throw Ex;
                }

            }

            
    /// <summary>
            
    /// 删除Excel进程
            
    /// </summary>

            private void  killExcelProcess(){
                
    //结束 Excel 进程
                foreach(System.Diagnostics.Process xlProcess in System.Diagnostics.Process.GetProcesses()){
                    
    if( xlProcess.ProcessName.ToUpper().Equals("EXCEL")) {
                        
    //结束 excel 进程 
                        xlProcess.Kill();
                    }

                }

                    
            }

            
    /// <summary>
            
    /// 构建临时DataTable
            
    /// </summary>
            
    /// <returns></returns>

            private System.Data.DataTable GetTable()
            
    {
                System.Data.DataTable dt 
    = new System.Data.DataTable();
                dt.Columns.Add(
    "Name");
                dt.Columns.Add(
    "cost");
                dt.Columns.Add(
    "bug");
                DataRow rw 
    = dt.NewRow();
                rw[
    "Name"]= "";
                rw[
    "Cost"]= "12";
                rw[
    "bug"]= "5";
                dt.Rows.Add(rw);
                rw 
    = dt.NewRow();
                rw[
    "Name"]= "";
                rw[
    "Cost"]= "15";
                rw[
    "bug"]= "2";
                dt.Rows.Add(rw);
                rw 
    = dt.NewRow();
                rw[
    "Name"]= "";
                rw[
    "Cost"]= "8";
                rw[
    "bug"]= "1";
                dt.Rows.Add(rw);
                
    return dt;
            }

        }

    }


     

  • 相关阅读:
    【Linux 日常】设置动态链接库目录
    某站视频python抓取: m3u8转mp4
    GDB 主要调试命令
    算法【查找一】
    算法【排序四】
    算法【排序三】
    Vim常用命令整理
    【OpenCV】贝叶斯之肤色分割模型
    算法【排序二】
    算法【排序一】
  • 原文地址:https://www.cnblogs.com/echo/p/161461.html
Copyright © 2011-2022 走看看