Apache POI Excel的读写

1、 POI介绍

Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程 序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文 件。

jxl:专门操作Excel

maven坐标:

POI结构:

2、入门案例

2.1  Excel文件读取数据

使用POI可以从一个已经存在的Excel文件中读取数据。

//使用POI读取Excel文件中的数据
@Test
public void test1() throws Exception{//加载指定文件,创建一个Excel对象(工作簿)XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("C:\\io\\score.xlsx")));//读取Excel文件中第一个Sheet标签页XSSFSheet sheet = excel.getSheetAt(0);//遍历Sheet标签页,获得每一行数据for (Row row : sheet) {//遍历行,获得每个单元格对象for (Cell cell : row) {System.out.println(cell.getStringCellValue());}}//关闭资源excel.close();
}

通过上面的入门案例可以看到,POI操作Excel表格封装了几个核心对象:

上面案例是通过遍历工作表获得行,遍历行获得单元格,最终获取单元格中的值。

还有一种方式就是获取工作表最后一个行号,从而根据行号获得行对象,通过行获取最 后一个单元格索引,从而根据单元格索引获取每行的一个单元格对象,代码如下:

//使用POI读取Excel文件中的数据
@Test
public void test2() throws Exception{//加载指定文件,创建一个Excel对象(工作簿)XSSFWorkbook excel = new XSSFWorkbook(new FileInputStream(new File("c:\\io\\score.xlsx")));//读取Excel文件中第一个Sheet标签页XSSFSheet sheet = excel.getSheetAt(0);//获得当前工作表中最后一个行号,需要注意:行号从0开始int lastRowNum = sheet.getLastRowNum();System.out.println("lastRowNum = " + lastRowNum);for(int i=0;i<=lastRowNum;i++){XSSFRow row = sheet.getRow(i);//根据行号获取每一行//获得当前行最后一个单元格索引short lastCellNum = row.getLastCellNum();System.out.println("lastCellNum = " + lastCellNum);for(int j=0;j<lastCellNum;j++){XSSFCell cell = row.getCell(j);//根据单元格索引获得单元格对象System.out.println(cell.getStringCellValue());}}//关闭资源excel.close();
}

 

2.2 Excel文件写入数据

使用POI可以在内存中创建一个Excel文件并将数据写入到这个文件,最后通过输出流将 内存中的Excel文件下载到磁盘。

//使用POI向Excel文件写入数据,并且通过输出流将创建的Excel文件保存到本地磁盘
@Test
public void test3() throws Exception{//在内存中创建一个Excel文件(工作簿)XSSFWorkbook excel = new XSSFWorkbook();//创建一个工作表对象XSSFSheet sheet = excel.createSheet("oracle");//在工作表中创建行对象XSSFRow title = sheet.createRow(0);//在行中创建单元格对象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");//创建一个输出流,通过输出流将内存中的Excel文件写到磁盘FileOutputStream out = new FileOutputStream(new File("c:\\io\\hello.xlsx"));excel.write(out);out.flush();excel.close();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/518544.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ServletContext

ServletContext 1.共享数据 ServletContext servletContext this.getServletContext(); String username "徐凤年"; servletContext.setAttribute("username",username);ServletContext servletContext this.getServletContext(); String username (…

真我诞生·2024消费者生活趋势报告(小红书平台)

跨过众声喧嚣的2023年&#xff0c;面对涌动的社会情绪、技术的创新以及流行风潮的更替&#xff0c;千瓜将2024年的隐形主轴定义为「真性情」&#xff0c;抛开宏观叙事法&#xff0c;透过“十大趋势”落到人文关怀上&#xff0c;有温度的营销叙事&#xff0c;才能吸引、影响人。…

最新的前端开发技术(2024年)

关于作者&#xff1a; 还是大剑师兰特&#xff1a;曾是美国某知名大学计算机专业研究生&#xff0c;现为航空航海领域高级前端工程师&#xff1b;CSDN知名博主&#xff0c;GIS领域优质创作者&#xff0c;深耕openlayers、leaflet、mapbox、cesium&#xff0c;canvas&#xff0…

GraphQL

从表中查询10条数据 {user_info(_limit: 100) {idname} }根据id查询数据 {user_info(_where: {id: 1727515006802587648}_order_by: {create_time: _desc}_limit: 10) {idname} }外键联表查询(特别注意写法:update_by.id): {speaker_info(update_by.id: {_eq: 1729043650301…

Vue+SpringBoot打造校园电商物流云平台

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 商品数据模块2.3 快递公司模块2.4 物流订单模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 商品表3.2.2 快递公司表3.2.3 物流订单表 四、系统展示五、核心代码5.1 查询商品5.2 查询快递公司5.3 查…

KBPC5010-ASEMI逆变器整流桥KBPC5010

编辑&#xff1a;ll KBPC5010-ASEMI逆变器整流桥KBPC5010 型号&#xff1a;KBPC5010 品牌&#xff1a;ASEMI 封装&#xff1a;KBPC-4 最大重复峰值反向电压&#xff1a;1000V 最大正向平均整流电流(Vdss)&#xff1a;50A 功率(Pd)&#xff1a;大功率 芯片个数&#xff…

解决gradle构建java项目,在执行时打印到控制台出现乱码的问题,网上所能搜到的99%的解决文章都是错的

我一直喜欢用gradle构建项目&#xff0c;不怎么喜欢用maven&#xff0c;因为gradle可以执行脚本&#xff0c;功能强大&#xff0c;比maven的xml方式要简洁多了&#xff0c;但最近才发现一个奇怪的问题&#xff0c;就是在idea指定gradle编译和执行时&#xff0c;输出中文到控制台…

Facial Micro-Expressions:An Overview 阅读笔记

Proceedings of the IEEE上一篇微表情相关的综述&#xff0c;写的很详细。从心理学与计算机两个领域阐述了微表情生成的原因与相关算法&#xff0c;值得仔细研读。 摘要&#xff1a; Four main tasks in ME analysis arespecifically discussed,including ME spotting,ME recog…

【JAVA/Web】数组转对象

一. 需求 数组转对象 数组结构 List:[{id:1,code:phone,value:10101001},{id:2,code:name,value:admin},{id:3,code:address,value:XXXXXX} ]二. 数组转对象&#xff08;键值对映射关系&#xff09; 对象结构 object:{phone:10101001,name:admin,address:XXXXXX }2.1 Java…

外包干了5天,技术退步明显。。。。。

在湖南的一个安静角落&#xff0c;我&#xff0c;一个普通的大专生&#xff0c;开始了我的软件测试之旅。四年的外包生涯&#xff0c;让我在舒适区里逐渐失去了锐气&#xff0c;技术停滞不前&#xff0c;仿佛被时间遗忘。然而&#xff0c;生活的转机总是在不经意间降临。 与女…

JAVA实现图像取模

JAVA对图像取模 就是图片变成点阵 原图 取模效果图 代码如下&#xff1a; public static void main(String[] args) throws IOException {try {// 读取图像文件BufferedImage image ImageIO.read(new File("C:/Users/xiaol/Desktop/img/0.jpg"));// 定义阈值&am…

Qt6.6搭建WebAssembly

1.首先安装python &#xff0c; 链接&#xff1a;https://www.python.org/ 2.下载并安装qt6. 3.克隆emsdk工程 3.1 进入emsdk目录&#xff0c;然后更新emsdk代码 3.2 下载并安装最新的SDK工具。&#xff08;C:\Qt\emsdk>emsdk install --global latest&#xff09; 3.3…