博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java读写xlsx格式的MS Excel文件
阅读量:1888 次
发布时间:2019-04-26

本文共 2675 字,大约阅读时间需要 8 分钟。

java读写Excel文件

java读写Excel文件可以使用POI,当然还有其他第三方库,这篇文章暂时只记录poi的使用,其他库有机会再更新

POI

Apache POI - the Java API for Microsoft Documents

poi

Apache POI是Apache软件基金会的开源项目,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 .NET的开发人员则可以利用NPOI (POI for .NET) 来存取 Microsoft Office文档的功能。

POI对不同文档的操作需要导入不同的包

读取excel的xlxs文档则需要POI和poi-ooxml两个包

pom

org.apache.poi
poi
3.17
org.apache.poi
poi-ooxml
3.17

:这里两个包的版本号要一致

读取Excel文档

FileInputStream in=new FileInputStream(file);//这里的XSSFWorkbook对应.xlsx格式的文档XSSFWorkbook xssfWorkbook = new XSSFWorkbook(in);//获取工作表的个数int numberOfSheets = xssfWorkbook.getNumberOfSheets();//遍历工作表for (int i = 0; i < numberOfSheets; i++) {
XSSFSheet sheet = xssfWorkbook.getSheetAt(i); System.out.println("====="+sheet.getSheetName()+"===="); //获取工作表第一行行号 int firstRowNum = sheet.getFirstRowNum(); if (firstRowNum<0){
continue; } //获取工作表最后一行行号 int lastRowNum = sheet.getLastRowNum(); if (lastRowNum

写文件

String sheet1Name="user";String sheet2Name="dep";String[] sheet1Title={
"id","name","age"};Object[][] data1={
{
1,"zhansan",23},{
2,"lisi",21}};String[] sheet2Title={
"id","depName","tel"};Object[][] data2={
{
1,"sale","1234465"},{
2,"dev","464665664"}};//先在内存中创建工作簿XSSFWorkbook workbook = new XSSFWorkbook();//创建工作表XSSFSheet sheet1 = workbook.createSheet(sheet1Name);//创建行XSSFRow row = sheet1.createRow(0);for (int i = 0; i < sheet1Title.length; i++) {
//创建单元格,并设置单元格内容 row.createCell(i).setCellValue(sheet1Title[i]);}for (int i = 0; i < data1.length; i++) {
XSSFRow row1 = sheet1.createRow(i + 1); for (int j = 0; j < data1[i].length; j++) {
row1.createCell(j).setCellValue(String.valueOf(data1[i][j])); }}XSSFSheet sheet2 = workbook.createSheet(sheet2Name);row = sheet2.createRow(0);for (int i = 0; i < sheet2Title.length; i++) {
row.createCell(i).setCellValue(sheet2Title[i]);}for (int i = 0; i < data2.length; i++) {
XSSFRow row1 = sheet2.createRow(i + 1); for (int j = 0; j < data1[i].length; j++) {
row1.createCell(j).setCellValue(String.valueOf(data2[i][j])); }}//定义文件和文件输出流File file=new File("data/excel/out.xlsx");FileOutputStream outputStream=new FileOutputStream(file);//将数据写入.xlsx文件中workbook.write(outputStream);

总结

  • 导入pom依赖的时候最好使用3.17版本,笔者试了其他几个版本,即便是版本号一致,也会出现异常

  • 笔者测试时只测试了.xlsx格式的文档,有博客说 xls文档对应的类为HSSFWorkbook,但是笔者并没有找到

  • 读取小数时,有时候会把诸如0.3这样的数据读进去控制台打印为0.299999…,这属于正常现象,如果觉得不美观,可以使用DecimalFormat格式化一下,具体方法如下

DecimalFormat decimalFormat=new DecimalFormat("0.00");String str = decimalFormat.format(0.0299999);//输出0.03

转载地址:http://tezdf.baihongyu.com/

你可能感兴趣的文章
对一致性Hash算法,Java代码实现的深入研究
查看>>
To Java程序员:切勿用普通for循环遍历LinkedList
查看>>
40个Java多线程问题总结
查看>>
oracle的loop等循环语句的几个用法小例子
查看>>
jQuery+.net实现浏览更多内容
查看>>
一道SQL统计试题
查看>>
tomcat使用spring-loaded实现应用热部署
查看>>
T-SQL查询笔记1:当使用联接时on和where子句的区别
查看>>
用dbms_scheduler创建job
查看>>
记一次oracle创建一个新数据库,并导入正式环境数据库备份的dmp包过程
查看>>
PL/SQL Developer几个使用小技巧
查看>>
使用JAX-WS开发WebService
查看>>
Chrome浏览器F12开发者工具的几个小技巧总结
查看>>
学习使用JUnit4进行单元测试
查看>>
Maven 项目生成或者update jdk变为1.5的问题
查看>>
IE8下面parseInt('08')、parseInt('09')会转成0
查看>>
Tomcat重启脚本
查看>>
在同一台电脑部署多个Tomcat服务
查看>>
局域网不能访问本机IIS网站的解决方法
查看>>
MySQL 安装步骤
查看>>