POI完成Excel文件的读和写

简介

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office(Excel、WORD、PowerPoint、Visio等)格式档案读和写的功能。
官方主页: http://poi.apache.org/index.html
API文档: http://poi.apache.org/apidocs/index.html

应用场景:

1:从excel中读取数据,写入到数据库(导入);
2:从数据库查询数据,写入到excel文件(导出)
maven坐标


  org.apache.poi
  poi
  3.14

  org.apache.poi
  poi-ooxml
  3.14

入门案例

一、从Excel文件读取数据

1. 方法一

public void readExcel() throws IOException {
            //创建工作簿
            XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
            //获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
            XSSFSheet sheet = workbook.getSheetAt(0);
            //遍历工作表获得行对象
            for (Row row : sheet) {
                //遍历行对象获取单元格对象
                for (Cell cell : row) {
                    //获得单元格中的值
                    String value = cell.getStringCellValue(); //注意:数字类型,需要修改excel单元格的类型,否则报错。
                    System.out.println(value);// new String(value.getBytes("UTF-8"),"GBK"));

                }
            }
            workbook.close();
        }

2. 方法二

public void exportExcel_lastRow() throws IOException {
        //创建工作簿
        XSSFWorkbook workbook = new XSSFWorkbook("D:\\hello.xlsx");
        //获取工作表,既可以根据工作表的顺序获取,也可以根据工作表的名称获取
        XSSFSheet sheet = workbook.getSheetAt(0);
        //获取当前工作表最后一行的行号,行号从0开始
        int lastRowNum = sheet.getLastRowNum();
        for(int i=0;i

二、向Excel文件写入数据

public void importExcel() throws IOException {
    //在内存中创建一个Excel文件
    XSSFWorkbook workbook = new XSSFWorkbook();
    //创建工作表,指定工作表名称
    XSSFSheet sheet = workbook.createSheet("学生表");

    //创建行,0表示第一行
    XSSFRow row = sheet.createRow(0);
    //创建单元格,0表示第一个单元格
    row.createCell(0).setCellValue("姓名");
    row.createCell(1).setCellValue("学号");
    row.createCell(2).setCellValue("性别");

    XSSFRow row1 = sheet.createRow(1);
    row1.createCell(0).setCellValue("唐");
    row1.createCell(1).setCellValue("201511");
    row1.createCell(2).setCellValue("女");

    XSSFRow row2 = sheet.createRow(2);
    row2.createCell(0).setCellValue("李");
    row2.createCell(1).setCellValue("201522");
    row2.createCell(2).setCellValue("女");

    //通过输出流将workbook对象下载到磁盘
    OutputStream out = new FileOutputStream("D:/student.xlsx");

    workbook.write(out);
    out.flush();//刷新
    out.close();//关闭
    workbook.close();
}

POI完成Excel文件的读和写

Original: https://www.cnblogs.com/jasmine-e/p/16064518.html
Author: 素衣黛眉
Title: POI完成Excel文件的读和写

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/621232/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • validform学习

    1 说明 validform非常实用,可以用来进行表单验证,是基于jquery框架的,一共就导出两个文件,一个css文件,一个js文件。启动也只需一句js语句即可,相当方便。 可以…

    Java 2023年6月7日
    050
  • java项目命令启动 JAVA-jar包运行及日志输出

    一般情况下运行jar包,当前是可运行的jar包,直接命令 java -jar common.jar按下ctrl+C ,关闭当前ssh或者直接关闭窗口,当前程序都会退出。 我们在命令…

    Java 2023年5月29日
    0124
  • 自定义博客园主题

    博客园主题代码GitHub地址 https://github.com/yushixin-1024/Cnblogs-Theme-SimpleMemory 该项目Fork自https:…

    Java 2023年6月8日
    0127
  • 商城秒杀系统总结(Java)

    本文写的较为零散,对没有基础的同学不太友好。 一、秒杀系统项目总结(基础版) classpath 在.properties中时常需要读取资源,定位文件地址时经常用到 classpa…

    Java 2023年6月7日
    0113
  • Java核心技术-反射

    Day2 利用反射分析类的能力 在Java.lang.reflect包中有三个类Filed Method Constructor,分别用于描述类的字段,方法和构造器。 这三个类有一…

    Java 2023年6月5日
    0124
  • java webSocket

    测试网站:http://www.websocket-test.com/前端代码 后端代码–引入包 -发送消息 Original: https://www.cnblogs.com/…

    Java 2023年6月16日
    060
  • Mysql安装后打开MySQL Command Line Client闪退的解决方法

    问题原因:安装时mysql command line Client中的my.ini目录地址是MySQL软件的地址!实际上,我们安装MySQL时,一般是MySQL软件地址和MySQL…

    Java 2023年6月5日
    073
  • Use eslint-disable to ignore all warnings in a file.的解决方案

    1.问题描述 2.解决方案 更改项目下的vue.config.js配置文件:添加 lintOnSave:false, const { defineConfig } = requir…

    Java 2023年6月15日
    081
  • 【spring-boot】使用Autowried还是Resouce

    在做项目时,发现项目中 加载类时,有的地方使用@Autowired,有的地方使用@Resource 在网上搜集了资料 共同点 @Resource和@Autowired都可以作为注入…

    Java 2023年5月29日
    076
  • 【我的面试-01】Web前端开发实习岗-面试题总结

    简单开头 首先技术面试官会根据简历里所写的项目和个人掌握技术栈提问(我不知道已经改过多少次简历了,因为前期投简历是真的是沉在茫茫大海,捞漂流瓶都捞不到的那种) 我的技术栈:(Vue…

    Java 2023年6月5日
    087
  • 生产数据变更时的脚本准备

    posted @2022-06-21 17:09 雪山上的蒲公英 阅读(23 ) 评论() 编辑 / 返回顶部代码 / Original: https://www.cnblogs….

    Java 2023年5月29日
    088
  • 重学Java泛型

    系列文章目录和关于我 一丶从字节码层面看范型擦除 public class Type1 { private T t; } 使用jclasslib插件查看其字节码: 可以看到 t属性…

    Java 2023年6月14日
    080
  • 第一个微信小项目

    第一个好友分析: 我们需要用到wxpy这个库,这个库用到时会弹出一个二维码,这个二维码是通过扫码的方式登录微信,以获取信息 1 #导入模块 2 from wxpy import *…

    Java 2023年6月6日
    074
  • Java项目实战——瑞吉外卖Day03

    分类管理业务开发 公共字段自动填充 问题分析 前面我们已经完成了后台系统的员工管理功能开发,在新增员工时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工时需要设置修改时…

    Java 2023年5月29日
    071
  • Java核心技术-反射、接口

    使用反射编写泛型数组 package cn.gyk; import java.lang.reflect.Array; /** * @author xg * @version V1….

    Java 2023年6月5日
    086
  • 软件工程 结构法方法 第2篇随笔

    建立系统的功能模型图 首先:建立系统环境图,确定系统边界 其中: 数据流为:销售的商品,日销售额等;三个输入流,三个输出流 ​ 数据源为:营业员,经理,收款员 ​ 数据潭为:经理,…

    Java 2023年6月16日
    088
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球