Apache POI 第二讲之对Excel常见操作

有时候我们在做项目时,有些项目需要生成Microsoft Excel文件格式的报告。有时,甚至希望将Excel文件作为输入数据。这是我们需要用到Apache POI 。例如,一个公司开发的应用程序将财务部门需要所有输出生成自己的Excel。

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

1.编写主方法

public class Demo4 {
    public static void main(String[] args) throws Exception {
        // 定义一个新的工作簿
        Workbook wb = new HSSFWorkbook() ;
        // 创建第一个Sheet页
        Sheet sheet = wb.createSheet("第一个Sheet页");  
        // 创建一个行
        Row row = sheet.createRow(0) ;
        // 创建一个单元格,也就是第一列
        Cell cell = row.createCell(0) ;
        // 给单元格设置值
        cell.setCellValue(new Date()) ;

        CreationHelper creationHelper = wb.getCreationHelper() ;
        // 单元格样式类
        CellStyle cellStyle = wb.createCellStyle() ;
        // 设置时间样式
        cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("yyyy-mm-dd hh:mm:ss"));
        cell = row.createCell(1) ; 
        cell.setCellValue(new Date()) ;
        cell.setCellStyle(cellStyle) ;

        // 定义一个输出流,并指定输出路径
        FileOutputStream fileOut = new FileOutputStream("./excel/excel03.xls") ;
        // 生成excel 文件
        wb.write(fileOut) ;
        fileOut.close() ;
    }
}

2.运行
打开本目录excel下excel03.xls文件,查看结果

这里写图片描述

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

1.编写主方法

public class Demo5 {
    public static void main(String[] args) throws Exception {
        // 定义一个新的工作簿
        Workbook wb = new HSSFWorkbook() ;
        // 创建第一个Sheet页
        Sheet sheet = wb.createSheet("第一个Sheet页");  
        // 创建一个行
        Row row = sheet.createRow(0) ;
        // 创建一个单元格,也就是第一列
        Cell cell = row.createCell(0) ;
        // 给单元格设置值
        cell.setCellValue(new Date()) ;
        // 整行
        row.createCell(1).setCellValue(100) ;
        // 布尔类型
        row.createCell(2).setCellValue("字符串") ;
        // 字符串类型
        row.createCell(3).setCellValue(true) ;
        // 常量
        row.createCell(4).setCellValue(HSSFCell.CELL_TYPE_NUMERIC) ;
        // 浮点类型
        row.createCell(5).setCellValue(12.55);
        // 定义一个输出流,并指定输出路径
        FileOutputStream fileOut = new FileOutputStream("./excel/excel04.xls") ;
        // 生成excel 文件
        wb.write(fileOut) ;
        fileOut.close() ;
    }
}

2.运行
打开本目录excel下excel04.xls文件,查看结果

这里写图片描述

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

1.编写主方法

public class Demo6 {
    public static void main(String[] args) throws Exception {

        //输入流
        InputStream is = new FileInputStream("./excel/测试.xls") ;
        POIFSFileSystem fs = new POIFSFileSystem(is) ;
        HSSFWorkbook wb = new HSSFWorkbook(fs) ;
        // 获取第一个Sheet页
        HSSFSheet hssfSheet = wb.getSheetAt(0) ;
        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()) ;
        }
    }
}

2.运行
打开本目录excel下测试.xls文件

这里写图片描述

运行结果

这里写图片描述

文本提取

1.编写主方法

public class Demo7 {
    public static void main(String[] args) throws Exception {

        //输入流
        InputStream is = new FileInputStream("./excel/测试.xls") ;
        POIFSFileSystem fs = new POIFSFileSystem(is) ;
        HSSFWorkbook wb = new HSSFWorkbook(fs) ;
        // 获取第一个Sheet页

        ExcelExtractor excelExtractor = new ExcelExtractor(wb) ;
        System.out.println(excelExtractor.getText());

    }
}

2.运行
打开本目录excel下测试.xls文件
这里写图片描述

运行结果

这里写图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值