//生成报表公用方法

//excelName: 生成的文件名

//list:时间/日期/描述

//listSelectFiled:  标题

//showContent :   文件内容bean

//生成报表公用方法
    public String createExcelFile(String excelName,List<String[]> listSelectField,String[] fields,List<String[]> showContent){

        HSSFWorkbook wb = new HSSFWorkbook();
        HSSFSheet sheet = wb.createSheet();
        HSSFCellStyle setBorder = wb.createCellStyle();
        //设置背景颜色
        //setBorder.setFillBackgroundColor((short)13);
        //setBorder.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);
        //设置边框
        setBorder.setBorderBottom(HSSFCellStyle.BORDER_THIN);
        setBorder.setBorderLeft(HSSFCellStyle.BORDER_THIN);
        setBorder.setBorderTop(HSSFCellStyle.BORDER_THIN);
        setBorder.setBorderRight(HSSFCellStyle.BORDER_THIN);
        //设置居中
        setBorder.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
        //设置字体
        HSSFFont font = wb.createFont();
        font.setFontName("黑体");
        font.setFontHeightInPoints((short)16);//设置字体大小

        HSSFFont font3 = wb.createFont();
        font3.setFontName("宋体");
        //font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
        font3.setFontHeightInPoints((short)14);//设置字体大小

        HSSFFont font2 = wb.createFont();
        font2.setFontName("宋体");
        //font2.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
        font2.setFontHeightInPoints((short)12);//设置字体大小

        setBorder.setFont(font); //选择需要的字体
        //设置列宽
        for (int i = 0; i < fields.length; i++) {
            sheet.setColumnWidth((short)i, (short)4000);
        }
        //所有内容居中显示的 样式(内容部分)
        HSSFCellStyle cellstyle = wb.createCellStyle();
        cellstyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
        cellstyle.setFont(font2);

        HSSFCellStyle selestyle = wb.createCellStyle();
        selestyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);//居中
        selestyle.setFont(font2);

        //合并单元格
        Region region = new Region(0,(short)0,0,(short)14);
        sheet.addMergedRegion(region);

        //第一行标题
        HSSFRow row1 = sheet.createRow(0);
        row1.setHeight((short)500);
        HSSFCell celltitle = row1.createCell((short)0);
        celltitle.setCellType(HSSFCell.CELL_TYPE_STRING);
        celltitle.setCellValue(excelName);
        celltitle.setCellStyle(setBorder);
        //合并单元格
        int ce = 0;
        for (int i = 0; i < listSelectField.size(); i++) {
            sheet.addMergedRegion(new Region(1,(short)ce,1,(short)(++ce)));
            ce+=2;
        }
        //第二行查询条件
        ce=0;
        HSSFRow row2 = sheet.createRow(1);
        row2.setHeight((short)300);
        for (int i = 0; i < listSelectField.size(); i++) {
            HSSFCell selectfields1 = row2.createCell((short)ce);
            selectfields1.setCellType(HSSFCell.CELL_TYPE_STRING);
            selectfields1.setCellValue(listSelectField.get(i)[0]+":"+listSelectField.get(i)[1]);
            selectfields1.setCellStyle(cellstyle);
            ce+=3;
        }
        //需要显示的字段名称
        HSSFRow row3 = sheet.createRow(2);
        int index= 0;
        for(String str : fields){
            HSSFCell cell = row3.createCell((short)index);
            cell.setCellType(HSSFCell.CELL_TYPE_STRING);
            cell.setCellValue(str);
            cell.setCellStyle(cellstyle);
            index++;
        }

        //需要显示的内容
        for (int i = 0; i < showContent.size(); i++) {
            HSSFRow row = sheet.createRow(i+3);
            String[] content = showContent.get(i);
            for(int j = 0;j<content.length;j++){
                HSSFCell cell = row.createCell((short)j);
                cell.setCellType(HSSFCell.CELL_TYPE_STRING);
                cell.setCellValue(content[j]);
                cell.setCellStyle(cellstyle);
            }
        }

        String destFileName = StringUtil.getNowDateFormat(null);
        String fileName = excelName+"("+destFileName+").xls";
        System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"+fileName);
        try {
            String saveurl = PathManager.getWEBINFPath()+java.io.File.separator+".."+java.io.File.separator+"ucstar_plugins"+java.io.File.separator+"ucstarwebcall"+java.io.File.separator+"reportfile"+java.io.File.separator+"";
            File fileurl = new File(saveurl);
            if(!fileurl.exists()){
                fileurl.mkdirs();
            }
            File f = new File(saveurl+java.io.File.separator+fileName);
            System.out.println("<<<<<<<<<<<<<<<<<<<<<<<<<<<<"+saveurl+java.io.File.separator+fileName);
            f.createNewFile();
            FileOutputStream fos = new FileOutputStream(f);
            wb.write(fos);
            fos.close();

            Log.console(">>>>>>>生成Excel成功!");
        } catch (Exception e) {
            Log.console(">>>>>>>生成Excel失败:"+e.getMessage());
            return "";
        }
        return fileName;
    }

}

【java】:生成excel的更多相关文章

  1. java 生成Excel开门篇

    本随笔的Excel所用的poi jar包(3.17版本)链接: https://pan.baidu.com/s/1gaa3dJueja8IraUDYCSLIQ 提取密码: 9xr7 简单实现:两个类: ...

  2. oracle PL/SQL调用Java生成Excel

    现在有个需求,  要求编写oracle存储过程生成Excel文件到指定目录,  但是oracle自己的API貌似不太给力,  所以只能通过另一种更强大的语言来实现了  ——Java.有一个Java框架 ...

  3. JAVA生成EXCEL模板

    JAVA生成excel模板,支持1.必填字段前加 红色 * 2.定义可选值下拉列表 valList3.定义名称并通过名称设置可选值 refName(名称在sheet2,sheet2自动隐藏)4.支持设 ...

  4. 两种方式实现java生成Excel

    Web应用中难免会遇到需要将数据导出并生成excel文件的需求.同样,对于本博客中的总结,也是建立在为了完成这样的一个需求,才开始去了解其实现形式,并且顺利完成需求的开发,先将实现过程总结于此.本博文 ...

  5. Java生成excel导出文件(使用poi+JXL)

    1.使用poi生成文件 package com.mi.entity; import java.util.Date; public class Student { private int id; pri ...

  6. [转]java生成 excel 并导出文件

    原文:https://blog.csdn.net/xunwei0303/article/details/53213130 目前,比较常用的实现Java导入.导出Excel的技术有两种Jakarta P ...

  7. java生成excel报表文件

    此次简单的操作将数据从数据库导出生成excel报表以及将excel数据导入数据库 首先建立数据库的连接池: package jdbc; import java.io.FileInputStream; ...

  8. java生成excel,word文件

    第一部分: 在网站开发中,用户可能需要打印word或者excel表,这种需求是非常多的. java语言生成excel表格和python的方式有点像,使用Apache POI的组件,一通全通.开发过程通 ...

  9. JAVA生成EXCEL图表

    跟据客户的要求,需要开发一套包括图形的报表,还需要导出WORD 图表需要这样: 这样: 这样: 还有这样: 接下来是实现思路: 以往用的最多的就是JFreechart,手上也有实现各种图形的资源,但是 ...

  10. java生成excel

    package test.poi; import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; ...

随机推荐

  1. 在ios8中做的屏幕旋转功能

    http://www.cnblogs.com/smileEvday/archive/2013/04/24/Rotate2.html 思路出自这篇博主的文章. 直接上代码 -(void)willAnim ...

  2. php二维数组排序方法(转自http://www.3lian.com/edu/2013/12-26/118882.html)

    一维数组排序可以使用asort.ksort等一些方法进程排序,相对来说比较简单.二维数组的排序怎么实现呢?使用array_multisort和usort可以实现 例如像下面的数组:    代码如下: ...

  3. No.3__C#

    起步的迷思 周二:今天起来,天上下着小雨,气温降低了许多.从上周的二十多度又回到了七八度的样子.多穿了一件衣服,顶着寒风就出门了,确实是有点冷.到了公司,已经八点四十几了.有些小疲倦,头晕晕沉沉的,不 ...

  4. EventBus的一个bug??

    今天遇到了一个很奇怪的问题,activity A打开B,A和B中都注册了eventbus,都会接一个list的参数,当然两个list的参数不同,居然会报一个异常,A中List的参数会变成B的类型,错误 ...

  5. Opera放弃自家内核转投WebKit的背后(转)

    Opera在2月13日宣布用户突破3亿,并且带着这3亿用户投入WebKit阵营,自家的Presto内核将会走入历史.Opera为什么选择在现在这个时间点放弃自有内核?之前Opera的坚持自主研发一直被 ...

  6. Qlikview 处理交叉表数据

    数据来源于crossTable的时候,如何将数据做明细显示. 如图示交叉表数据 使用表格向导,选择交叉表按钮, 结果达到目的. 相关脚本. Month, 表示将要新加的字段的列明,Orders 为明细 ...

  7. html和css基础

    背景: 最近公司开发BS架构的项目,公司主要业务也不是做BS开发的,没有项目经理,没有美工,没有前端,界面丑的不要不要的,哈哈哈 然后咧,使用asp.net用着用着,技术老大觉得界面怎么可以这么丑,不 ...

  8. 如何进行服务器的批量管理以及python 的paramiko的模块

    最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...

  9. linux tr命令详解

    通过使用 tr,您可以非常容易地实现 sed 的许多最基本功能.您可以将 tr 看作为 sed 的(极其)简化的变体:它可以用一个字符来替换另一个字符,或者可以完全除去一些字符.您也可以用它来除去重复 ...

  10. 《算法设计手册》面试题解答 第五章:图的遍历 附:DFS应用之找挂接点

    第五章面试题解答 5-31. DFS和BFS使用了哪些数据结构? 解析: 其实刚读完这一章,我一开始想到的是用邻接表来表示图,但其实用邻接矩阵也能实现啊?后来才发现应该回答,BFS用队列实现:DFS可 ...