java处理excel遇到的问题(easyPOI)
1. 表格有公式,但是导入的时候获取不到,都获取到0?
解决: 自己写一个处理类,不要用他自己的util,借助FormulaEvaluator 获取公式计算的值
package com.changcheng.excel.utils;import com.changcheng.excel.pojo.ExcelMessage;
import com.changcheng.excel.pojo.ExcelMessage2;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.ss.usermodel.CellValue;
import org.apache.poi.ss.usermodel.FormulaEvaluator;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.util.ArrayList;
import java.util.List;import static org.apache.poi.ss.usermodel.CellType.*;/*** Created on 2021/8/23** @Author ZFH*/
public class ExcelReadUtil {private static FormulaEvaluator evaluator;public static List<ExcelMessage> getList(XSSFWorkbook workbook, Integer sheetNumber,Integer beginNumber) {evaluator = workbook.getCreationHelper().createFormulaEvaluator();XSSFSheet sheet = workbook.getSheetAt(sheetNumber);int lastRowNum = sheet.getLastRowNum();List<ExcelMessage> list = new ArrayList<>();for (int i = beginNumber; i < lastRowNum + 1; i++) {ExcelMessage excelMessage = new ExcelMessage();XSSFRow row = sheet.getRow(i);XSSFCell cell0 = row.getCell(0);excelMessage.setAddress(cell0.getStringCellValue());XSSFCell cell1 = row.getCell(1);excelMessage.setType(cell1.getStringCellValue());XSSFCell cell2 = row.getCell(2);excelMessage.setNumber(cell2.getStringCellValue());XSSFCell cell3 = row.getCell(3);evaluator.evaluateFormulaCell(cell3);CellValue cellValue = evaluator.evaluate(cell3);Integer celldata = new Double(cellValue.getNumberValue()).intValue();excelMessage.setIntType(String.valueOf(celldata));XSSFCell cell4 = row.getCell(4);evaluator.evaluateFormulaCell(cell4);CellValue cellValue2 = evaluator.evaluate(cell4);excelMessage.setSmallType(String.valueOf(cellValue2.getStringValue()));XSSFCell cell5 = row.getCell(5);evaluator.evaluateFormulaCell(cell5);CellValue cellValue3 = evaluator.evaluate(cell5);Double celldata3 = cellValue3.getNumberValue();excelMessage.setStart(String.valueOf(celldata3));XSSFCell cell6 = row.getCell(6);excelMessage.setBefore(cell6.getStringCellValue());XSSFCell cell7 = row.getCell(7);excelMessage.setMiddle1(cell7.getStringCellValue());XSSFCell cell8 = row.getCell(8);excelMessage.setMiddle2(cell8.getStringCellValue());XSSFCell cell9 = row.getCell(9);excelMessage.setLast(cell9.getStringCellValue());XSSFCell cell10 = row.getCell(10);evaluator.evaluateFormulaCell(cell10);CellValue cellValue10 = evaluator.evaluate(cell10);String celldata10= cellValue10.getStringValue();excelMessage.setAssemble(celldata10);XSSFCell cell11 = row.getCell(11);evaluator.evaluateFormulaCell(cell11);CellValue cellValue11 = evaluator.evaluate(cell11);String celldata11= cellValue11.getStringValue();excelMessage.setResult(celldata11);list.add(excelMessage);}return list;}public static List<ExcelMessage2> getList2(XSSFWorkbook workbook, Integer sheetNumber, Integer beginNumber) {evaluator = workbook.getCreationHelper().createFormulaEvaluator();XSSFSheet sheet = workbook.getSheetAt(sheetNumber);int lastRowNum = sheet.getLastRowNum();List<ExcelMessage2> list = new ArrayList<>();for (int i = beginNumber; i < lastRowNum + 1; i++) {ExcelMessage2 excelMessage = new ExcelMessage2();XSSFRow row = sheet.getRow(i);XSSFCell cell2 = row.getCell(2);excelMessage.setAddress(cell2.getStringCellValue());XSSFCell cell3 = row.getCell(3);excelMessage.setType(cell3.getStringCellValue());list.add(excelMessage);}return list;}
}
java处理excel遇到的问题(easyPOI)相关推荐
- java在Excel中添加png图片作为页眉(已解决)
1.背景 Excel在打印的时候需要附带水印打出,水印需要在下载Excel文件时就设置好 需要在打印的时候打印出水印,使用添加背景添加的水印在打印的时候不会出现,只有设置页眉,并将页眉设置为一长与打印 ...
- word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...
用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...
- 经典文章之java 操纵Excel[转]
转自http://www.cnblogs.com/sunzhenxing19860608/archive/2010/12/27/1918128.html jxl是一个韩国人写的java操作excel的 ...
- java连接Excel数据库读取,写入,操纵Excel表格
java连接Excel数据库读取,写入,操纵Excel表格 (2009-11-15 14:21:03) 转载 标签: java excel 连接 杂谈 分类:技术文档 java连接MicroSoft ...
- 利用Spring-Boot解析Excel、用Java分析Excel、告别手动输入用程序读取Excel
利用Spring-Boot解析Excel.用Java分析Excel.告别手动输入用程序读取Excel 一.资源 java读取Excel文件 二.修改 (一)中的代码中的 import service. ...
- 超详细的java生成excel文件并下载
在网上随手一搜,可以搜到很多java生成excel文件相关的博客,但每个都有不同,核心点说清楚了,但具体运用的时候,相信大家或多或少都没法一次直接运用,这样每次去找并且运用的时候很费时间,所以这也是我 ...
- java excel读取操作,Java 操作 Excel (读取Excel2003 2007,Poi兑现)
Java 操作 Excel (读取Excel2003 2007,Poi实现) 一. Apache POI 简介( http://poi.apache.org/) 使用Java程序读写Microsoft ...
- 在Java生成的html页面加水印,Java在Excel中添加水印的实现(单一水印、平铺水印)...
在Excel中没有直接添加水印的功能,但依旧可以通过一定方式来实现类似水印效果.本文通过Java程序代码介绍具体实现方法.可添加单一水印效果,即水印是以单个文本字样来呈现:也可添加多个平铺水印效果,即 ...
- java导出excel设置行高列宽_使用POI生成Excel文件,可以自动调整excel列宽
//autoSizeColumn()方法自动调整excel列宽 importjava.io.FileOutputStream; importorg.apache.poi.hssf.usermodel. ...
- 【Apache POI】Java写入Excel文件
上篇文章学习了Java读取Excel文件,这篇文章接着来简单总结Java写入Excel,话不多说,看代码: import java.io.File; import java.io.FileInputS ...
最新文章
- Ubuntu共享WiFi(AP)给Android方法
- python制作购物网站_Python实现的购物车功能示例
- 【评论】为什么我的工资最低!
- 华为辞职门事件——再谈工作问题
- Ubuntu 装机必备设置与软件安装
- sql查询条件为空的另类写法o( ̄▽ ̄)d
- Eclipse 中 去掉控制台最大行数限制
- 是清单 Dog List的子类 Animal ? 为什么Java泛型不是隐式多态的?
- php笔记:抽奖概率算法
- Android广播机制(2)
- 使用adb命令启动app
- 安装SqlServer 2017 时出现“Polybase要求安装Oracle JRE 7 更新51(64位)或更高版本规则失效”报错的解决办法
- QTcpSocket网络通讯多客户端功能
- HashMap为什么要使用红黑树
- docker之win安装gitlab
- 2021-2027全球与中国GPU服务器市场现状及未来发展趋势
- 学号java_java ---- 定义一个表示学生的类 包括域“学号”、“班号”、“姓名”、“年龄”;...
- PTA-- 快速排序(25)
- 【FPGA教程案例78】通信案例4——基于FPGA的RLS自适应滤波算法实现
- 谷歌chrome安卓版_Chrome+Android能摩擦出怎样的火花?Fyde OS深入体验笔记