java读写xlsx格式的MS Excel文件
发布日期:2021-06-29 15:52:08
浏览次数:3
分类:技术文章
本文共 2675 字,大约阅读时间需要 8 分钟。
java读写Excel文件
java读写Excel文件可以使用POI,当然还有其他第三方库,这篇文章暂时只记录poi的使用,其他库有机会再更新
POI
Apache POI - the Java API for Microsoft Documents
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
转载地址:https://console.blog.csdn.net/article/details/109670369 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
很好
[***.229.124.182]2024年04月24日 19时52分16秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
hbase数据结构模型
2019-04-29
Shell编程:return 返回脚本调用的状态码
2019-04-29
Hbase Shell 调用java代码:通过比较器,强过滤查询
2019-04-29
Linux防删除,恢复删除
2019-04-29
linux: shell脚本日常功夫
2019-04-29
linux脚本: 批量管理主机
2019-04-29
scala集合类型,函数
2019-04-29
spark: rdd的应用(scala api)
2019-04-29
spark: rdd的应用(java api)
2019-04-29
yarn: 资源调度机制
2019-04-29
spark的shell脚本分析
2019-04-29
推荐算法: 基于用户的协同过滤算法
2019-04-29
推荐算法:基于物品的协同过滤算法
2019-04-29
docker系列3:docker搭建CDH集群[单机单节点]
2019-04-29
ubuntu 16:使用系统自带的中文输入法
2019-04-29
k8s单机版[ microk8s ]
2019-04-29
docker系列6 :k8s集群[ 解压安装 ]
2019-04-29
maven- idea: 打包可执行jar
2019-04-29
docker系列2: windows安装docker
2019-04-29
hbase数据转移: 导入导出
2019-04-29