• POI知识【Java程序操作Excel】


    目录

    1,POI概述

    1.1:概述

    1.1.1:简介

    1.1.2:官网

    1.2:入门案例

    1.2.1:环境搭建

    1.2.2:xls文件写操作

    1.2.3:xls文件读操作

    1.2.4:xlsx文件写操作

    1.2.5:xlsx文件读操作

    1.2.6:读取不同类型的数据


    1,POI概述

    1.1:概述

    1.1.1:简介

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。

    功能描述
    HSSFWorkBook提供读写Microsoft Excel格式档案的功能,xls文档
    XSSFWorkBook提供读写Microsoft Excel OOXML格式档案的功能,xlsx文件
    HWPF提供读写Microsoft Word格式档案的功能
    HSLF提供读写Microsoft PowerPoint格式档案的功能
    HDGF提供读写Microsoft Visio格式档案的功能

    1.1.2:官网

    Apache POI - the Java API for Microsoft Documents

     

    1.2:入门案例 

    1.2.1:环境搭建

    创建项目:

    导入pom.xml依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>org.apache.poigroupId>
    4. <artifactId>poiartifactId>
    5. <version>3.9version>
    6. dependency>
    7. <dependency>
    8. <groupId>org.apache.poigroupId>
    9. <artifactId>poi-ooxmlartifactId>
    10. <version>3.9version>
    11. dependency>
    12. <dependency>
    13. <groupId>joda-timegroupId>
    14. <artifactId>joda-timeartifactId>
    15. <version>2.10.1version>
    16. dependency>
    17. <dependency>
    18. <groupId>junitgroupId>
    19. <artifactId>junitartifactId>
    20. <version>4.12version>
    21. dependency>
    22. dependencies>

    1.2.2:xls文件写操作

    在2003版本中excel文件拓展名为xls

    名词:

    工作薄:一个excel文件,就是一个工作薄

    工作表:一个工作薄中,可以所有多个工作表Sheet

    行:每一个工作表,包含多行row

    单元格:每行有多个单元格Cell组成

    文件存放位置方法:

    1. public String path(){
    2. String path = getClass().getResource("/").getPath();
    3. return path;
    4. }

    注意:

    Workbook workbook = new HSSFWorkbook();

     

    进行POI技术生成Excel文件,方法:

    1. @Test
    2. //测试写入Excel文件以xls为后缀结尾的
    3. public void testWritexls() throws IOException {
    4. //需求:向:xls文档写数据
    5. //创建新的Execl工作薄
    6. Workbook workbook = new HSSFWorkbook();
    7. //在Excel文件中创建一个工作表,表头是爱吃豆的土豆
    8. Sheet sheet = workbook.createSheet("爱吃豆的土豆");
    9. for (int r = 0; r < 5; r++) {
    10. //在工作表中创建五行
    11. Row row = sheet.createRow(r);
    12. for (int i = 0; i < 10; i++) {
    13. //在工作表中创建十列 也就是单元格
    14. Cell cell = row.createCell(i);
    15. //在单元格中放入数据
    16. cell.setCellValue("土豆"+r+":"+i);
    17. }
    18. }
    19. //生成到Excel文件的存放位置
    20. String file = path()+"土豆.xls";
    21. //创建输出文件流
    22. FileOutputStream out = new FileOutputStream(file);
    23. //输出到工作薄中
    24. workbook.write(out);
    25. //进行关流
    26. out.close();
    27. System.out.println("写入成功");
    28. }

     示例:

    1.2.3:xls文件读操作

    注意:

       Workbook hssfWorkbook = new HSSFWorkbook(fileInputStream);

    xls 2003 文件读操作

    1. //读xls
    2. @Test
    3. public void testReadxls() throws IOException {
    4. //确定输入文件流
    5. FileInputStream fileInputStream = new FileInputStream(path()+"土豆.xls");
    6. //工作薄
    7. Workbook hssfWorkbook = new HSSFWorkbook(fileInputStream);
    8. //获取要读文件的工作表的表名
    9. Sheet sheet = hssfWorkbook.getSheet("爱吃豆的土豆");
    10. //获得第一行索引
    11. int startRow = sheet.getFirstRowNum();
    12. //获得最后一行索引
    13. int endRow = sheet.getLastRowNum();
    14. //循环遍历方式进行读取
    15. for (int r =startRow; r <=endRow ; r++) {
    16. //读取每一行内容
    17. Row row = sheet.getRow(r);
    18. //获取每一行开始单元格和结尾单元格
    19. short startCell = row.getFirstCellNum();
    20. short endCell = row.getLastCellNum();
    21. //遍历每一个单元格
    22. for(int c = startCell ; c < endCell ; c++){
    23. Cell cell = row.getCell(c);
    24. //打印内容
    25. System.out.print(cell.getStringCellValue());
    26. System.out.print(",");
    27. }
    28. System.out.println();
    29. }
    30. }

     

     

    1.2.4:xlsx文件写操作

    注意:

    Workbook workbook = new XSSFWorkbook();
    1. @Test
    2. public void testWriteXlsx() throws IOException {
    3. //需求:向:xlsx文档写数据
    4. //1创建工作 Workbook
    5. Workbook workbook = new XSSFWorkbook();
    6. Sheet sheet = workbook.createSheet("爱吃豆的土豆");
    7. for (int r = 0; r < 5; r++) {
    8. Row row = sheet.createRow(r);
    9. for (int i = 0; i < 10; i++) {
    10. Cell cell = row.createCell(i);
    11. cell.setCellValue("土豆"+r+":"+i);
    12. }
    13. }
    14. //
    15. String file = path()+"土豆xlsx.xlsx";
    16. FileOutputStream out = new FileOutputStream(file);
    17. workbook.write(out);
    18. //进行关流
    19. out.close();
    20. System.out.println("写入成功");
    21. }

     

     

    1.2.5:xlsx文件读操作

    注意:

    Workbook workbook = new XSSFWorkbook(fileInputStream);
    1. //读xlsx类型
    2. @Test
    3. public void testReadxlsx() throws IOException {
    4. FileInputStream fileInputStream = new FileInputStream(path()+"土豆xlsx.xlsx");
    5. Workbook workbook = new XSSFWorkbook(fileInputStream);
    6. //获得工作表
    7. Sheet sheet = workbook.getSheet("爱吃豆的土豆");
    8. //获得行
    9. int startRow = sheet.getFirstRowNum();
    10. int endRow = sheet.getLastRowNum();
    11. for (int r =startRow; r <=endRow ; r++) {
    12. Row row = sheet.getRow(r);
    13. short startCell = row.getFirstCellNum();
    14. short endCell = row.getLastCellNum();
    15. for(int c = startCell ; c < endCell ; c++){
    16. Cell cell = row.getCell(c);
    17. //打印内容
    18. System.out.print(cell.getStringCellValue());
    19. System.out.print(",");
    20. }
    21. System.out.println();
    22. }
    23. }

      

    1.2.6:读取不同类型的数据

    1. @Test
    2. public void testRead07() throws Exception{
    3. InputStream is = new FileInputStream("d:/0704.xlsx");
    4. Workbook workbook = new XSSFWorkbook(is);
    5. Sheet sheet = workbook.getSheetAt(0);
    6. // 读取第一行第一列
    7. Row row = sheet.getRow(0);
    8. Cell cell1 = row.getCell(0);
    9. Cell cell2 = row.getCell(1);
    10. // 输出单元内容
    11. System.out.println(cell1.getStringCellValue());
    12. System.out.println(cell2.getNumericCellValue());
    13. // 操作结束,关闭文件
    14. is.close();
    15. }

  • 相关阅读:
    [效率提升]使用shell脚本完成一些git操作
    C++中打印uint64_t
    Dapp智能合约开发搭建
    java基础
    并发程序设计,你真的懂吗?
    2022年国内云管平台厂商哪家好?为什么?
    Cookie与Session的区别及如何选择
    Python中的区块链技术与应用
    基于安卓聊天APP的设计与实现
    实验(五):外部中断实验
  • 原文地址:https://blog.csdn.net/m0_64550837/article/details/126745747