//导出事件,这个是有合并动态列的

double num1 = 0, num2 = 0, num3 = 0;

protected void btnExcel_Click(object sender, ImageClickEventArgs e)
    {
        num1 = 0; num2 = 0; num3 = 0;
        DirectoryInfo fdir = new DirectoryInfo(Server.MapPath(@"\TmpReport"));
        FileInfo[] files = fdir.GetFiles();
        for (int i = 0; i < files.Length - 1; i++)
        {
            if (files[i].Name.IndexOf("tmp") >= 0)
            {
                try
                {
                    files[i].Delete();
                }
                catch (Exception ex)
                {
                }
            }
        }         string time = DateTime.Now.ToString("yyyyMMddHHmmss");
        FileInfo fi = new FileInfo(Server.MapPath(@"\Excel\每日信貸報告.xls"));
        fi.CopyTo(Server.MapPath(@"\TmpReport\tmp" + time + ".xls"));         Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();
        Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
        Microsoft.Office.Interop.Excel.Workbook xlBook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
        Microsoft.Office.Interop.Excel.Worksheet xlSheet = new Microsoft.Office.Interop.Excel.Worksheet();
        xlBook = xlApp.Workbooks.Open(Server.MapPath(@"\TmpReport\tmp" + time + ".xls"));
        xlSheet = (Microsoft.Office.Interop.Excel.Worksheet)xlBook.Worksheets.get_Item(1);
        int tmpid = 2;
        string rowSheet = "";
        string 可簽額 = "";
        string 戶主名 = "";
        int count1 = 2;
        int count2 = 2;
        int Colorindex = 0;
        for (int i = 0; i < dtList.Rows.Count; i++)
        {
            string rowSheet1 = Convert.ToString(dtList.Rows[i]["戶號"]);
            
            if (rowSheet1 == rowSheet)
            {
                //xlSheet.Cells[tmpid, 1] = "";
                //xlSheet.Cells[tmpid, 2] = "";
                //xlSheet.Cells[tmpid, 3] = "";
            }
            else
            {
                if (rowSheet != "")
                {
                    Microsoft.Office.Interop.Excel.Range integral = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("A" + count1, "A" + (count2 - 1));
                    integral.MergeCells = true;
                    integral.Value = 可簽額;
                    integral.Font.Size = 16;
                    integral.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;                     integral.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;                     Microsoft.Office.Interop.Excel.Range integral1 = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("B" + count1, "B" + (count2 - 1));
                    integral1.MergeCells = true;
                    integral1.Value = rowSheet;
                    integral1.Font.Size = 16;
                   // integral1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
                    integral1.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    integral1.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;                     Microsoft.Office.Interop.Excel.Range integral2 = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("C" + count1, "C" + (count2 - 1));
                    integral2.MergeCells = true;
                    integral2.Value = 戶主名;
                    integral2.Font.Size = 16;
                    integral2.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
                    integral2.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;                     Colorindex = 15;
                    if (Colorindex != 0)
                    {
                        Microsoft.Office.Interop.Excel.Range integrals = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("a" + tmpid, "I" + tmpid);
                        integrals.Interior.ColorIndex = 15;
                        Colorindex = 0;
                    }
                    count2++;
                    tmpid++;
                    count1 = count2;
                    
                   
                    //xlSheet.Cells[tmpid, 1] = dtList.Rows[i]["可簽額"];
                    //xlSheet.Cells[tmpid, 2] = dtList.Rows[i]["戶號"];
                    //xlSheet.Cells[tmpid, 3] = dtList.Rows[i]["戶主名"];
                }
                rowSheet = rowSheet1;
                可簽額 = Convert.ToString(dtList.Rows[i]["可簽額"]);
                戶主名 = Convert.ToString(dtList.Rows[i]["戶主名"]);
            }
            
            num1 += Convert.ToDouble(dtList.Rows[i]["貸款額"].ToString());
            num2 += Convert.ToDouble(dtList.Rows[i]["還款額"].ToString());
            num3 += Convert.ToDouble(dtList.Rows[i]["餘額"].ToString());             xlSheet.Cells[tmpid, 4] = dtList.Rows[i]["借款人"];
            xlSheet.Cells[tmpid, 5] = dtList.Rows[i]["單編號"];             double a = Convert.ToDouble(dtList.Rows[i]["貸款額"].ToString());             double b = Convert.ToDouble(dtList.Rows[i]["還款額"].ToString());
            double c = Convert.ToDouble(dtList.Rows[i]["餘額"].ToString());
            string aStr = "", bStr = "", cStr = "";
            if (a != 0)
            {
                aStr = a.ToString("#,##0.####");
            }
            if (b != 0)
            {
                bStr = b.ToString("#,##0.####");
            }
            if (c != 0)
            {
                cStr = c.ToString("#,##0.####");
            }
            xlSheet.Cells[tmpid, 6] = aStr;
            xlSheet.Cells[tmpid, 7] = bStr;
            xlSheet.Cells[tmpid, 8] = cStr;
            xlSheet.Cells[tmpid, 9] = dtList.Rows[i]["下單號"];
            tmpid = tmpid + 1;
            count2++;
        }         Microsoft.Office.Interop.Excel.Range integral3 = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("A" + count1, "A" + (count2 - 1));
        integral3.MergeCells = true;
        integral3.Value = 可簽額;
        integral3.Font.Size = 16;
        integral3.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        integral3.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;         Microsoft.Office.Interop.Excel.Range integral4 = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("B" + count1, "B" + (count2 - 1));
        integral4.MergeCells = true;
        integral4.Value = rowSheet;
        integral4.Font.Size = 16;
        integral4.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        integral4.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;         Microsoft.Office.Interop.Excel.Range integral5 = (Microsoft.Office.Interop.Excel.Range)xlSheet.get_Range("C" + count1, "C" + (count2 - 1));
        integral5.MergeCells = true;
        integral5.Value = 戶主名;
        integral5.Font.Size = 16;
        integral5.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
        integral5.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;         //獲取行
        Microsoft.Office.Interop.Excel.Range rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 1];         rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 1];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 2];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 3];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 4];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 5];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 6];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 7];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 8];
        rg.Interior.ColorIndex = 15;
        rg = (Microsoft.Office.Interop.Excel.Range)xlSheet.Cells[tmpid, 9];
        rg.Interior.ColorIndex = 15;         xlSheet.Cells[tmpid, 1] = "";
        xlSheet.Cells[tmpid, 2] = "";
        xlSheet.Cells[tmpid, 3] = "";
        xlSheet.Cells[tmpid, 4] = "";
        xlSheet.Cells[tmpid, 5] = "合計:";
        xlSheet.Cells[tmpid, 6] = num1.ToString("#,##0.####");
        xlSheet.Cells[tmpid, 7] = num2.ToString("#,##0.####");
        xlSheet.Cells[tmpid, 8] = num3.ToString("#,##0.####");         xlSheet.SaveAs(Server.MapPath(@"\TmpReport\tmp" + time + "1.xls"));
        xlBook.Close();
        xlApp.Quit();
        Response.Expires = 0;         Response.Clear();
        Response.Buffer = true;
        Response.Charset = "utf-8";
        Response.ContentEncoding = System.Text.Encoding.UTF8;
        Response.ContentType = "application/vnd.ms-excel";
        Response.AddHeader("Content-Disposition", "attachment; filename=" + HttpUtility.UrlEncode("每日信貸報告.xls"));
        Response.WriteFile(Server.MapPath(@"\TmpReport\tmp" + time + "1.xls"));
        Response.Flush();
        Response.Clear();     }

個人最近做的最多的重複工作就是excel导出的更多相关文章

  1. Oracle运维 专业的事情交给专业的人来做

    关于Oracle运维的重要性,随便写了几句,放在这儿和大家共勉. Oracle数据库在RDBMS中独占熬头,07年统计其市场份额占关系数据库市场的48.6%稳居首位,而且逐年增加,上升势头强劲.在使用 ...

  2. [原创]浅谈IT人如何做理财规划

    [原创]浅谈IT人如何做理财规划 鱼哥博客上多数写的是技术和管理相关,但很少有理财等话题,今天抽空来谈谈IT人如何做理财规划,如果要想学习理财,我想很有名的“标准普尔家庭资产象限图”上值得每个学习和理 ...

  3. (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 并不挶泥在这个点子上面,它反而往后站一步,看看他们已经做好的这个网站,可以再怎么包装成另一个完完全全不同的网站?所有的人所做的每件失败的事情中, 一定有碰到或含有成功的答案」在里面,只是他们不知道而已。 人不怕失败」,只怕宣布失败」

    (转)Groupon前传:从10个月的失败作品修改,1个月找到成功 今天读到 一个非常励志人心的故事 ,就像现在「叶问」有「前传」,最近很火红的团集购网站Groupon 也出现了「Groupon前传」 ...

  4. 在做excel导出时如何将excel直接写在输出流中

    之前做excel导出时,我都是先将文件写在服务器上,然后再下载下来,后来发现原来可以直接将文件写在输出流里边. 下面是一个小demo: package com.huaqin.fcstrp.util; ...

  5. [ASP.NET] 使用Loading遮罩防止使用者重複點擊

    From: http://www.dotblogs.com.tw/joysdw12/archive/2012/12/13/85629.aspx 前言 在網頁執行中可能會因為資料量大或其他原因影響使用者 ...

  6. 【EXCEL】簡単に重複探し

    下記のような表があって.重複があるかどうか探すのが大変と思いますが. 簡単に重複探す方法を紹介します. Step1.重複を探す(例えこちらでは項目)を選択します. Step2.メニューで 条件付き書式 ...

  7. 平时没有怎么用Excel做 加减乘除 计算,猛地发现,其实Excel 是一个很好的简单计算器

    平时没有怎么用Excel做 加减乘除 计算,猛地发现,其实Excel 是一个很好的简单计算器

  8. SQL Sever 刪除重複數據只剩一條

    use book go create table ##T1( n int, a nvarchar(20) ) --查詢重複記錄,插入臨時表 insert into ##T1(n,a) select s ...

  9. 为啥我做的RFM模型被人说做错了,我错哪了?

    本文转自知乎 作者:接地气的陈老师 ————————————————————————————————————————————————————— 有同学问:“为啥我做的RFM模型被客户/业务部门批斗,说 ...

随机推荐

  1. oracle数据库导入导出命令!

    Oracle数据导入导出imp/exp 功能:Oracle数据导入导出imp/exp就相当与oracle数据还原与备份. 大多情况都可以用Oracle数据导入导出完成数据的备份和还原(不会造成数据的丢 ...

  2. JS生成指定长度的随机数

    /** * 生成指定长度的UUID * @param len * @param radix * @returns uuid * eg: createUUID(8, 2) "01001010& ...

  3. 纠结和郁闷的存在感-关于DirectX与HLSL的矩阵存储方式---转载好文章

    我常常这么大胆的认为,搞科学的人总是喜欢用各种让常人难以理解的复杂方式去处理某些其实可能很简单的事情,这种情况在他自身擅长的.有着诸多对手竞争的领域上极为常见.比如吧,搞DirectX的人用了左手坐标 ...

  4. 函数lock_rec_has_expl

    判断是否预加锁的模式 要强壮于 已添加的lock锁模式 /*********************************************************************// ...

  5. R语言串行与并行Apply用法

    串行 APPLY<- function(m){ mTemp <- apply(m, 2, mysort) return(mTemp)} snowfall包的并行 SNOWFALL<- ...

  6. UVa 12265 (单调栈) Selling Land

    紫书上分析了很多很多,超详细,= ̄ω ̄= 每扫描一行可以计算一个height数组,表示从这块空地向上延伸多少块空地,而且这个数组可以逐行递推. 首先对于每一行来说维护一个单调栈,栈里放的是矩形的左上角 ...

  7. 安装 Visual Stuidio 2010 失败

    百思不得其解,尝试解压安装iso文件,解压都正常,怀疑Daemon Tools 是不是有问题? 最终问题还是定位在文件出问题了.SHA值不一样,囧!

  8. android studio 加载第三方类库

    以引入Xutil包为例 1. 将Xutil包导入到module的libs目录下 2. File->project structure 还有一种方法是在libs目录下右键点击Add as libr ...

  9. python练习程序(c100经典例20)

    题目: 一球从100米高度自由落下,每次落地后反跳回原高度的一半:再落下,求它在第10次落地时,共经过多少米?第10次反弹多高? def foo(height,num): sum=height; pr ...

  10. (转)Mac OS X写了个rm时将文件放入回收站的小工具

    上次由于公司里机器要面临重装,开始仓皇地将Mac本里的文件scp到我的台式机上.忙乱之中本来要删除一个无用的文件夹的,结果用rm -rf的时候tab了一下,补全出来的文件都没看清就按下了回车,毫无疑问 ...