创建一个封装类:

 package com.jason.excel;

 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.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellValue;
 import org.apache.poi.ss.usermodel.FormulaEvaluator;
 import org.apache.poi.ss.util.CellRangeAddress;

 /**
  * 生成可以合并的单元格的Excel
  * @function
  * @author 小风微凉
  * @time  2018-8-9 下午8:02:30
  */
 public class CreateExcelUtil {

     /**
      * 生成字体(HSSFFont)
      * @param workBook  excel对象(必输项)
      * @param fontName  字体名称(选填项,可直接null默认处理)
      * @param fontSize  字体大小(选填项,可直接-1,默认处理)
      * @param fontColor 字体颜色(选填项,可直接-1,默认处理)
      * @return
      */
     public static HSSFFont getFont(HSSFWorkbook workBook,String fontName,int fontSize,int fontColor){
         HSSFFont font=workBook.createFont();
         if(fontName==null){
             font.setFontName("宋体");
         }else{
             font.setFontName(fontName);
         }
         if(fontSize<=0){
             font.setFontHeightInPoints((short) 14);// 设置字体大小
         }else{
             font.setFontHeightInPoints((short) fontSize);// 设置字体大小
         }
         if(fontColor>0){
             font.setColor((short) fontColor);
         }
         return font;
     }
     /**
      * 获取样式(HSSFCellStyle)
      * @param workBook excel对象(必输项)
      * @param lfc       样式对齐类型,默认null居中,lfc="left"   lfc="right"  lfc="center"
      * @return
      */
     public static HSSFCellStyle getStyle(HSSFWorkbook workBook,HSSFFont font,String lfc){
         HSSFCellStyle style=workBook.createCellStyle();
         //默认上下居中
         style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
         if(lfc==null || "center".equals(lfc)){
             style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//字体居中
         }else if("left".equals(lfc)){
             style.setAlignment(HSSFCellStyle.ALIGN_LEFT);//字体居左
         }else if("right".equals(lfc)){
             style.setAlignment(HSSFCellStyle.ALIGN_RIGHT);//字体居右
         }else{
             style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//字体居中
         }
         if(font!=null){
             style.setFont(font);
         }
         return style;
     }
     /**
      * 合并行,合并列处理
      * @param sheet 当前sheet对象
      * @param fromRowIndex  从第*行开始(起始索引值为0)
      * @param toRowIndex    到第*行结束
      * @param fromColIndex  从第*列开始(起始索引值为0)
      * @param toColIndex    到第*列结束
      * @see 举例:setMergeArea(sheet,0,0,0,1):合并sheet下的第一行,前2列
      */
     public static void setMergeArea(HSSFSheet sheet,int fromRowIndex,int toRowIndex,int fromColIndex,int toColIndex){
         sheet.addMergedRegion(new CellRangeAddress(fromRowIndex,toRowIndex,fromColIndex,toColIndex));
     }

     /**
      * 生成指定行的单元格
      * @param row    指定行对象
      * @param cellIndex   单元格在所在行的列索引值
      * @param style  单元格样式对象
      * @param info   单元格内的信息
      * @return
      */
     public static HSSFCell createCell(HSSFRow row,int cellIndex,HSSFCellStyle style,String info){
         HSSFCell cell=row.createCell(cellIndex);
         if(style!=null){
             cell.setCellStyle(style);
         }
         if(!"".equals(info) && info!=null){
             cell.setCellValue(info);
         }
         return cell;
     }
     /**
      * 获取默认sheet对象
      * @param workBook  excel对象
      * @param defaultColWidth  列宽(字符个数宽度)
      * @return
      */
     public static HSSFSheet getDefaultSheet(HSSFWorkbook workBook,int defaultColWidth){
         HSSFSheet sheet = workBook.createSheet();
         //设置默认列宽
         if(defaultColWidth<=0){
             sheet.setDefaultColumnWidth(13);
         }else{
             sheet.setDefaultColumnWidth(defaultColWidth);
         }
         return sheet;
     }
     /**
      * 生成一个单元行对象
      * @param sheet sheet对象
      * @param rowIndex  生成的行索引值
      * @param defaultHeight 设置默认行的高度
      * @return
      */
     public static HSSFRow creatRow(HSSFSheet sheet,int rowIndex,int defaultHeight){
         HSSFRow row=sheet.createRow(rowIndex);
         if(defaultHeight>0){
             row.setHeight((short)defaultHeight);
         }
         return row;
     }
     /**
      * 获取自带统计功能的单元格对象
      * @param workBook excel对象
      * @param row    指定行对象
      * @param cellIndex   单元格在所在行的列索引值
      * @param style  单元格样式对象
      * @param info   单元格内的信息
      * @param formula 计算公式
      * @return
      */
     public static  HSSFCell createCellFormula(HSSFWorkbook workBook,HSSFRow row,int cellIndex,HSSFCellStyle style,String info,String formula){
         HSSFCell cell=row.createCell(cellIndex);
         if(style!=null){
             cell.setCellStyle(style);
         }
         if(!"".equals(info) && info!=null){
             cell.setCellValue(info);
         }
         cell.setCellType(Cell.CELL_TYPE_FORMULA);
         cell.setCellFormula(formula);//计算公式
         FormulaEvaluator evaluator = workBook.getCreationHelper().createFormulaEvaluator();
         evaluator.evaluateFormulaCell(cell);
         CellValue cellValue = evaluator.evaluate(cell);
         return cell;
     }
     /**
      * 统计计算公式(+)求和
      * @param tagert  列标记
      * @param begIndex   起始索引
      * @param endIndex   终止索引
      * @return    返回计算公式
      */
     public static String getSumStr(String tagert,int begIndex,int endIndex){
         String retStr=tagert+begIndex;
         for(int i=begIndex+1;i<=endIndex;i++ ){
             retStr+=("+"+tagert+i);
         }
         return "SUM("+retStr+")";
     }
     /**
      * 生产excel文件到指定的路径下
      * @param workBook excel对象
      * @param sheetName sheet名称
      * @param filePathName 保存路径
      */
     public static void writeToExcelFile(HSSFWorkbook workBook,String sheetName,String filePathName){
         workBook.setSheetName(0,sheetName);
         FileOutputStream fileOut = null;
         try {
             fileOut = new FileOutputStream(filePathName);
         } catch (FileNotFoundException e1) {
             e1.printStackTrace();//异常信息需要日志记录
         }
         try {
             workBook.write( fileOut );
         } catch (IOException e) {
             e.printStackTrace();
         }
     }
 }

测试类:

 package com.jason.test;

 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.HSSFRow;
 import org.apache.poi.hssf.usermodel.HSSFSheet;
 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
 import org.apache.poi.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellValue;
 import org.apache.poi.ss.usermodel.FormulaEvaluator;
 import org.apache.poi.ss.util.CellRangeAddress;

 import com.jason.excel.CreateExcelUtil;

 public class Test2 {
     /**
      * 每个报表都不相同
      */
     private static String[] arr={"B","C","D","E","F","G","H","I","J","K","L"};
     public static void main(String[] args)throws FileNotFoundException, IOException {
         // 创建HSSFWorkbook对象
         HSSFWorkbook workBook = new HSSFWorkbook();
         //创建sheet对象
         HSSFSheet sheet = CreateExcelUtil.getDefaultSheet(workBook,13);
         //创建字体和样式
         HSSFFont font=CreateExcelUtil.getFont(workBook, null, -1, -1);
         HSSFCellStyle style=CreateExcelUtil.getStyle(workBook, font,"center");//居中样式
         HSSFCellStyle style_left=CreateExcelUtil.getStyle(workBook,font, "left");//居左样式

         //创建第1行
         CreateExcelUtil.setMergeArea(sheet, 0,0,0,11);
         HSSFRow row_1=CreateExcelUtil.creatRow(sheet, 0, 500);
         HSSFCell cell_1_1=CreateExcelUtil.createCell(row_1, 0, style, "企业网银关键业务统计报表");
         //创建第2行
         CreateExcelUtil.setMergeArea(sheet, 1,1,1,3);
         CreateExcelUtil.setMergeArea(sheet, 1,1,5,11);
         HSSFRow row_2=CreateExcelUtil.creatRow(sheet, 1, 400);
         //报表类型
         HSSFCell cell_2_1=CreateExcelUtil.createCell(row_2, 0, style, "报表类型");
         HSSFCell cell_2_2=CreateExcelUtil.createCell(row_2, 1, style_left,"日报表" );
         //统计时间
         HSSFCell cell_2_3=CreateExcelUtil.createCell(row_2, 4, style, "统计时间");
         HSSFCell cell_2_4=CreateExcelUtil.createCell(row_2, 5, style_left, "2018/08/08-2018/08/09");
         //创建第3行
         CreateExcelUtil.setMergeArea(sheet, 2,2,1,3);
         CreateExcelUtil.setMergeArea(sheet, 2,2,5,11);
         HSSFRow row_3=CreateExcelUtil.creatRow(sheet, 2, -1);
         //机构类型
         HSSFCell cell_3_1=CreateExcelUtil.createCell(row_3, 0, style, "机构类型");
         HSSFCell cell_3_2=CreateExcelUtil.createCell(row_3, 1, style_left,"分行" );
         //机构名称
         HSSFCell cell_3_3=CreateExcelUtil.createCell(row_3, 4, style, "机构名称");
         HSSFCell cell_3_4=CreateExcelUtil.createCell(row_3, 5, style_left,"云南红塔银行总行营业部汇总" );
         //创建第4行
         CreateExcelUtil.setMergeArea(sheet,3,3,1,11);
         HSSFRow row_4=CreateExcelUtil.creatRow(sheet, 3, -1);
         //统计渠道
         HSSFCell cell_4_1=CreateExcelUtil.createCell(row_4, 0, style, "统计渠道");
         HSSFCell cell_4_2=CreateExcelUtil.createCell(row_4, 1, style_left,"全部" );
         //创建第5行
         CreateExcelUtil.setMergeArea(sheet, 4,4,0,11);
         HSSFRow row_5=CreateExcelUtil.creatRow(sheet, 4, -1);
         //创建第6行和第7行
         CreateExcelUtil.setMergeArea(sheet, 5,6,0,1);//一级业务
         CreateExcelUtil.setMergeArea(sheet, 5,6,2,3);//二级业务
         CreateExcelUtil.setMergeArea(sheet, 5,5,4,5);//成功数
         CreateExcelUtil.setMergeArea(sheet, 5,5,6,7);//失败数
         CreateExcelUtil.setMergeArea(sheet, 5,5,8,9);//成功金额
         CreateExcelUtil.setMergeArea(sheet, 5,5,10,11);//失败金额
         HSSFRow row_6=CreateExcelUtil.creatRow(sheet, 5, -1);
         HSSFRow row_7=CreateExcelUtil.creatRow(sheet, 6, -1);
         //一级业务
         HSSFCell cell_6_1=CreateExcelUtil.createCell(row_6, 0, style, "一级业务");
         //二级业务
         HSSFCell cell_6_2=CreateExcelUtil.createCell(row_6, 2, style, "二级业务");
         //成功数
         HSSFCell cell_6_3=CreateExcelUtil.createCell(row_6, 4, style, "成功数");
         //单位个人
         HSSFCell cell_7_1=CreateExcelUtil.createCell(row_7, 4, style, "单位");
         HSSFCell cell_7_2=CreateExcelUtil.createCell(row_7, 5, style, "个人");
         //失败数
         HSSFCell cell_6_4=CreateExcelUtil.createCell(row_6, 6, style, "失败数");
         //单位个人
         HSSFCell cell_7_3=CreateExcelUtil.createCell(row_7, 6, style, "单位");
         HSSFCell cell_7_4=CreateExcelUtil.createCell(row_7, 7, style, "个人");
         //成功金额
         HSSFCell cell_6_5=CreateExcelUtil.createCell(row_6, 8, style, "成功金额");
         //单位个人
         HSSFCell cell_7_5=CreateExcelUtil.createCell(row_7, 8, style, "单位");
         HSSFCell cell_7_6=CreateExcelUtil.createCell(row_7, 9, style, "个人");
         //失败金额
         HSSFCell cell_6_6=CreateExcelUtil.createCell(row_6, 10, style, "失败金额");
         //单位个人
         HSSFCell cell_7_7=CreateExcelUtil.createCell(row_7, 10, style, "单位");
         HSSFCell cell_7_8=CreateExcelUtil.createCell(row_7, 11, style, "个人");

         //循环处理数据
         int rowIndex=7;//从第7行开始计算
         int dataCount=7;
         for(int i=0;i<10;i++,rowIndex++){//循环产生行数据
             dataCount++;
             //创建新的行
             HSSFRow row_index=CreateExcelUtil.creatRow(sheet, rowIndex, -1);
             HSSFCell cell_1=CreateExcelUtil.createCell(row_index, 0, style, "世博支行");
             for(int j=1;j<12;j++){//循环产生列数据
                 HSSFCell cell=CreateExcelUtil.createCell(row_index, j, style, "100");
             }
         }

         //合计统计
         HSSFRow row_total=CreateExcelUtil.creatRow(sheet, rowIndex, -1);
         HSSFCell cell_total=CreateExcelUtil.createCell(row_total, 0, style, "合计");
         for(int i=0;i<arr.length;i++){
             String formula=CreateExcelUtil.getSumStr(arr[i],8,dataCount);
             HSSFCell cell=CreateExcelUtil.createCellFormula(workBook,row_total, i+1, style, null,formula);
         }
         //开始写入文件: 定义你需要的输出流
         CreateExcelUtil.writeToExcelFile(workBook, "企业网银关键业务统计报表", "./test.xls");
     }
 }

生成结果图:

未封装的代码:

 package com.jason.test;

 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.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.ss.usermodel.Cell;
 import org.apache.poi.ss.usermodel.CellStyle;
 import org.apache.poi.ss.usermodel.CellValue;
 import org.apache.poi.ss.usermodel.FormulaEvaluator;
 import org.apache.poi.ss.util.CellRangeAddress;

 public class Test {
     /**
      * 每个报表都不相同
      */
     private static String[] arr={"B","C","D","E","F","G","H","I","J","K","L"};
     public static void main(String[] args)throws FileNotFoundException, IOException {
         // 创建HSSFWorkbook对象
         HSSFWorkbook workBook = new HSSFWorkbook();
         //创建sheet对象
         HSSFSheet sheet = workBook.createSheet();
         //设置默认列宽
         sheet.setDefaultColumnWidth(13);
         //创建字体和样式
         HSSFFont font=workBook.createFont();
         HSSFCellStyle style=workBook.createCellStyle();//居中样式
         HSSFCellStyle style_left=workBook.createCellStyle();

        /**
         * 设置边框样式
         *  style.setBorderBottom(HSSFCellStyle.BORDER_THIN);
         *  style.setBottomBorderColor(HSSFColor.BLACK.index);
         *  style.setBorderLeft(HSSFCellStyle.BORDER_THIN);
         *  style.setLeftBorderColor(HSSFColor.BLACK.index);
         *  style.setBorderRight(HSSFCellStyle.BORDER_THIN);
         *  style.setRightBorderColor(HSSFColor.BLACK.index);
         *  style.setBorderTop(HSSFCellStyle.BORDER_THIN);
         *  style.setTopBorderColor(HSSFColor.BLACK.index);
         */

         /**
          * 设置背景色样式
          * style.setFillForegroundColor(HSSFColor.LEMON_CHIFFON.index);
          * style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);//单元格模式[SOLID_FOREGROUND]
          */
         style.setAlignment(HSSFCellStyle.ALIGN_CENTER);//设置字体居中(OK)
         style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);//上下居中
         style_left.setVerticalAlignment(HSSFCellStyle.ALIGN_LEFT);//上下居左  

         font.setFontName("宋体");
         font.setFontHeightInPoints((short) 14);// 设置字体大小
         style.setFont(font);//设置字体样式
         style_left.setFont(font);//设置字体样式
         //创建第1行
         sheet.addMergedRegion(new CellRangeAddress(0,0,0,11));
         HSSFRow row_1=sheet.createRow(0);
         //设置行高
         row_1.setHeight((short)500);
         HSSFCell cell_1_1=row_1.createCell(0);
         cell_1_1.setCellStyle(style);
         cell_1_1.setCellValue("企业网银关键业务统计报表");
         //创建第2行
         sheet.addMergedRegion(new CellRangeAddress(1,1,1,3));
         sheet.addMergedRegion(new CellRangeAddress(1,1,5,11));
         HSSFRow row_2=sheet.createRow(1);
         row_2.setHeight((short)400);
         //报表类型
         HSSFCell cell_2_1=row_2.createCell(0);
         cell_2_1.setCellStyle(style);
         cell_2_1.setCellValue("报表类型");
         HSSFCell cell_2_2=row_2.createCell(1);
         cell_2_2.setCellStyle(style_left);
         cell_2_2.setCellValue("日报表");
         //统计时间
         HSSFCell cell_2_3=row_2.createCell(4);
         cell_2_3.setCellStyle(style);
         cell_2_3.setCellValue("统计时间");
         HSSFCell cell_2_4=row_2.createCell(5);
         cell_2_4.setCellStyle(style_left);
         cell_2_4.setCellValue("2018/08/08-2018/08/09");
         //创建第3行
         sheet.addMergedRegion(new CellRangeAddress(2,2,1,3));
         sheet.addMergedRegion(new CellRangeAddress(2,2,5,11));
         HSSFRow row_3=sheet.createRow(2);
         //机构类型
         HSSFCell cell_3_1=row_3.createCell(0);
         cell_3_1.setCellStyle(style);
         cell_3_1.setCellValue("机构类型");
         HSSFCell cell_3_2=row_3.createCell(1);
         cell_3_2.setCellStyle(style_left);
         cell_3_2.setCellValue("分行");
         //机构名称
         HSSFCell cell_3_3=row_3.createCell(4);
         cell_3_3.setCellStyle(style);
         cell_3_3.setCellValue("机构名称");
         HSSFCell cell_3_4=row_3.createCell(5);
         cell_3_4.setCellStyle(style_left);
         cell_3_4.setCellValue("云南红塔银行总行营业部汇总");
         //创建第4行
         sheet.addMergedRegion(new CellRangeAddress(3,3,1,11));
         HSSFRow row_4=sheet.createRow(3);
         //统计渠道
         HSSFCell cell_4_1=row_4.createCell(0);
         cell_4_1.setCellStyle(style);
         cell_4_1.setCellValue("统计渠道");
         HSSFCell cell_4_2=row_4.createCell(1);
         cell_4_2.setCellStyle(style_left);
         cell_4_2.setCellValue("全部");
         //创建第5行
         sheet.addMergedRegion(new CellRangeAddress(4,4,0,11));
         HSSFRow row_5=sheet.createRow(4);
         //创建第6行和第7行
         sheet.addMergedRegion(new CellRangeAddress(5,6,0,1));//一级业务
         sheet.addMergedRegion(new CellRangeAddress(5,6,2,3));//二级业务
         sheet.addMergedRegion(new CellRangeAddress(5,5,4,5));//成功数
         sheet.addMergedRegion(new CellRangeAddress(5,5,6,7));//失败数
         sheet.addMergedRegion(new CellRangeAddress(5,5,8,9));//成功金额
         sheet.addMergedRegion(new CellRangeAddress(5,5,10,11));//失败金额
         HSSFRow row_6=sheet.createRow(5);
         HSSFRow row_7=sheet.createRow(6);
         //一级业务
         HSSFCell cell_6_1=row_6.createCell(0);
         cell_6_1.setCellStyle(style);
         cell_6_1.setCellValue("一级业务");
         //二级业务
         HSSFCell cell_6_2=row_6.createCell(2);
         cell_6_2.setCellStyle(style);
         cell_6_2.setCellValue("二级业务");
         //成功数
         HSSFCell cell_6_3=row_6.createCell(4);
         cell_6_3.setCellStyle(style);
         cell_6_3.setCellValue("成功数");
         //单位个人
         HSSFCell cell_7_1=row_7.createCell(4);
         cell_7_1.setCellStyle(style);
         cell_7_1.setCellValue("单位");
         HSSFCell cell_7_2=row_7.createCell(5);
         cell_7_2.setCellStyle(style);
         cell_7_2.setCellValue("个人");
         //失败数
         HSSFCell cell_6_4=row_6.createCell(6);
         cell_6_4.setCellStyle(style);
         cell_6_4.setCellValue("失败数");
         //单位个人
         HSSFCell cell_7_3=row_7.createCell(6);
         cell_7_3.setCellStyle(style);
         cell_7_3.setCellValue("单位");
         HSSFCell cell_7_4=row_7.createCell(7);
         cell_7_4.setCellStyle(style);
         cell_7_4.setCellValue("个人");
         //成功金额
         HSSFCell cell_6_5=row_6.createCell(8);
         cell_6_5.setCellStyle(style);
         cell_6_5.setCellValue("成功金额");
         //单位个人
         HSSFCell cell_7_5=row_7.createCell(8);
         cell_7_5.setCellStyle(style);
         cell_7_5.setCellValue("单位");
         HSSFCell cell_7_6=row_7.createCell(9);
         cell_7_6.setCellStyle(style);
         cell_7_6.setCellValue("个人");
         //失败金额
         HSSFCell cell_6_6=row_6.createCell(10);
         cell_6_6.setCellStyle(style);
         cell_6_6.setCellValue("失败金额");
         //单位个人
         HSSFCell cell_7_7=row_7.createCell(10);
         cell_7_7.setCellStyle(style);
         cell_7_7.setCellValue("单位");
         HSSFCell cell_7_8=row_7.createCell(11);
         cell_7_8.setCellStyle(style);
         cell_7_8.setCellValue("个人");

         //循环处理数据
         int rowIndex=7;
         int dataCount=7;
         for(int i=0;i<10;i++,rowIndex++){
             dataCount++;
             //创建新的行
             HSSFRow row_index=sheet.createRow(rowIndex);
             HSSFCell cell_1=row_index.createCell(0);
             cell_1.setCellStyle(style);
             cell_1.setCellValue("世博支行");
             for(int j=1;j<12;j++){
                 HSSFCell cell=row_index.createCell(j);
                 cell.setCellStyle(style);
                 cell.setCellValue("100");
             }
         }

         //合计统计
         HSSFRow row_total=sheet.createRow(rowIndex);
         HSSFCell cell_total=row_total.createCell(0);
         cell_total.setCellStyle(style);
         cell_total.setCellValue("合计");
         for(int i=0;i<arr.length;i++){
             HSSFCell cell=row_total.createCell(i+1);
             cell.setCellStyle(style);
             //开始统计
             cell.setCellType(Cell.CELL_TYPE_FORMULA);
             cell.setCellFormula(getSumStr(arr[i],8,dataCount));//计算公式
             System.out.println(getSumStr(arr[i],8,dataCount));
             //创建poi计算器
             FormulaEvaluator evaluator = workBook.getCreationHelper().createFormulaEvaluator();
             evaluator.evaluateFormulaCell(cell);
             CellValue cellValue = evaluator.evaluate(cell);
         }
         //开始写入文件: 定义你需要的输出流
         workBook.setSheetName(0,"企业网银关键业务统计报表");
         FileOutputStream fileOut =new FileOutputStream("./test.xls");
         workBook.write( fileOut );
     }
     /**
      * 统计计算公式
      * @param tagert  列标记
      * @param begIndex   起始索引
      * @param endIndex   终止索引
      * @return    返回计算公式
      */
     public static String getSumStr(String tagert,int begIndex,int endIndex){
         String retStr=tagert+begIndex;
         for(int i=begIndex+1;i<=endIndex;i++ ){
             retStr+=("+"+tagert+i);
         }
         return "SUM("+retStr+")";
     }
 }

POI生成EXCEL文件(字体、样式、单元格合并、计算公式)的更多相关文章

  1. POI生成EXCEL文件

    POI生成EXCEL文件 一.背景 根据指定格式的JSON文件生成对应的excel文件,需求如下 支持多sheet 支持单元格合并 支持插入图片 支持单元格样式可定制 需要 标题(title),表头( ...

  2. 读取Excel文件中的单元格的内容和颜色

    怎样读取Excel文件中的单元格的内容和颜色 先创建一个Excel文件,在A1和A2中随意输入内容,设置A1的字体颜色为红色,A2的背景为黄色.需要 using Excel = Microsoft.O ...

  3. java利用poi生成excel文件后下载本地

    1.该功能需要poi的jar包,链接: http://pan.baidu.com/s/1migAtNq 密码: 38fx. 2.首先新建一个实体类,用以存放单个数据 public class Test ...

  4. 使用poi导出Excel,并设定单元格内容类型,抛出异常

    本例子使用的是HSSF,为Excel2003提供处理方案. 设定为输入类型为数值 import org.apache.poi.hssf.usermodel.DVConstraint; import o ...

  5. 【原创】POI 生成Excel文件并下载

    ι 版权声明:本文为博主原创文章,未经博主允许不得转载. 效果图: 实现 1.在pom中添加依赖: <!-- https://mvnrepository.com/artifact/org.apa ...

  6. 使用POI生成Excel文件,可以自动调整excel列宽

    //autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...

  7. Java 利用 poi 生成 Excel文件的通用例子

    在用java 写数据库应用的时候, 通常会生成各种报表,而这些报表可能会被导出为各种格式的文件,比如Excel文档,pdf 文档等等. 今天先做了一个生成Excel 文档的例子,主要解决以下问题: 生 ...

  8. NPOI导出Excel文件,对单元格的一些设置

    HSSFWorkbook book = new HSSFWorkbook(); MemoryStream ms = new MemoryStream(); ISheet sheet = book.Cr ...

  9. Jquery的一键上传组件OCUpload及POI解析Excel文件

    第一步:将js文件引入页面 <script type="text/javascript" src="${pageContext.request.contextPat ...

随机推荐

  1. 【HDU 6021】 MG loves string (枚举+容斥原理)

    MG loves string  Accepts: 30  Submissions: 67  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: ...

  2. android studio 汉化 美化 个性化 修改 安卓工作室 2.3.3 最新版

    韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 先看一下效果. 建议全屏看图,或者新标签看图.

  3. 【最小表示法】BZOJ1398-寻找朋友

    [题目大意] 判断两个字符串是否循环同构. [思路] 我一开始的做法是直接同时在两个字符串上求最小表示法,只有部分测试点能过,理由未知,以后再来思考. 现在做法:分别求出两个字符串的最小表示法,再比较 ...

  4. 用ExifInterface读取经纬度的时候遇到的一个问题

    如果读取图片经纬度,使用 String latValue = exifInterface.getAttribute(ExifInterface.TAG_GPS_LATITUDE); String ln ...

  5. 20162304 实验一《Java开发环境的熟悉》实验报告

    Linux基础与Java开发环境 实验内容 1.熟悉Linux基础操作: 2.使用JDK编译.运行简单的Java程序: 实验要求 1.学习<Linux基础入门(新版)> 2.完成实验.撰写 ...

  6. hibernate之条件查询

    一.条件查询简介 条件查询是更据面向对象特色的数据查询方式,主要通过如下3个类完成 1.Criteria:代表一次查询 2.Criterion:代表一个查询条件 3.Restrictions:产生查询 ...

  7. windows远程连接Ubuntu12.04 (Ubuntu14.0连接方式不一样)

    参考 http://www.cnblogs.com/jerome-rong/archive/2012/08/16/2642035.html 有两种方式:Vnc方式(优缺点)和xrdp模式 中提到的Vn ...

  8. 【8.15校内测试】【队列】【manacher】

    dp??不能确定转移状态.考虑用优先队列储存最优决策点,可是发现当前选择最优不能保证最后最优,在后面可以将之前用过的替换过来. 比如数据: 3 5 4 6 只储存a[i]来决策不能延展到后面的状态,因 ...

  9. 实用在线小工具 -- Google URL Shortener

          实用在线小工具 -- Google URL Shortener 当你想分享一些你觉得有趣的东西,但是那个链接太长,以至于贴上去一大片.比如在微博上分享一张图片,然后贴上去图片的链接,url ...

  10. 更新teaching中fdSubjectID为null的老数据

    UPDATE wkwke.tbTeachingV3 teaching SET teaching.fdSubjectID = (                    SELECT fdValue FR ...