POI-Excel表格使用流读取和写入

今天学习了Excel数据的写入和读取,这里做下记录

参考网址

POI – Excel参考文档

POI介绍

POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。POI为“Poor Obfuscation Implementation”的首字母缩写,意为“简洁版的模糊实现”。
所以POI的主要功能是可以用Java操作Microsoft Office的相关文件,但是一般我们都是用来操作Excel相关文件。

使用前提

添加依赖

			<!--POI报表-->
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi</artifactId>
                <version>3.14</version>
            </dependency>
            <dependency>
                <groupId>org.apache.poi</groupId>
                <artifactId>poi-ooxml</artifactId>
                <version>3.14</version>
            </dependency>

注意:

操作Excel文件区分版本:
2003版本(包含2003)以前的扩展名为.xls需要用HSSFWorkbook类操作
2007版本(包含2007)以后的扩展名为.xlsx需要用XSSFWorkbook类操作
这里我是用的是2007版本

代码实现

读取文件数据

	/**
     * 使用POI读取Excel文件数据
     */
    @Test
    public void read() throws IOException {
        //1.使用流读取文件   --文件路径自己更改
        FileInputStream inputStream =
                new FileInputStream(new File("C:\\Users\\hp\\Desktop\\aaaaa.xlsx"));
        //2.使用xssf创建workbook
        XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
        //3.使用sheet-----根据索引
        XSSFSheet sheet = workbook.getSheetAt(0);
        //日期格式
        DataFormatter formatter = new DataFormatter();
        for (Row cells : sheet) {
            System.out.println(cells);
            for (Cell cell : cells) {
                /**
                 * 输出字符串数据,如果有其他类型,运行会报错,不会显示其他格式的数据
                 * 要输出其他格式,需选择输出的格式,如以下:
                 * getStringCellValue()   字符串数据
                 * getDateCellValue()     时间类型
                 */
//                System.out.println(cell.getStringCellValue());
                //转换数据中含有日期的日期格式
                String text = formatter.formatCellValue(cell);
                System.out.println(text);
            }
        }
        workbook.close();
    }

效果图

在这里插入图片描述

写入文件数据

	/**
     * 写入数据
     */
    @Test
    public void write() throws IOException {
        //创建Excel
        XSSFWorkbook workbook = new XSSFWorkbook();
        //2.创建sheet
        XSSFSheet sheet = workbook.createSheet("sheet0");
        //3.row cell-- 创建行表头
        XSSFRow title = sheet.createRow(0);
        //创建cell单元格--表头字段
        title.createCell(0).setCellValue("姓名");
        title.createCell(1).setCellValue("地址");
        title.createCell(2).setCellValue("年龄");
        //添加表数据
        XSSFRow dataRow = sheet.createRow(1);
        dataRow.createCell(0).setCellValue("张三");
        dataRow.createCell(1).setCellValue("河南省");
        dataRow.createCell(2).setCellValue("20");
		//写入流  -- 文件路径自己修改
        FileOutputStream outputStream =
                new FileOutputStream(new File("C:\\Users\\hp\\Desktop\\wwww.xlsx"));
        workbook.write(outputStream);
        outputStream.flush();
        workbook.close();
    }

效果图

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
POI-TL(POI-TopLevel)是一个基于Java的开源库,用于处理各种类型的电子表格文件,如Excel、CSV等。它提供了丰富的功能,包括读取写入、修改和处理电子表格数据。 要使用POI-TL来处理区块对(Range),你可以按照以下步骤进行操作: 1. 导入POI-TL库:在Java项目中,你需要先导入POI-TL库。你可以通过在项目的构建文件(如pom.xml)中添加POI-TL依赖项来实现。例如,使用Maven构建工具,你可以添加以下依赖项: ```xml <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.1.2</version> </dependency> ``` 2. 创建Workbook对象:使用POI-TL,首先需要创建一个Workbook对象,该对象表示整个电子表格文件。根据你的需求,可以选择创建不同类型的Workbook对象,如XSSFWorkbook(用于处理.xlsx文件)或HSSFWorkbook(用于处理.xls文件)。 ```java Workbook workbook = new XSSFWorkbook(); // 创建一个新的.xlsx文件 ``` 3. 获取或创建Sheet对象:一个Workbook对象可以包含多个Sheet对象,每个Sheet对象代表电子表格中的一个工作表。你可以通过索引或名称获取已存在的Sheet对象,或者创建一个新的Sheet对象。 ```java Sheet sheet = workbook.getSheetAt(0); // 获取第一个工作表 // 或者 Sheet sheet = workbook.createSheet("Sheet1"); // 创建一个名为"Sheet1"的工作表 ``` 4. 获取或创建Range对象:Range对象表示电子表格中的一个区块。你可以使用Sheet对象的`getRange()`方法获取已存在的Range对象,或者使用Sheet对象的`createRange()`方法创建一个新的Range对象。 ```java CellRangeAddress range = sheet.getRange(0, 0, 1, 1); // 获取第一个单元格的区块 // 或者 CellRangeAddress range = sheet.createRange(0, 0, 1, 1); // 创建一个包含第一个单元格的区块 ``` 5. 处理Range对象:一旦获取到Range对象,你就可以使用它来读取写入或修改区块内的单元格数据。例如,你可以使用`getCellValue()`方法获取区块中某个单元格的值,或使用`setCellValue()`方法设置区块中某个单元格的值。 ```java Cell cell = sheet.getCell(range.getFirstRow(), range.getFirstColumn()); // 获取区块中的第一个单元格 Object value = cell.getCellValue(); // 获取单元格的值 cell.setCellValue("Hello, World!"); // 设置单元格的值 ``` 6. 保存电子表格文件:处理完区块对后,别忘了将修改后的数据保存回电子表格文件。 ```java FileOutputStream fileOut = new FileOutputStream("path/to/output.xlsx"); workbook.write(fileOut); fileOut.close(); ``` 这就是使用POI-TL处理区块对的基本步骤。你可以根据具体需求进行更多操作,如合并区块、设置样式等。希望对你有所帮助!

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值