POI介绍

POI能用来做什么?利用POI导出运营数据Excel报表 简单来说就是,我们可以使用 POI 在 Java 程序中对Miscrosoft Office各种文件进行读写操作。一般情况下,POI 都是用于操作 Excel 文件,例如银行网银系统导出交易明细、各种业务系统导出Excel报表、批量导入业务数据等。当前接口没有返回数据,因为报表导出功能本质上是文件下载,服务端会通过输出流将Excel文件下载到客户端浏览器。如下产品原型,我们要在导出的报表中包含各模块的业务数据和明细。POI导出Excel报表的需求分析和设计。③将查询到的运营数据写入模板文件。 阅读详情

POI介绍

  (2013-02-26 17:28:25)
标签: 

excel

 

poi

 

it

分类: 报表技术

引言

在Web应用日益盛行的今天,通过Web来操作Excel文件的需求越来越强烈,目前较为流行的操作是创建CSV(comma separated values)文件,并将这个文件以MIME,TEXT/CSV类型返回给浏览器。这样只是说可以访问到Excel文件,但是还不能真正的操纵Excel文件。本文将介绍一种功能强大的报表技术——POI,用它可以方便地操作Excel文件。

 

POI介绍

Apache POI是Apache软件基金会的开放源码函式库,是用Java编写的免费开源的跨平台的 Java API,POI提供API给Java程序对Microsoft Office格式档案进行各种操作。

POI主要用到的类有HSSFWorkbook、HSSFSheet、HSSHRow、HSSFCell,HSSFWorkbook是Excel文件对象、HSSFSheet是Excel文件内的分页sheet对象、HSSHRow是行对象、HSSFCell是单元格对象,它们都在org.apache.poi.hssf.usermodel这个package里面。
下面结合以上提及的四个类,介绍下POI对Excel文件的四个基本操作。

读操作

首先HSSFWorkbook要获取到文件的流,如HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(new File(“f:\\xx.xls”)));

然后通过wb对象对xx.xls Excel文件进行操作。

HSSFSheet是获取Excel的sheet分页,有两种方式可以获取sheet分页对象:

1.按分页名称来获取 wb.getsheet(“Name”);

2.按分页顺序来获取 wb.getsheet(0);

HSSHRow获取行对象,HSSHRow row = sheet.getRow(0);Excel文件行数是从0开始。最后获取到单元格对象HSSFCell cell = row.getCell(index);index是列数,也是从0开始。

HSSFCell通过cell.getCellType()获取单元格类型,有三种类型,0表示数字、1表示文本、2表示存入了公式,并提供方法获取到想要的信息:获取字符串cell.getRichStringCellValue()、获取数值cell.getNumericCellValue()、获取公式cell.getCellFormula(),这里需要注意的是空格是属于文本格式。

写操作

POI对Excel的写操作与读操作用到的对象都是这么几个。不同的是读操作是获取对象,而写操作是创建对象。

首先创建HSSFSheet对象,HSSFSheet sheet = wb.createSheet(“Name”);然后创建行对象HSSHRow row = sheet.createRow(rownum),rownum是第几行、从0开始算;再创建单元格对象HSSFCell cell = row.createCell(colnum),colnum是列数,从0开始,再对单元格赋值,文本型用cell.setCellValue(new HSSFRichTextString(“”))、数值用cell.setCellValue(16);最后把wb写入到一个输出流中,wb.write(new FileOutputStream(new File(path))),就生成了一个Excel文件了。

上传

Web方式对Excel的操作还是用流来操作Excel,只不过是换了个方式。

首先,在客户端加个file标签;然后把form的传输方式改为enctype="multipart/form-data";再在Struts Action层加个File属性private File myFile,名称要与标签的name一致,否则获取不到。这样在方法里通过getMyFile()就可以获取到上传的Excel文件了。

下载

有上传自然有下载,当然也是跟流有关,只不过流是服务器端的输出流。

首先,获取到服务器端的输出流对象ServletOutputStream ,ServletOutputStream os = this.getResponse().getOutputStream();然后设置文件内容类型this.getResponse().setContentType("application/octet-stream"),再对文件命名this.getResponse().setHeader("Content-disposition", "attachment;filename=" + fileName+ ".xls");最后把wb对象写入到os流中,就会下载到客户端。

 

POI对Excel的高级操作

以上简单介绍了POI的四个基本操作,虽然已能满足一般的功能要求,但对内容有格式要求的操作来说,就需要用HSSFCellStyle、HSSFDataFormat、HSSFFont这三个类,它们用来对单元格格式/样式进行操作。

单元格样式

对单元格样式的操作包括两个部分:创建单元格样式对象、创建字体对象。

创建单元格样式对象:HSSFCellStyle style =wb.createCellStyle(),设置边框(上、下、左、右):style.setBorderTop((short) 1)、style.setBorderBottom((short) 1)、

style.setBorderLeft((short) 1)、style.setBorderRight((short) 1)。

在遇到合并单元格时,还要设置垂直居中,垂直:style.setVerticalAlignment

(HSSFCellStyle.VERTICAL_CENTER)、居中:style.setAlignment(HSSFCellStyle

.ALIGN_CENTER)。

创建字体对象HSSFFont font = wb.createFont(),一般会用到一下三个方法 ,setFontName()设置字体、setFontHeightInPoints()设置字号、setBoldweight

(HSSFFont.BOLDWEIGHT_BOLD)加粗,style.setFont(font)保存刚才新建的字体样式。

合并单元格

合并单元格需要CellRangeAddress这个类,新建合并单元格对象c = new CellRangeAddress(int firstRow, int lastRow, int firstCol, int lastCol),保存到Excel文件中sheet.addMergedRegion(c)。合并单元格后的值为合并区域的第一行第一列的值。

写入公式

       在做财务报表时,还需要往单元格里填公式,用得最多的公式就是求和。POI公式的写入首先要设置下单元格为公式类型,cell.setCellType(HSSFCell.

CELL_TYPE_FORMULA),然后写入公式表达式就OK了,cell.setCellFormula

(expression),如expression = "SUM(C"+(i+1)+":F"+(i+1)+")",写入表达式需要注意的是公式的开始行是1,而程序里读取的行是从0开始的,所以在写入公式时,要把当前行+1再写入。

单元格格式

       在合计的结果比较大时,还要格式化下数据,转换为英文的数字格式xxx,xxx,xxx,这种的格式转换就要用到HSSFDataFormat类,HSSFDataFormat df = wb.createDataFormat(),设置格式style.setDataFormat(df.getFormat("#,##0.00"))。

一些常用的格式还有"0.00%"、"d-mmm-yy"、"h:mm:ss AM/PM"等。

      

总结

通过上面的描述,相信你对POI的功能已有一个大致的了解,可以在你以后如何去选择适合自己项目的报表API过程中起到一定的参考作用。

以上只是对POI的一个简单介绍,提到的知识点是本人在做人力资源系统中运用到的,POI还有很多的功能没有提到,这里只是想跟大家分享下本人对POI的一个使用心得,有用POI做过项目、对POI有过研究的同学可以私下和我交流,大家共同学习、共同进步。

 

(PS:以上介绍的POI API版本是poi-3.2.jar)

POI 介绍 先做一个简单了解: 为什么要用POI? 主要用于导入导出大量数据 例: 在开发过程中常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统、银行系统)。或者是:我们已经习惯用Excel打印。这样在我们实际的开发中,很多时候需要实现导入、导出Excel的应用时。 有大量的报表需要导出(从数据库导出为Excel),另外在做测试的时候又需要往数据库里面导入很多测试数据(从Excel导... 阅读详情

相关推荐

Apache POI 使用详细介绍

Java 使用Apache POI 生成文档 并导出 POI 是什么一级目录二级目录三级目录 POI 是什么 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能 一级目录 二级目录 三级目录 ...

weixin_44811846的博客 1496

POI技术详解

Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对Microsoft Office格式档案读和写的功能。请注意,仍然可能会消耗大量内存,这些内存基于您正在使用的功能,例如合并区域,注.……,EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是。优点:可以写非常大的数据量,如100万条甚至更多条写数据速度快,占用更少的内存。操作的版本不同,使用的工具类也不同。

顺其自然~专栏 4968

Java POI介绍

在本文中,我将介绍如何使用Java POI库来读取和写入Excel电子表格文件。使用Java POI库,我们可以方便地读取和写入Excel文件。当然,Java POI还提供了更多功能,例如格式化单元格、合并单元格、设置单元格样式等,可以根据需求进行进一步探索和实践。上述代码首先创建一个新的工作簿对象,并创建一个名为"Sheet1"的工作表。然后,我们创建一个行和一个单元格,并将数据写入该单元格。类表示一个不可变的日期时间对象,包含年、月、日、时、分、秒和纳秒。代表的是2022年1月1日12:00,而。

TechRoar的博客 370

poi的使用以及详解,poi的maven依赖

POI 常用场景 将用户信息导出为excel表格(导出数据…) 将Excel表中的信息录入到网站数据库(习题上传…)大大减轻网站的录入量! 开发中经常会涉及到excel的处理,如导出Excel,导入Excel到数据库中! 操作Excel目前比较流行的就是 Apache POI和阿里巴巴的 easyExcel!只要学不死,就往死里学 Apache POI Apache POI官网 :https://poi.apache.org/ 基本功能 结构: HSSF--提供读写MicrosoftExce

Q36_524的博客 3万+

CLion与STM32CubeMX联调:JLink GDB Server高效调试指南

本文详细介绍了如何搭建并配置CLion、STM32CubeMX与JLink GDB Server联调的现代化STM32开发环境。通过一站式环境搭建、工程创建、核心调试配置及高级技巧(如RTT日志),该组合实现了高效的代码编辑、可视化配置与稳定调试,大幅提升嵌入式开发效率与体验。

web99的专栏 258

手把手教你用X-AnyLabeling实现医学图像标注:从SAM模型选择到多边形优化全流程

本文详细介绍了如何使用X-AnyLabeling平台结合Med-SAM等专业模型实现医学图像的高效标注。从环境配置、模型部署到实战工作流,涵盖智能辅助标注、低对比度解决方案及团队协作方案,帮助医疗从业者大幅提升标注效率与质量。特别适合处理CT/MRI等医学影像的复杂标注需求。

weixin_29251131的博客 457

一文了解POI,再也不怕excel导入导出了

在Java日常开发过程中,实现Excel文件的导入导出功能是一项常见的需求。通过使用相关的Java库,如Apache POI、EasyPoi或EasyExcel,可以轻松地实现Excel文件的读写操作。而这篇文章将介绍如何在Java中使用Apache POI、EasyPoi 和EasyExcel库来进行Excel文件的导入和导出操作,帮助您快速掌握这一实用的技能。

再小的帆也能远航,把分享变成一种习惯 6374

深入Netflix影片分类数据抓取的Python爬虫实战:反反爬机制绕过与Playwright应用全解析

技术工具用途Playwright控制真实浏览器模拟用户行为开发语言asyncio异步调度浏览器任务pandas数据处理和导出sqlite3本地数据库存储支持随机UA模拟,增强反爬能力为什么选择 Playwright?✅ 支持多浏览器(Chromium、Firefox、WebKit)✅ 原生支持 Python 异步编程✅ 提供截图、滚动模拟、验证码处理等高级功能✅ 反爬能力强,模拟真实用户访问。

2201_76125261的博客 1239

POI数据介绍

概念POI(一般作为Point of Interest的缩写,也有Point of Information的说法),通常称作兴趣点,泛指互联网电子地图中的点类数据,基本...

2万+

Central Finance 全景解析:用 SAP S/4HANA 构建跨系统的财务中台与渐进式转型路径

Central Finance 是基于 SAP S/4HANA 的一种部署与应用场景:在不打断现有异构源系统运营的前提下,把多套 SAP 与非 SAP 系统中的财务与管理会计数据实时/准实时复制到一套中心化的 SAP S/4HANA 中,作为统一的记账与分析底座,逐步把选定的财务流程(如预算控制、付款、固定资产结账等)迁入中心系统。这让企业既能快速获得统一报表与统一核算结构,又为未来的整体迁移留出了弹性路径。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 392

视觉测量实战:C#上位机+OpenCVSharp 实现工业零件尺寸自动检测(精准像素级,工业级可落地)

本次开发的上位机界面遵循工业现场操作规范简洁、直观、按钮大、文字清晰、参数可视化调节,操作人员为车间工人/质检员,无需复杂操作,所有控件均为WinForms原生控件,拖拽即可完成布局本次实战完成了C#上位机+OpenCVSharp 工业零件尺寸自动检测系统的完整开发,这套方案是工业视觉测量的标准落地方案,适配95%的规则几何零件的尺寸检测场景,从五金件、塑胶件到电子元件,全覆盖无死角。测量效率提升100倍、精度提升10倍、无人工误差、可适配流水线实时检测。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 849

poi是什么Java_POI使用介绍

POI介绍:1.什么是POI?Apache POI是用Java编写的免费开源的跨平台的Java API,Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能,其中使用最多的就是使用POI操作Excel文件。2.POI的使用:1.导入依赖:org.apache.poipoi3.14org.apache.poipoi-ooxml3.142.POI结构:HS...

weixin_39724004的博客 1659

毕设帮扶:从0到1搭建基于YOLOv5的打架斗殴检测系统——助你搞定深度学习毕设

做完这个毕设,你已经掌握了从数据准备到模型部署、界面开发的全流程。把模型部署到边缘设备(如安防摄像头的嵌入式系统)上,实现本地化实时检测与报警;加入行为严重程度分析(如轻微推搡 vs 严重斗殴)、涉事人员数量统计,让系统从“检测”升级为“智能安防决策”;尝试融合声音、红外等多模态数据,打造全方位的暴力事件监测系统。按照这个教程一步步做,你的毕设肯定能做得很扎实。要是过程中遇到啥问题,别担心,慢慢梳理或者咱们一起聊聊,一定能把这个毕设做成你满意的作品。

LXY_LOVE36的博客 121

Apache POI介绍

POI简介    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。自2009-09-28后,推出了3.5版本,提供了对Office2007的支持; HSSF概况    HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Ex...

虾虾 1883

【AI应用实战-OpenCode】OpenCode安装部署(一)

OpenCode是一款2026年流行的开源AI编程工具,兼具轻量代码编辑器和智能编码代理功能。其核心优势包括:完全免费开源(MIT协议)、全平台兼容、支持75+大模型(含本地部署)、内置完整编程功能链(代码补全/Git集成/AI调试等),且所有数据本地存储确保隐私安全。相比Copilot等商业工具,OpenCode提供更自由的模型选择和零门槛使用体验。安装要求Windows10+/macOS12+/Linux主流发行版,仅需200MB空间和4G内存。该工具完美兼容VSCode生态,支持终端/桌面/IDE三种

2431

C#利用最小二乘法拟合任意次函数曲线

给出一组离散点,确定一个函数逼近原函数,插值是这样的一种手段。在实际中,数据不可避免的会有误差,插值函数会将这些误差也包括在内。因此,我们需要一种新的逼近原函数的手段: ①不要求过所有的点(可以消除误差影响);②尽可能表现数据的趋势,靠近这些点。利用最小二乘法可以简便地求得未知的数据,并使得这些求得的数据与实际数据之间误差的平方和为最小 [1],其他一些优化问题也可通过最小化能量或最大化熵用最小二乘法来表达,具体可以查阅相关资料。最小二乘法(又称最小平方法)是一种数学技术。

qq_30725967的博客 3755

Apache POI各jar包的介绍

POI的jar不同版本要求jdk版本不同,根据自己的jdk版本选择不同版本。 其中commons-collections4是poi的依赖jar包,poi-ooxml-schemas和xmlbeans是poi-ooxml的依赖jar包,如果使用maven自动下载只在pom文件中添加poi和poi-ooxml就可以,如果自己下载jar包添加到项目中则5个都需要下载并添加。

殷小速的博客 9761

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

POI 处理Excel的简单介绍

一.POI简介 Jakarta POI 是apache的子项目,它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理Excel对象,可以控制一些属性如sheet,cell等等。 二.HSSF介绍 HSSF 是Horrible SpreadSheet Format的缩写(讨厌的电子表格格式)。也许HSSF的名字有点滑稽,就本质而言它是一个非常严肃、正规

DryKillLogic的专栏 1561

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

POI一(介绍)

POI(介绍) 玩j2e项目,在实际开发中经常会用到导入和导出功能,一般使用的都是excel。在这里整理一下有关POI的知识,本篇博客先做一个POI的介绍。 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建,修改和显示MS Office文件。这由Apache软件基金会开发使用Java分布式设计或修改Microsoft Office文件

LinkinPark的博客 4324

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Java中的poi是什么_java poi介绍

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。结构:HSSF - 提供读写Microsoft Excel格式档案的功能。XSSF - 提供读写MicrosoftExcelOOXML格式档案的功能。HWPF - 提供读写Microsoft Word格式档案的功能。HSLF - 提供读写Micro...

weixin_42510757的博客 1万+

POI-XSSFWorkbook介绍以及demo

1.介绍 作为开发人员,关于excel的操作,肯定都熟悉。其实我们使用的HSSF等都是统一来自与Apache POI。 它是Apache软件基金会开发,很流行的一个API。 它允许程序员使用JAVA语言对office文档(excel,word,ppt等)进行删除修改等操作。 1.2POI组件 POIFS (较差混淆技术实现文件系统): 此组件是所有其他POI元件的基本因素。它被用来明确...

weixin_41164620的博客 2704

Apache POI 之简单介绍

很多时候,需要一个软件应用程序来生成Microsoft Excel文件格式的报告。有时,甚至希望应用程序接收Excel文件作为输入数据。例如,为公司财务部门开发的应用程序将需要在Excel中生成所有输出。任何想要生成MS Office文件作为输出的Java程序员都必须使用预定义的只读API来执行此操作。 Apache POI概述 什么是Apache POI? Apache POI是一种流行的API,允许程序员使用Java程序创建,修改和显示MS Office文件。它是由Apache Software

艾利克斯冰的博客 3078

POI简单介绍

一、概述 apache的POI,是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 二、使用 官网下载压缩包,解压。导入poi的核心包到项目工程,一般是名字最短的那个。 例子 public class POITest {          @Test          public void test...

HelloWorld 1525

POI相关jar包资源下载介绍

POI相关jar包资源下载介绍 去发现同类优质开源项目:https://gitcode.com/ 资源简介 此仓库提供了一个压缩文件:POI相关jar包.zip。该文件包含了使用Apache POI库操作Excel文件所需要的一系列jar包。Apache POI是一套开源的Java库,用于处理Microsoft Office格式的文件,特别是Excel文件。 文件内容 poi导入excel文件相...

gitblog_06709的博客 437
上一篇: java读取excel的时候,使用getRichStringCellValue()读取到数值类型数据的时候就报错了
下一篇: POI操作EXCEL(一)
javaPie
博客等级 码龄16年 1171粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值