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 Excel 单元格内容类型判断并取值

做Excel导入功能时,读取Excel单元格内容需要区分类型switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: /...
  • f1204270443
  • f1204270443
  • 2017年01月04日 15:15
  • 6482

POI xwpf读取word内容和样式信息

POI读取word文档的内容和样式信息
  • u012762519
  • u012762519
  • 2015年01月23日 11:08
  • 2247

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

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

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

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

Java利用POI导出Excel设置单元格格式

HSSFCellStyle cellStyle = demoWorkBook.createCellStyle(); HSSFDataFormat format = demoWorkBook.creat...
  • luchengbing0120
  • luchengbing0120
  • 2017年10月04日 15:17
  • 642

POI中设置Excel单元格格式样式(居中,字体,边框等)

创建sheet什么的就不多说了,直接进入正题 [java] view plaincopyprint? HSSFCellStyle cellStyle = wb.createCell...
  • spp_1987
  • spp_1987
  • 2013年10月31日 11:32
  • 71412

poi解析excel出现格式不正确

最近有客户用最新的excel格式,即后缀为xlsx的excel做系统导入时出现bug,原来系统用来解析excel的的技术是jxl。jxl已经老早就不更新了不再支持excel后续版本的读写,没办法,只能...
  • donggua3694857
  • donggua3694857
  • 2016年05月24日 13:31
  • 2237

POI对Excel单元格的格式的设置参数

需求最近在做导出时,遇到了时间格式变成了纯数字。环境poi java 1.8解决方式日期格式:cell.setCellValue(new Date(2008,5,5)); //set date fo...
  • u013066244
  • u013066244
  • 2016年12月29日 18:11
  • 1880

POI对Excel的单元格格式区分

第一段:Excel的单元格格式 图中的数据有数值、货币、时间、日期、文本等格式。这些数据格式在POI中的HSSFDataFormat类里都有相应的定义。 HSSFDataFormat是HSS...
  • u011303664
  • u011303664
  • 2015年10月27日 15:29
  • 1211

poi的各种单元格样式以及一些常用的配置--gxy

转载自:http://blog.sina.com.cn/s/blog_4cef5c7b01015xjy.html之前我做过一个poi到处excel数据的博客,但是,后面使用起来发现,导出的数据单元格样...
  • u013154103
  • u013154103
  • 2017年03月30日 08:50
  • 401
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POI 设置和获取excel单元格格式
举报原因:
原因补充:

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