导出Excel

#region excel
        private void ReleaseObject(object obj)
        {
            try
            {
                System.Runtime.InteropServices.Marshal.ReleaseComObject(obj);
            }
            catch { }
            finally { obj = null; }
        }
        private void KillExcelProcess()
        {
            Process[] myProcesses;
            myProcesses = Process.GetProcessesByName("Excel");

            foreach (Process myProcess in myProcesses)
            {
                myProcess.Kill();
            }
        }
        private void DownloadFile(string filePath)
        {
            if (!File.Exists(filePath))
            {
                Response.Write("<script>alert('文件不存在'></script>");
                return;
            }
            string fileName = System.IO.Path.GetFileName(filePath);
            if (fileName == string.Empty)
            {
                Response.Write("<script>alert('文件不存在!'></script>");
                return;
            }
            FileInfo DownloadFile = new FileInfo(filePath);
            Response.Clear();
            Response.ClearHeaders();
            Response.Buffer = false;
            Response.ContentType = "application/octet-stream";
            Response.AppendHeader("Content-Disposition", "attachment;filename=" + HttpUtility.UrlEncode(DownloadFile.FullName, System.Text.Encoding.UTF8));
            Response.AppendHeader("Content-Length", DownloadFile.Length.ToString());
            Response.WriteFile(DownloadFile.FullName);
            Response.Flush();
            Response.End();


        }
        #endregion
       
        protected void btnExcel_Click(object sender, EventArgs e)
        {
            string VirFileName = string.Empty;
            VirFileName = "downloadfiles/BlackListDowload" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls";
            //打开excel
            Excel.ApplicationClass excel = new Excel.ApplicationClass();
            object missing = System.Reflection.Missing.Value;
            excel.Workbooks.Add(missing);

            Excel.Workbook book = excel.Workbooks[1];
            Excel.Worksheet sheet;
            sheet = (Excel.Worksheet)book.Sheets[1];

            Excel.Range rg;

            sheet.Name = "黑名单";

            #region //打表头
            rg = sheet.get_Range("A1:A1", Missing.Value);
            rg.HorizontalAlignment = Excel.Constants.xlCenter;
            rg.Value2 = "股票名称/代码";
            rg.ColumnWidth = 20;
            rg = sheet.get_Range("B1:B1", Missing.Value);
            rg.HorizontalAlignment = Excel.Constants.xlCenter;
            rg.Value2 = "所属行业";
            rg.ColumnWidth = 30;
            rg = sheet.get_Range("C1:C1", Missing.Value);
            rg.HorizontalAlignment = Excel.Constants.xlCenter;
            rg.Value2 = "日期";
            rg = sheet.get_Range("D1:D1", Missing.Value);
            rg.HorizontalAlignment = Excel.Constants.xlCenter;
            rg.Value2 = "操作人";           
            #endregion

            StockBlacklist modellist = new StockBlacklist();
            modellist.secuCode = txtQueryCode.Value;
            modellist.block = txtBlock.Value;
            modellist.addDate = string.IsNullOrEmpty(sDate.Value) ? DateTime.Parse("0001-1-1 0:00:00") : DateTime.Parse(sDate.Value);
            modellist.addDateEnd = string.IsNullOrEmpty(eDate.Value) ? DateTime.Parse("0001-1-1 0:00:00") : DateTime.Parse(eDate.Value);
            string page = Request["page"];
            string flag = Request["flag"];
            if (string.IsNullOrEmpty(flag))
            {
                flag = "1";
            }
            StockBlacklistBLL bll = new StockBlacklistBLL();
            List<StockBlacklist> list = bll.GetStockBlacklist(int.Parse(flag), modellist);

            DataTable dt = list.ToDataTable();
            int iNow = 1;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                iNow = iNow + 1;
                #region 写数据
                rg = sheet.get_Range("A" + (iNow).ToString(), Missing.Value);
                rg.Value2 = dt.Rows[i]["secuName"].ToString() + "/" + dt.Rows[i]["secuCode"].ToString();
                rg.HorizontalAlignment = Excel.Constants.xlCenter;

                rg = sheet.get_Range("B" + (iNow).ToString(), Missing.Value);
                rg.Value2 = dt.Rows[i]["block"].ToString();
                rg.HorizontalAlignment = Excel.Constants.xlCenter;

                rg = sheet.get_Range("C" + (iNow).ToString(), Missing.Value);
                rg.Value2 = dt.Rows[i]["addDate"].ToString();
                rg.HorizontalAlignment = Excel.Constants.xlRight;

                rg = sheet.get_Range("D" + (iNow).ToString(), Missing.Value);
                rg.Value2 = dt.Rows[i]["editUser"].ToString();
                rg.HorizontalAlignment = Excel.Constants.xlCenter;
                rg.ColumnWidth = 20;
                #endregion
            }
            //下面是四周画线的代码
            Excel.Range rangetitle = sheet.get_Range(sheet.Cells[1, 1], excel.Cells[iNow, 8]);
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).Weight = Excel.XlBorderWeight.xlThin;
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).Weight = Excel.XlBorderWeight.xlThin;
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeTop).Weight = Excel.XlBorderWeight.xlThin;
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeBottom).Weight = Excel.XlBorderWeight.xlThin;
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).Weight = Excel.XlBorderWeight.xlThin;
            rangetitle.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).Weight = Excel.XlBorderWeight.xlThin;

            #region EXCEL关闭
            excel.DisplayAlerts = false;
            book.SaveCopyAs(Server.MapPath(VirFileName));
            excel.Workbooks.Close();
            excel.Quit();
            sheet = null;
            this.ReleaseObject(book);
            this.ReleaseObject(excel);
            GC.Collect();
            DownloadFile(Server.MapPath(VirFileName));
            KillExcelProcess();
            #endregion

            this.Dispose();
        }

posted on 2012-05-23 15:15  李菲菲  阅读(255)  评论(0编辑  收藏  举报