POI 设置和获取excel单元格格式

原创 2016年08月29日 18:07:27


public static void readExpectSheetAndWriteCaseSheet(matchAndNotMatchExcelObject matchExcelResult, String filePath) {
  try {
   ArrayList<ExceptionObject> readExpcetSheet = new ArrayList<ExceptionObject>();
   
   ArrayList<ReplyObject> matchExcelList = matchExcelResult.getMatchExcelList();
   
   String fileType = filePath.substring(filePath.lastIndexOf(".") + 1, filePath.length());
   
   InputStream stream = new FileInputStream(filePath);
//   Workbook xssfWorkbook = null;
   XSSFWorkbook xssfWorkbook = null;
   if (fileType.equals("xls")) {
//    xssfWorkbook = new HSSFWorkbook(stream);
       } else if (fileType.equals("xlsx")) {
        xssfWorkbook = new XSSFWorkbook(stream);
       }
   XSSFSheet xssfSheet = xssfWorkbook.getSheet("Sheet2");
//   Sheet xssfSheet = xssfWorkbook.getSheet("Sheet2");
   System.out.println("sheet2 lastRowNum = "+xssfSheet.getLastRowNum());
   for (int rowNum = 2; rowNum <= xssfSheet.getLastRowNum(); rowNum++) {
    if (rowNum == xssfSheet.getLastRowNum()) {
     System.out.println("ssssss");
    }
    System.out.println("read sheet2 &&&&&&&&&&&&  "+rowNum);
    ExceptionObject exceptionObject = new ExceptionObject();
    XSSFRow xssfRow = xssfSheet.getRow(rowNum);
          exceptionObject.setInput(xssfRow.getCell(5).getStringCellValue());
          XSSFCellStyle cellStyle = xssfRow.getCell(7).getCellStyle();
          if (cellStyle.getFillForegroundXSSFColor()!=null) {
           exceptionObject.setBkColor(cellStyle);
           System.out.println(cellStyle.getFillForegroundXSSFColor().getARGBHex());
    }else {
     exceptionObject.setBkColor(null);
    }
          System.out.println("get == "+exceptionObject.getBkColor());
           exceptionObject.setSeg(xssfRow.getCell(8).getStringCellValue());
           exceptionObject.setGrammar(xssfRow.getCell(9).getStringCellValue());
//           System.out.println("Sheet2 setGrammar = "+xssfRow.getCell(9).getStringCellValue());
           exceptionObject.setCurrentOnto(xssfRow.getCell(10).getStringCellValue());
           exceptionObject.setUpdatedRequest(xssfRow.getCell(11).getStringCellValue());
           exceptionObject.setReplyType(xssfRow.getCell(12).getStringCellValue());
           exceptionObject.setCurrentReply(xssfRow.getCell(13).getStringCellValue());
                
           System.out.println("sheet2 ^^^^^^^^^^^^^ = "+rowNum);
           readExpcetSheet.add(exceptionObject);
   }
   
   System.out.println("readExpcetSheet  line size ###### == "+readExpcetSheet.size());
   
   //write
    XSSFSheet xssfSheetW = xssfWorkbook.getSheet("Sheet1");
    
    /*xssfSheetW.getLastRowNum();
    XSSFRow row2 = xssfSheetW.getRow(0);
    row2.getLastCellNum();
    
    int lastRowNum = xssfSheetW.getLastRowNum();
    int unnecessaryCount =  lastRowNum - matchExcelList.size() - 2;
    int forSize = lastRowNum - unnecessaryCount;*/
    
    FileOutputStream out = new FileOutputStream(filePath);

     XSSFCellStyle cellStyle = xssfWorkbook.createCellStyle();
     Font font =  xssfWorkbook.createFont();
     font.setColor(HSSFColor.GREEN.index);
    cellStyle.setFont(font);
//    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
    cellStyle.setWrapText(true);//设置自动换行
    
    XSSFCellStyle cellStyleRed = xssfWorkbook.createCellStyle();
     Font fontRed =  xssfWorkbook.createFont();
     fontRed.setColor(HSSFColor.RED.index);
     cellStyleRed.setFont(fontRed);
//     cellStyleRed.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 居中
     cellStyleRed.setWrapText(true);//设置自动换行

     //20 last19(0-19)  第3行(rowNum = 2)  < 18+2(readExpcetSheet.size())  19
    for (int rowNum = 2; rowNum < readExpcetSheet.size()+2; rowNum++) {
     if (rowNum == readExpcetSheet.size()) {
      System.out.println("ssssssssssssss");
     }
     boolean grammarEquals = false;
     boolean updatedRequestEquals = false;
     ReplyObject replyObject = matchExcelList.get(rowNum-2);
     ExceptionObject exceptionObject = readExpcetSheet.get(rowNum-2);
     XSSFRow row = xssfSheetW.getRow(rowNum);
     
      if (replyObject.getInput().equals(exceptionObject.getInput())) {
       if (replyObject.getSeg().equals(exceptionObject.getSeg())) {
        row.getCell(8).setCellStyle(cellStyle);
       }else {
        row.getCell(8).setCellStyle(cellStyleRed);
       }
       
       ArrayList<String> grammar = replyObject.getGrammar();
              String grammarS = "";
              if (grammar != null) {
               for (int i = 0; i < grammar.size(); i++) {
                grammarS += grammar.get(i)+"\n";
               }
       }
              if (grammarS.equals(exceptionObject.getGrammar())) {
               grammarEquals = true;
               row.getCell(9).setCellStyle(cellStyle);
       }else {
        row.getCell(9).setCellStyle(cellStyleRed);
       }
       
              if (replyObject.getCurrentOnto().equals("")) {
        System.out.println(replyObject.getCurrentOnto());
       }
             if (exceptionObject.getCurrentOnto().equals("")) {
        System.out.println(replyObject.getCurrentOnto());
       }
              
             if (replyObject.getCurrentOnto().equals(exceptionObject.getCurrentOnto())) {
        row.getCell(10).setCellStyle(cellStyle);
       }else {
        row.getCell(10).setCellStyle(cellStyleRed);
       }
            
           if (replyObject.getUpdatedRequest().equals(exceptionObject.getUpdatedRequest())) {
            updatedRequestEquals = true;
       row.getCell(11).setCellStyle(cellStyle);
      }else {
       row.getCell(11).setCellStyle(cellStyleRed);
      }
           
           if (replyObject.getReplyType().equals(exceptionObject.getReplyType())) {
       row.getCell(12).setCellStyle(cellStyle);
      }else {
       row.getCell(12).setCellStyle(cellStyleRed);
      }
      
      if (replyObject.getCurrentReply().equals(exceptionObject.getCurrentReply())) {
       row.getCell(13).setCellStyle(cellStyle);
      }else {
       row.getCell(13).setCellStyle(cellStyleRed);
      }
      
      System.out.println("rowNum = "+rowNum +":"+ exceptionObject.getBkColor());
      /*if (updatedRequestEquals && exceptionObject.getBkColor() != nu ll) {
       row.getCell(7).getCellStyle().cloneStyleFrom(exceptionObject.getBkColor());
       System.out.println("DestCell name: " + row.getCell(7).getCellStyle().getFillForegroundXSSFColor().getARGBHex()
             + " SourceCell name: " + exceptionObject.getBkColor().getFillForegroundXSSFColor().getARGBHex());

       updatedRequestEquals = false;
      }*/
      if (grammarEquals && updatedRequestEquals) {
       if (exceptionObject.getBkColor() != null) {
       row.getCell(7).setCellStyle(exceptionObject.getBkColor());
       }
      }
     }
     }
    
    out.flush();
    xssfWorkbook.write(out);
    out.close();
    xssfWorkbook.close();
 }catch(FileNotFoundException e){
 }
 catch (Exception e) {
  e.printStackTrace();
 }
 }


CellStyle setBorder = xssfWorkbook.createCellStyle();

一、设置背景色:

setBorder.setFillForegroundColor((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); // 居中

四、设置字体:

Font font =  xssfWorkbook.createFont();
font.setColor(HSSFColor.GREEN.index);
font.setFontName("黑体");
font.setFontHeightInPoints((short) 16);//设置字体大小
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);//粗体显示
font.setFontHeightInPoints((short) 12);

setBorder.setFont(font);//选择需要用到的字体格式

五、设置列宽:

sheet.setColumnWidth(0, 3766); //第一个参数代表列id(从0开始),第2个参数代表宽度值

六、设置自动换行:

setBorder.setWrapText(true);//设置自动换行


注意:1,一定要在同一个workbook中,读写才能正常

           2,当文本中有换行时,一定要设置此单元格样式为自动换行


POI实战-java开发excel详解之单元格各类型数据读取

2.复杂读取 2.1 单元格各类型数据读取 2.1.1 基本类型 在实际工作中,我们处理的Excel数据都不止限于字符型数据,更多的是数字、日期、甚至公式等。 下面是单元格类型说明: ...

POI Excel 单元格内容类型判断并取值

做Excel导入功能时,读取Excel单元格内容需要区分类型switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: /...

POI设置单元格样式

POI中可能会用到一些需要设置EXCEL单元格格式的操作小结: 先获取工作薄对象: HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet s...

POI实战-java开发excel详解之样式

5.POI样式 在Excel应用中,会需要用到各种样式,包括单元格背景色、边框、高度、宽度、内容相对位置、字体格式、字体大小、字体颜色等等。POI提供了一系列的样式,能满足我们一般开发中的需求。 ...

【POI框架实战】——POI导出Excel时设置单元格类型为数值类型

最近做的一个ITFIN的项目中,导出的数据中有文本格式,也有货币格式,所以为了方便在将来导出的表格中做计算,存放货币先用正则表达式判断数据是否为数值型,如果为数值型,则设置单元格格式为整数或者小数;然...

HSSFWorkbook And SXSSFWorkbook样式设置

直插正题: HSSFWorkbook  创建样式: HSSFCellStyle style = workbook.createCellStyle(); 一、设置背景色: cellStyl...

POI读取自定义中文日期格式问题

使用POI版本为3.8Beta.Excel格式为Excel2003. POI的 boolean org.apache.poi.ss.usermodel.DateUtil.isCellDateForm...

POI操作Excel表格系列3 --- 背景颜色、边框等属性的读取和设置以及数据有效性的添加

POI操作Excel表格,设置 背景颜色、边框等属性的读取和设置以及数据有效性的添加...

Java 中使用POI设置EXCEL单元格格式为文本、小数、百分比、货币、日期、科学计数法和中文大写、单元格边框等

第一种:日期格式 cell.setCellValue(new Date(2008,5,5)); //set date format ...

通过poi实现解析并读取excel文件(包含xls、xlsx后缀)

StudentBean.java类,用来存放学生信息package com.demoexcel.util;public class StudentBean { private String no...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POI 设置和获取excel单元格格式
举报原因:
原因补充:

(最多只允许输入30个字)