package com.it.poi; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; 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 org.apache.poi.hssf.util.Region; @SuppressWarnings("deprecation") public class ExportExcel { private HSSFWorkbook wb = null; private HSSFSheet sheet = null; /** * @param wb * @param sheet */ public ExportExcel(HSSFWorkbook wb, HSSFSheet sheet) { super(); this.wb = wb; this.sheet = sheet; } /** * @return the sheet */ public HSSFSheet getSheet() { return sheet; } /** * @param sheet * the sheet to set */ public void setSheet(HSSFSheet sheet) { this.sheet = sheet; } /** * @return the wb */ public HSSFWorkbook getWb() { return wb; } /** * @param wb * the wb to set */ public void setWb(HSSFWorkbook wb) { this.wb = wb; } /** * 创建通用EXCEL头部 * * @param headString * 头部显示的字符 * @param colSum * 该报表的列数 */ public void createNormalHead(String headString, int colSum) { HSSFRow row = sheet.createRow(0); // 设置第一行 HSSFCell cell = row.createCell(0); row.setHeight((short) 400); // 定义单元格为字符串类型 cell.setCellType(HSSFCell.ENCODING_UTF_16); cell.setCellValue(new HSSFRichTextString(headString)); // 指定合并区域 sheet.addMergedRegion(new Region(0, (short) 0, 0, (short) colSum)); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 300); cellStyle.setFont(font); cell.setCellStyle(cellStyle); } /** * 创建通用报表第二行 * * @param params * 统计条件数组 * @param colSum * 需要合并到的列索引 */ public void createNormalTwoRow(String[] params, int colSum) { HSSFRow row1 = sheet.createRow(1); row1.setHeight((short) 300); HSSFCell cell2 = row1.createCell(0); cell2.setCellType(HSSFCell.ENCODING_UTF_16); cell2.setCellValue(new HSSFRichTextString("统计时间:" + params[0] + "至" + params[1])); // 指定合并区域 ALIGN_CENTER sheet.addMergedRegion(new Region(1, (short) 0, 1, (short) colSum)); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); cell2.setCellStyle(cellStyle); } /** * 设置报表标题 * * @param columHeader * 标题字符串数组 */ public void createColumHeader(String[] columHeader) { // 设置列头 HSSFRow row2 = sheet.createRow(2); // 指定行高 row2.setHeight((short) 600); HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); /* * cellStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 设置单无格的边框为粗体 * cellStyle.setBottomBorderColor(HSSFColor.BLACK.index); // 设置单元格的边框颜色. * cellStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN); * cellStyle.setLeftBorderColor(HSSFColor.BLACK.index); * cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); * cellStyle.setRightBorderColor(HSSFColor.BLACK.index); * cellStyle.setBorderTop(HSSFCellStyle.BORDER_THIN); * cellStyle.setTopBorderColor(HSSFColor.BLACK.index); */ // 设置单元格背景色 cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); HSSFCell cell3 = null; for (int i = 0; i < columHeader.length; i++) { cell3 = row2.createCell(i); cell3.setCellType(HSSFCell.ENCODING_UTF_16); cell3.setCellStyle(cellStyle); cell3.setCellValue(new HSSFRichTextString(columHeader[i])); } } /** * 创建内容单元格 * * @param wb * HSSFWorkbook * @param row * HSSFRow * @param col * short型的列索引 * @param align * 对齐方式 * @param val * 列值 */ public void cteateCell(HSSFWorkbook wb, HSSFRow row, int col, short align, String val) { HSSFCell cell = row.createCell(col); cell.setCellType(HSSFCell.ENCODING_UTF_16); cell.setCellValue(new HSSFRichTextString(val)); HSSFCellStyle cellstyle = wb.createCellStyle(); cellstyle.setAlignment(align); cell.setCellStyle(cellstyle); } /** * 创建合计行 * * @param colSum * 需要合并到的列索引 * @param cellValue */ public void createLastSumRow(int colSum, String[] cellValue) { HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);// 指定单元格垂直居中对齐 cellStyle.setWrapText(true);// 指定单元格自动换行 // 单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeight((short) 250); cellStyle.setFont(font); HSSFRow lastRow = sheet.createRow((short) (sheet.getLastRowNum() + 1)); HSSFCell sumCell = lastRow.createCell(0); sumCell.setCellValue(new HSSFRichTextString("合计")); sumCell.setCellStyle(cellStyle); sheet.addMergedRegion(new Region(sheet.getLastRowNum(), (short) 0, sheet.getLastRowNum(), (short) colSum));// 指定合并区域 for (int i = 2; i < (cellValue.length + 2); i++) { sumCell = lastRow.createCell(i); sumCell.setCellStyle(cellStyle); sumCell.setCellValue(new HSSFRichTextString(cellValue[i - 2])); } } /** * 输入EXCEL文件 * * @param fileName * 文件名 */ public void outputExcel(String fileName) { FileOutputStream fos = null; try { fos = new FileOutputStream(new File(fileName)); wb.write(fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
最近下载更多
最近浏览更多
1358849392 LV21
2023年11月21日
weijianguo LV7
2023年5月21日
8战魂5无双8 LV43
2022年9月13日
最代码灬丿正牌 LV16
2022年9月4日
745075779 LV5
2022年2月8日
地方撒地方的 LV2
2021年12月18日
2607825144qq LV3
2021年12月8日
释辰
2021年10月29日
暂无贡献等级
无理
2021年9月9日
暂无贡献等级
落雨适合睡觉
2021年8月10日
暂无贡献等级