1.首先execl有两个版本,分别是03版和07版。

通过鼠标右键即可观看(以xls,xlsx结尾)

2.需要引入的依赖

     <!--03--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency><!--07--><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.17</version></dependency>

3.两种版本的写入和读取(简单读取)

package com.example.springboot_poi.poi;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;//通过POI来操作excel
public class PoiTest {//excel文件路径static String path = "C:\\Users\\lenovo\\Desktop\\idea_workspace\\springboot_poi\\";public static void main(String[] args) throws IOException {//03,写入数据write_03();//07,写入数据write_07();//03,获取数据read_03();//07,获取数据read_07();}//03版本 ,向excel中写入数据public static void write_03() throws IOException {//1.创建工作簿Workbook workbook = new HSSFWorkbook();//2.创建表名Sheet sheet = workbook.createSheet("03版_第一张表");//3.创建行Row row0 = sheet.createRow(0);//4.创建单元格Cell cell = row0.createCell(0);//5.写入数据cell.setCellValue("这是第一行一列的格子");//6.创建流用于输出FileOutputStream fileOutputStream = new FileOutputStream(path + "03版本表.xls");//7.输出workbook.write(fileOutputStream);System.out.println("03版本表已经生成");}//07版本 ,向excel中写入数据public static void write_07() throws IOException {//1.创建工作簿Workbook workbook = new XSSFWorkbook();//2.创建表名Sheet sheet = workbook.createSheet("07版_第一张表");//3.创建行Row row0 = sheet.createRow(0);//4.创建单元格Cell cell = row0.createCell(0);//5.写入数据cell.setCellValue("这是第一行一列的格子");//6.创建流用于输出FileOutputStream fileOutputStream = new FileOutputStream(path + "07版本表.xlsx");//7.输出workbook.write(fileOutputStream);System.out.println("07版本表已经生成");}//03版本 ,读excel中的数据public static void read_03() throws IOException {//1.创建流用于读取FileInputStream fileInputStream = new FileInputStream(path + "03版本表.xls");//2.工作簿用于接收Workbook workbook = new HSSFWorkbook(fileInputStream);//3.获取表Sheet sheet = workbook.getSheetAt(0);//4.获取行Row row = sheet.getRow(0);//5.获取单元格Cell cell = row.getCell(0);//6.获取单元格中的数据,并输出System.out.println(cell.getStringCellValue());System.out.println("获取到03版本中的数据");}//07版本 ,读excel中的数据public static void read_07() throws IOException {//1.创建流用于读取FileInputStream fileInputStream = new FileInputStream(path + "07版本表.xlsx");//2.工作簿用于接收Workbook workbook = new XSSFWorkbook(fileInputStream);//3.获取表Sheet sheet = workbook.getSheetAt(0);//4.获取行Row row = sheet.getRow(0);//5.获取单元格Cell cell = row.getCell(0);//6.获取单元格中的数据,并输出System.out.println(cell.getStringCellValue());System.out.println("获取到07版本中的数据");}
}

4.读取不同类型的数据

如果我们的excel中内容如下,那么怎样读取?以07版为例

如图所示,该Excel包含数字、字符、小数、日期、布尔、空。

package com.example.springboot_poi.poi;import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.pojava.datetime.DateTime;
import org.springframework.format.annotation.DateTimeFormat;import java.io.FileInputStream;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Date;//读取不同类型的数据
public class ReadDifferentType {//excel文件路径static String path = "C:\\Users\\lenovo\\Desktop\\idea_workspace\\springboot_poi\\";public static void main(String[] args) throws Exception {readDifferentType();}public static void readDifferentType() throws Exception{//1.创建流来获得excel表FileInputStream fileInputStream = new FileInputStream(path + "07版本表.xlsx");//2.读取excel工作簿Workbook workbook = new XSSFWorkbook(fileInputStream);//3.读取第一张表Sheet sheet = workbook.getSheetAt(0);//4.读取第一行Row row_1 = sheet.getRow(0);//5.输出第一行的内容if(row_1 != null) {//获取这行的个数int cellCount = row_1.getPhysicalNumberOfCells();for (int i = 0; i < cellCount ; i++){Cell cell = row_1.getCell(i);if(cell != null){//标题都是String,这里不需要判断int cellType = cell.getCellType();String cellValue = cell.getStringCellValue();System.out.println("第1行第"+(i+1)+"列,值为:"+cellValue);}}}System.out.println("============");//6.获取表中的内容//获得行的数目int rowCount = sheet.getPhysicalNumberOfRows();for(int rowNum = 1; rowNum < rowCount; rowNum++){Row rowData = sheet.getRow(rowNum);if(rowData != null){//获得该行的列的数目int lineCount = rowData.getPhysicalNumberOfCells();for(int lineNum = 0; lineNum < lineCount ;lineNum++){System.out.print("第" + rowNum +"行,第" + lineNum +"列:");Cell cell = rowData.getCell(lineNum);//判断数据类型if(cell != null){int cellType = cell.getCellType();switch (cellType){case XSSFCell.CELL_TYPE_STRING:System.out.println("字符串:" + cell.getStringCellValue()); break;case XSSFCell.CELL_TYPE_BOOLEAN:System.out.println("布尔:" + cell.getBooleanCellValue());  break;case XSSFCell.CELL_TYPE_BLANK:System.out.println("空"); break;case XSSFCell.CELL_TYPE_ERROR:System.out.println("没有该数据类型"); break;case XSSFCell.CELL_TYPE_NUMERIC://如果是日期就直接输出,否则就装换为String,然后输出if(HSSFDateUtil.isCellDateFormatted(cell)){System.out.println("日期格式:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(String.valueOf(cell.getDateCellValue())))); break;}else{cell.setCellType(XSSFCell.CELL_TYPE_STRING);System.out.println("整型:" + cell.toString()); break;}case Cell.CELL_TYPE_FORMULA:String formula = cell.getCellFormula();System.out.println("公式:" + formula); break;default:System.out.println("该位置没有数据");break;}}}}}fileInputStream.close();}
}

运行结果:

参考博客:
https://blog.csdn.net/jiohfgj/article/details/105724073

最终参考:
https://www.bilibili.com/video/BV1Ua4y1x7BK?p=4

狂神——通过POI来操作Excel相关推荐

  1. Apache POI组件操作Excel,制作报表(四)

    Apache POI组件操作Excel,制作报表(四) 博客分类: 探索实践 ExcelApacheSpringMVCServlet  上一篇我们介绍了如何制作复杂报表的分析和设计,本篇结合Sprin ...

  2. Java使用poi/easyexcel操作excel

    前言 在工作的开发过过程中,我们总会遇到将数据导出到excel的需求,和导入excel到数据库,下面会讲解当今比较流行的两个工具实现Java操作excel: Apache POI 阿里巴巴的easye ...

  3. 利用Java反射机制和poi插件操作excel

    最近在公司写一个利用poi插件读取excel的东西,,不想每一个都写一遍解析代码.就想利用Java的反射机制,写对应的实体类,获取对应excel中的值,下面是解析的代码,仅供参考.不足之处,望指出/* ...

  4. 【狂神说Java】poi的操作excel

    目录 一.狂神视频地址 二.基本思想 xls和xlsx的区别 三.Maven配置 四.相关代码 1.写操作 1.1Java操作xls文件 1.2Java操作xlsx文件 1.3写大量数据对比与优化 2 ...

  5. 狂神——通过EasyExcel来操作Excel

    1.为什么要使用EasyExcel 因为它更方便 2.导入依赖 首先要去掉poi的依赖,因为它内置了该依赖 <dependency><groupId>com.alibaba&l ...

  6. 基于POI框架操作Excel文件

    前言 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.POI的结构如下: HSSF - 提供读写Mi ...

  7. java poi 读写操作excel

    首先,需要导入poi jar包 package com.road; import java.io.FileNotFoundException; import java.io.FileOutputStr ...

  8. POI包操作excel表单的克隆sheet和打印区域

    XSSFWorkbook wb = new XSSFWorkbook(fis);                                      //克隆一个sheet页           ...

  9. java excel api 下载文件_Java-Excel Java操作Excel POI(Jakarta POI API) - 下载 - 搜珍网

    Java操作Excel/Jakarta POI API/data/Jakarta POI API.doc Java操作Excel/Jakarta POI API/jar/poi-3.0.2-FINAL ...

最新文章

  1. Melkman's Algorithm
  2. SAP UI5 resource servlet
  3. 50张神图……好不容易才找到完整版!
  4. MyBatis的学习之路(二)
  5. C++ 中dynamic_castlt;gt;的用法
  6. USB接口不同颜色的作用
  7. 品牌和爱情,原理是一样的
  8. Log4j 漏洞最早由阿里云团队发现;HashiCorp 挂牌上市,市值 152 亿美元;Go 1.18 Beta1 发布 | 开源日报
  9. MFC 0xC000041D 回调期间遇到未处理的异常
  10. 第16课:转型的难处
  11. a-tabs defaultActiveKey默认值无效
  12. spring源码解析,vip视频解析源码
  13. excel计算机一级打不开,【2人回答】Excel表格太大,电脑打不开如何解决?-3D溜溜网...
  14. Snipaste 截图贴图
  15. TSN报文优先级(802.1P优先级、IP优先级、TOS优先级)
  16. jekins基本配置
  17. 5G智慧灯杆网关实现“一杆多用”
  18. python输入三角形的三条边、判断能否构成三角形_输入三角形三条边a,b,c,判断他们能否构成三角形...
  19. 计算机软件实习日志(三)基于 A*搜索算法迷宫游戏开发
  20. 实测江民KV2009主动防御及自我保护

热门文章

  1. 计算机二级c语言考点总结,全国计算机二级C语言考点总结.doc
  2. 公司电脑上怎么固定内网IP地址,不让IP变动
  3. GPU开始无处不在,加速火狐浏览器4.0
  4. Oracle数据库:1小时速成大法
  5. Java jar 找不到主类,jar包找不到或无法加载主类
  6. java 实现wordcount_用JAVA实现WordCount程序
  7. AP2553W6-7小功率开关电源芯片工作原理
  8. UEFI模式下WIN10+Ubuntu18.04LTS(挂载到固态加机械)双系统安装
  9. 达芬奇密码 第三十九章
  10. PTA 7-1 逆置一维数组 (10 分)