狂神——通过POI来操作Excel
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相关推荐
- Apache POI组件操作Excel,制作报表(四)
Apache POI组件操作Excel,制作报表(四) 博客分类: 探索实践 ExcelApacheSpringMVCServlet 上一篇我们介绍了如何制作复杂报表的分析和设计,本篇结合Sprin ...
- Java使用poi/easyexcel操作excel
前言 在工作的开发过过程中,我们总会遇到将数据导出到excel的需求,和导入excel到数据库,下面会讲解当今比较流行的两个工具实现Java操作excel: Apache POI 阿里巴巴的easye ...
- 利用Java反射机制和poi插件操作excel
最近在公司写一个利用poi插件读取excel的东西,,不想每一个都写一遍解析代码.就想利用Java的反射机制,写对应的实体类,获取对应excel中的值,下面是解析的代码,仅供参考.不足之处,望指出/* ...
- 【狂神说Java】poi的操作excel
目录 一.狂神视频地址 二.基本思想 xls和xlsx的区别 三.Maven配置 四.相关代码 1.写操作 1.1Java操作xls文件 1.2Java操作xlsx文件 1.3写大量数据对比与优化 2 ...
- 狂神——通过EasyExcel来操作Excel
1.为什么要使用EasyExcel 因为它更方便 2.导入依赖 首先要去掉poi的依赖,因为它内置了该依赖 <dependency><groupId>com.alibaba&l ...
- 基于POI框架操作Excel文件
前言 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能.POI的结构如下: HSSF - 提供读写Mi ...
- java poi 读写操作excel
首先,需要导入poi jar包 package com.road; import java.io.FileNotFoundException; import java.io.FileOutputStr ...
- POI包操作excel表单的克隆sheet和打印区域
XSSFWorkbook wb = new XSSFWorkbook(fis); //克隆一个sheet页 ...
- 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 ...
最新文章
- Melkman's Algorithm
- SAP UI5 resource servlet
- 50张神图……好不容易才找到完整版!
- MyBatis的学习之路(二)
- C++ 中dynamic_castlt;gt;的用法
- USB接口不同颜色的作用
- 品牌和爱情,原理是一样的
- Log4j 漏洞最早由阿里云团队发现;HashiCorp 挂牌上市,市值 152 亿美元;Go 1.18 Beta1 发布 | 开源日报
- MFC 0xC000041D 回调期间遇到未处理的异常
- 第16课:转型的难处
- a-tabs defaultActiveKey默认值无效
- spring源码解析,vip视频解析源码
- excel计算机一级打不开,【2人回答】Excel表格太大,电脑打不开如何解决?-3D溜溜网...
- Snipaste 截图贴图
- TSN报文优先级(802.1P优先级、IP优先级、TOS优先级)
- jekins基本配置
- 5G智慧灯杆网关实现“一杆多用”
- python输入三角形的三条边、判断能否构成三角形_输入三角形三条边a,b,c,判断他们能否构成三角形...
- 计算机软件实习日志(三)基于 A*搜索算法迷宫游戏开发
- 实测江民KV2009主动防御及自我保护
热门文章
- 计算机二级c语言考点总结,全国计算机二级C语言考点总结.doc
- 公司电脑上怎么固定内网IP地址,不让IP变动
- GPU开始无处不在,加速火狐浏览器4.0
- Oracle数据库:1小时速成大法
- Java jar 找不到主类,jar包找不到或无法加载主类
- java 实现wordcount_用JAVA实现WordCount程序
- AP2553W6-7小功率开关电源芯片工作原理
- UEFI模式下WIN10+Ubuntu18.04LTS(挂载到固态加机械)双系统安装
- 达芬奇密码 第三十九章
- PTA 7-1 逆置一维数组 (10 分)