欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载,excel工具类,java通用的Excel

来源: javaer 分享于  点击 33052 次 点评:213

Java通用的Excel文件生成工具类,支持生成文件和浏览器直接下载,excel工具类,java通用的Excel


java通用的Excel文件创建方法,支持同文件多tab页创建。只需要调用静态方法,传递List<String>表头和List<Map>数据集合等,即可生成Excel文件。```javapackage com.matols.utils;

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;

import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFCellStyle;import org.apache.poi.hssf.usermodel.HSSFFont;import org.apache.poi.hssf.usermodel.HSSFRichTextString;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.util.HSSFColor;

import com.google.common.collect.Lists;

/* * Excel工具类 /public class ExcelUtils { public static void main(String[] args) throws Throwable { String path = "D:/tj/统计报表.xls"; //表头 List<String> headers = Lists.newArrayList(); for (int i = 1; i < 10; i++) { headers.add("表头"+i); } //数据行 List<Map> datas = new ArrayList<Map>(); Map m = null; for(int i=1;i<10;i++){ m = new HashMap(); //一行数据集 for(int j=0;j<headers.size();j++){ m.put(j, "第"+i+" 行数据:"+j); } datas.add(m); } ExpExs(path,"","统计报表",headers,datas); }

/* * 通用的Excel文件创建方法 *   title:首行标题: 2015年度统计报表 *  sheets:sheet的tab标签页说明: 15年度报表 * headers:表头:List存放表头  编号、姓名、备注 *   datas:数据行:list存放实体数据,map存放具体每一行数据,和headers对应。 *      rs:HttpServletResponse响应作用域,如果不为null,会直接将文件流输出到客户端,下载文件 */public static void ExpExs(String title,String sheets,List headers,List<Map> datas,HttpServletResponse rs){    try {         if(sheets== null || "".equals(sheets)){ sheets = "sheet"; }        HSSFWorkbook workbook = new HSSFWorkbook();         HSSFSheet sheet = workbook.createSheet(sheets); //+workbook.getNumberOfSheets()        HSSFRow row;        HSSFCell cell;        // 设置这些样式        HSSFFont font = workbook.createFont();        font.setFontName(HSSFFont.FONT_ARIAL);//字体        font.setFontHeightInPoints((short) 16);//字号         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗        //font.setColor(HSSFColor.BLUE.index);//颜色        HSSFCellStyle cellStyle= workbook.createCellStyle(); //设置单元格样式        cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER );        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);        cellStyle.setFont(font);        //产生表格标题行               row = sheet.createRow(0);        row.setHeightInPoints(20);        for (int i = 0; i < headers.size(); i++) {             HSSFRichTextString text = new HSSFRichTextString(headers.get(i).toString());              cell = row.createCell(i);            cell.setCellValue(text);             cell.setCellStyle(cellStyle);        }        cellStyle= workbook.createCellStyle();         cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);        cellStyle.setDataFormat((short)0x31);//设置显示格式,避免点击后变成科学计数法了        //cellStyle.setWrapText(true);//设置自动换行        Map map;        //遍历集合数据,产生数据行          for (int i=0; i <datas.size(); i++) {             row=sheet.createRow((i+1));            row.setHeightInPoints(20);            map = datas.get(i);            for(int j=0;j<map.size();j++) {                 cell = row.createCell(j);                 cell.setCellStyle(cellStyle);                 cell.setCellType(HSSFCell.CELL_TYPE_STRING);                 if(map.get(j) != null) {                     cell.setCellValue(new HSSFRichTextString(map.get(j).toString()));                  }else{                     cell.setCellValue(new HSSFRichTextString(""));                     }            }        }        for (int i = 0; i < headers.size(); i++) {             sheet.autoSizeColumn((short)i);        }        rs.reset();        rs.setContentType("multipart/form-data"); //自动识别        rs.setHeader("Content-Disposition","attachment;filename=data.xls");        //文件流输出到rs里        workbook.write(rs.getOutputStream());        rs.getOutputStream().flush();        rs.getOutputStream().close();    } catch (Exception e) {          System.out.println("#Error ["+e.getMessage()+"] ");    }     System.out.println("["+sheets+"] 创建成功...");    System.out.println("");}/* * 通用的Excel文件创建方法 *    path:保存路径: C:/xls/统计报表.xls *   title:首行标题: 2015年度统计报表 *  sheets:sheet的tab标签页说明: 15年度报表 * headers:表头:List存放表头  编号、姓名、备注 *   datas:数据行:list存放实体数据,map存放具体每一行数据,和headers对应。 */public static void ExpExs(String path,String title,String sheets,List headers,List<Map> datas){    try {         if(sheets== null || "".equals(sheets)){ sheets = "sheet"; }        boolean isExist = new File(path).exists();        if(!isExist){            HSSFWorkbook workbook = new HSSFWorkbook();            HSSFSheet sheet = workbook.createSheet(sheets);            FileOutputStream out = new FileOutputStream(new File(path));            workbook.write(out);            out.flush();            out.close();        }        FileInputStream file = new FileInputStream(new File(path));        HSSFWorkbook workbook = new HSSFWorkbook(file);        HSSFSheet sheet = null;        if(!isExist){            sheet = workbook.getSheetAt(0);        }else{            if(workbook.getSheet(sheets) == null){                sheet = workbook.createSheet(sheets); //+workbook.getNumberOfSheets()            }else{                System.out.println("文件:["+path+"] ["+sheets+"] 已经存在...");                System.out.println("");                return;            }        }        HSSFRow row;        HSSFCell cell;        // 设置这些样式        HSSFFont font = workbook.createFont();        font.setFontName(HSSFFont.FONT_ARIAL);//字体        font.setFontHeightInPoints((short) 16);//字号         font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//加粗        //font.setColor(HSSFColor.BLUE.index);//颜色        HSSFCellStyle cellStyle= workbook.createCellStyle(); //设置单元格样式        cellStyle.setFillForegroundColor(HSSFColor.PALE_BLUE.index);        cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);        cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER );        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);        cellStyle.setFont(font);        //产生表格标题行               row = sheet.createRow(0);        row.setHeightInPoints(20);        for (int i = 0; i < headers.size(); i++) {             HSSFRichTextString text = new HSSFRichTextString(headers.get(i).toString());              cell = row.createCell(i);            cell.setCellValue(text);             cell.setCellStyle(cellStyle);        }        cellStyle= workbook.createCellStyle();         cellStyle.setAlignment(HSSFCellStyle.ALIGN_LEFT);        cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);        cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);        cellStyle.setDataFormat((short)0x31);//设置显示格式,避免点击后变成科学计数法了        //cellStyle.setWrapText(true);//设置自动换行        Map map;        //遍历集合数据,产生数据行          for (int i=0; i <datas.size(); i++) {             row=sheet.createRow((i+1));            row.setHeightInPoints(20);            map = datas.get(i);            for(int j=0;j<map.size();j++) {                 cell = row.createCell(j);                 cell.setCellStyle(cellStyle);                 cell.setCellType(HSSFCell.CELL_TYPE_STRING);                 if(map.get(j) != null) {                     cell.setCellValue(new HSSFRichTextString(map.get(j).toString()));                  }else{                     cell.setCellValue(new HSSFRichTextString(""));                     }            }        }        for (int i = 0; i < headers.size(); i++) {             sheet.autoSizeColumn((short)i);        }        FileOutputStream out = new FileOutputStream(new File(path));        workbook.write(out);        out.flush();        out.close();        /*        HSSFRow row = sheet.createRow(sheets);        HSSFCell cell = null;        cell=row.createCell(sheets);        cell.setCellValue(new HSSFRichTextString("-["+sheets+"]-"));        sheets=sheets+2;//中间空一行        row=sheet.createRow(sheets);        */    } catch (Exception e) {          System.out.println("#Error ["+e.getMessage()+"] ");    }     System.out.println("文件:["+path+"] ["+sheets+"] 创建成功...");    System.out.println("");}

}```

相关栏目:

用户点评