• POI教程之第二讲:创建一个时间格式的单元格,处理不同内容格式的单元格,遍历工作簿的行和列并获取单元格内容,文本提取


    第二讲

    1.创建一个时间格式的单元格

           Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
    
           Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
    
          
    
           //第一个单元格
    
           Row row=sheet.createRow(0); // 创建一个行
    
           Cell cell=row.createCell(0); // 创建一个单元格  第1列
    
           cell.setCellValue(new Date());  // 给单元格设置值
    
          
    
           //第二个单元格
    
           CreationHelper createHelper=wb.getCreationHelper();
    
           CellStyle cellStyle=wb.createCellStyle(); //单元格样式类
    
           cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("yyy-mm-dd hh:mm:ss"));
    
           cell=row.createCell(1); // 第二列
    
           cell.setCellValue(new Date());
    
           cell.setCellStyle(cellStyle);
    
          
    
           //第三个单元格
    
           cell=row.createCell(2);  // 第三列
    
           cell.setCellValue(Calendar.getInstance());
    
           cell.setCellStyle(cellStyle);
    
          
    
           //最后写到硬盘上
    
           FileOutputStream fileOut=new FileOutputStream("c:\工作簿.xls");
    
           wb.write(fileOut);
    
           fileOut.close();

    效果如下:

    由于空间不够,所以显示不出来,拉伸一下就可以了。

    2.处理不同内容格式的单元格

            Workbook wb=new HSSFWorkbook(); // 定义一个新的工作簿
    
            Sheet sheet=wb.createSheet("第一个Sheet页");  // 创建第一个Sheet页
    
            Row row=sheet.createRow(0); // 创建一个行
    
           
    
            Cell cell=row.createCell(0); // 创建一个单元格  第1列
    
            cell.setCellValue(new Date());  // 给单元格设置值
    
            row.createCell(1).setCellValue(1);
    
            row.createCell(2).setCellValue("一个字符串");
    
            row.createCell(3).setCellValue(true);
    
            row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC);
    
            row.createCell(5).setCellValue(false);
    
           
    
            FileOutputStream fileOut=new FileOutputStream("c:\工作簿.xls");
    
            wb.write(fileOut);
    
            fileOut.close();
    
     

    效果如下:

    3.遍历工作簿的行和列并获取单元格内容

    //创建一个表格文件
    
            InputStream is=new FileInputStream("c:\二货名单.xls");
    
            //读取文件
    
            POIFSFileSystem fs=new POIFSFileSystem(is);     
    
            HSSFWorkbook wb=new HSSFWorkbook(fs);
    
            HSSFSheet hssfSheet=wb.getSheetAt(0); // 获取第一个Sheet页
        
    
            if(hssfSheet==null){
    
                return;
    
            }       
    
            // 遍历行Row
    
            for(int rowNum=0;rowNum<=hssfSheet.getLastRowNum();rowNum++){
    
                HSSFRow hssfRow=hssfSheet.getRow(rowNum);
    
                if(hssfRow==null){
    
                    continue;
    
                }
    
                // 遍历列Cell
    
                for(int cellNum=0;cellNum<=hssfRow.getLastCellNum();cellNum++){
    
                    HSSFCell hssfCell=hssfRow.getCell(cellNum);
    
                    if(hssfCell==null){
    
                        continue;
    
                    }
    
                    System.out.print(" "+getValue(hssfCell));
    
                }
    
                System.out.println();
    
            }
    
           
    
        }
     
    
        private static String getValue(HSSFCell hssfCell){
    
            if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_BOOLEAN){
    
                return String.valueOf(hssfCell.getBooleanCellValue());
    
            }else if(hssfCell.getCellType()==HSSFCell.CELL_TYPE_NUMERIC){
    
                return String.valueOf(hssfCell.getNumericCellValue());
    
            }else{
    
                return String.valueOf(hssfCell.getStringCellValue());
    
            }
    
        }

    注意一定是要2007版本以上的。2010的话可能识别不了。

    二货名单.xls

    控制台读出来:

    4.文本提取

            InputStream is=new FileInputStream("c:\二货名单.xls");
    
            POIFSFileSystem fs=new POIFSFileSystem(is);
    
            HSSFWorkbook wb=new HSSFWorkbook(fs);
    
           
    
            ExcelExtractor excelExtractor=new ExcelExtractor(wb);
    
            excelExtractor.setIncludeSheetNames(false);// 我们不需要Sheet页的名字
    
            System.out.println(excelExtractor.getText());

    效果如下:

     

     

     以上源码如下:http://yunpan.cn/cdBADQY7jS6WP  访问密码 e5cf

     

  • 相关阅读:
    「CF722E Research Rover」
    「Luogu P4062 [Code+#1]Yazid 的新生舞会」
    【cf比赛记录】Codeforces Round #613 (Div. 2)
    【cf比赛记录】Educational Codeforces Round 78 (Rated for Div. 2)
    【cf补题记录】Codeforces Round #608 (Div. 2)
    【cf补题记录】Codeforces Round #607 (Div. 2)
    【cf比赛记录】Codeforces Round #606 (Div. 2, based on Technocup 2020 Elimination Round 4)
    【cf比赛记录】Codeforces Round #605 (Div. 3)
    【Codeforces】B. Div Times Mod
    【牛客练习赛53】A-超越学姐爱字符串
  • 原文地址:https://www.cnblogs.com/liuhongfeng/p/4722362.html
Copyright © 2020-2023  润新知