POI 导入带公式的EXCEL 精度出问题
用POI读EXCEL时,一定要用支持POI的函数。。。。
poi只对excle中部分函数支持。
1.支持的函数:
[ABS, ACOS, ACOSH, ADDRESS, AND, ASIN, ASINH, ATAN, ATAN2, ATANH, AVEDEV, AVERAGE, CEILING, CHAR, CHOOSE, CLEAN, CODE, COLUMN, COLUMNS, COMBIN, CONCATENATE, COS, COSH, COUNT, COUNTA, COUNTBLANK, COUNTIF, DATE, DAY, DAYS360, DEGREES, DEVSQ, DOLLAR, ERROR.TYPE, EVEN, EXACT, EXP, FACT, FALSE, FIND, FIXED, FLOOR, FV, HLOOKUP, HOUR, HYPERLINK, IF, INDEX, INDIRECT, INT, INTERCEPT, IPMT, IRR, ISBLANK, ISERROR, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISREF, ISTEXT, LARGE, LEFT, LEN, LN, LOG, LOG10, LOOKUP, LOWER, MATCH, MAX, MAXA, MEDIAN, MID, MIN, MINA, MINUTE, MIRR, MOD, MODE, MONTH, NA, NOT, NOW, NPER, NPV, ODD, OFFSET, OR, PERCENTILE, PI, PMT, POISSON, POWER, PPMT, PRODUCT, PROPER, PV, RADIANS, RAND, RANK, RATE, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, SEARCH, SECOND, SIGN, SIN, SINH, SLOPE, SMALL, SQRT, STDEV, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, T, TAN, TANH, TEXT, TIME, TODAY, TRIM, TRUE, TRUNC, UPPER, VALUE, VAR, VARP, VLOOKUP, WEEKDAY, YEAR]
2.不支持的函数:
[AREAS, ASC, AVERAGEA, BETADIST, BETAINV, BINOMDIST, CELL, CHIDIST, CHIINV, CHITEST, CONFIDENCE, CORREL, COVAR, CRITBINOM, DATEDIF, DATESTRING, DATEVALUE, DAVERAGE, DB, DBCS, DCOUNT, DCOUNTA, DDB, DGET, DMAX, DMIN, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EXPONDIST, FDIST, FINDB, FINV, FISHER, FISHERINV, FORECAST, FREQUENCY, FTEST, GAMMADIST, GAMMAINV, GAMMALN, GEOMEAN, GETPIVOTDATA, GROWTH, HARMEAN, HYPGEOMDIST, INFO, ISERR, ISPMT, KURT, LEFTB, LENB, LINEST, LOGEST, LOGINV, LOGNORMDIST, MDETERM, MIDB, MINVERSE, MMULT, N, NEGBINOMDIST, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NUMBERSTRING, PEARSON, PERCENTRANK, PERMUT, PHONETIC, PROB, QUARTILE, REPLACEB, RIGHTB, RSQ, SEARCHB, SKEW, SLN, STANDARDIZE, STDEVA, STDEVP, STDEVPA, STEYX, SYD, TDIST, TIMEVALUE, TINV, TRANSPOSE, TREND, TRIMMEAN, TTEST, TYPE, USDOLLAR, VARA, VARPA, VDB, WEIBULL, ZTEST]
当我们用到不支持的函数时需要手动注册下面说下怎么手动注册函数。
最近在解析excle中遇到了NORMINV(正态分布)这个函数:
首先注册时我们只需要注册一遍(注册重复则会报错)所以我写了个监听在bean加载完后注册函数
FunctionEval.registerFunction(“TRANSPOSE”, new RegisterFunction());
public class RegisterFunction implements Function{
@Override
public ValueEval evaluate(ValueEval[] args, int srcRowIndex, int srcColumnIndex) {System.out.println("---------------");System.out.println(srcRowIndex);System.out.println(srcColumnIndex);for(ValueEval v: args){System.out.println(v);AreaEval ae = (AreaEval)v;try {System.out.println(ae.getFirstColumn());System.out.println(ae.getFirstRow());System.out.println(ae.getFirstSheetIndex());System.out.println(ae.getHeight());System.out.println(ae.getLastColumn());System.out.println(ae.getLastRow());System.out.println(ae.getLastSheetIndex());System.out.println(ae.getWidth());ValueEval tEval= OperandResolver.chooseSingleElementFromArea(ae, ae.getFirstRow(), ae.getFirstColumn());System.out.println(tEval);System.out.println("------------------------------------------------------");} catch (EvaluationException e) {e.printStackTrace();}}//new NormalDistribution(mean,standard_dev) // NormalDistribution normalDistributioin = new NormalDistribution(Double.valueOf(list.get(1)), Double.valueOf(list.get(2))); //double S1 = normalDistributioin.cumulativeProbability(Double.valueOf(list.get(0)));//normalDistributioin.inverseCumulativeProbability(probability)//double S2 = normalDistributioin.inverseCumulativeProbability(Double.valueOf(list.get(0)));System.out.println("-------111111111111111111111111111-----------------------------------------------");return new NumberEval(2);
}
}
资料来源:
https://blog.csdn.net/u014677702/article/details/84836517
https://blog.csdn.net/wengengeng/article/details/52664683
http://poi.apache.org/components/spreadsheet/formula.html
POI 导入带公式的EXCEL 精度出问题相关推荐
- 利用POI生成带表头的Excel
1.关于Excel版本的一点了解 在项目工作中主要使用两个版本,03版文件名以".xls"结尾,最大处理行数为65536,07版文件名以".xlsx"结尾,最大 ...
- 根据模板生成带公式的excel
将模板(带公式计算)放在项目路径下某个文件夹 //1.生成工资表excel文件FileInputStream fileInputStream = null;try {fileInputStream = ...
- java导入带图片的excel表格(工具HSSFWorkbook-HSSFSheet)(支持一条数据(单元格)可以导入多个图片,)
一个表格框可以添加多个图片 Excel表格导入数据的同时导入图片 @Transactional(rollbackFor = Exception.class)public String selectEx ...
- java poi excel 图表_java poi导出带图表的excel表格
1 /** 2 *导出综合得分统计3 *@paramfileName4 *@paramrequest5 *@paramresponse6 *@paramheadInfo7 *@paramdataLis ...
- python打开excel的函数-Python读取excel文件中带公式的值的实现
在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...
- python公式_Python读取excel文件中带公式的值的实现
在进行excel文件读取的时候,我自己设置了部分直接从公式获取单元格的值 但是用之前的读取方法进行读取的时候,返回值为空 import os import xlrd from xlutils.copy ...
- poi导出excel写入公式_【java poi 写入Excel后读取公式值问题】poi导入excel
java poi 写入Excel后读取公式值问题 不用改公式,只需要用cell.getNumericCellValue()获取,读出来就是正确的值了,如果你读出来的还有问题,说明你其他的地方写的还有问 ...
- Excel文件导入功能(带公式)
依赖 <dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</a ...
- Java带图片的excel数据导入
带图片的EXCEL数据导入 这里使用的是POI,所以这里使用的很杂,不过方便对它们的了解.模板下载与图片导出到excel都不一样. 下面会把对应连接贴上. 带入依赖:不要使用3.17的版本,直接上代码 ...
最新文章
- 揭晓你所不了解的第三代测序技术
- rpm的使用 怎样查看rpm安装包的安装路径
- IP中继如何工作?——Vecloud
- Linux系统下用python写程序,用Python写个Linux系统命令
- OpenJudge/Poj 1163 The Triangle
- 【架构】互联网架构三马车:微服务+消息队列+定时任务
- php 生产环境配置,生产环境php.ini配置文件修改
- 提前批无笔试,3天后截止!!字节跳动智能创作实验室-图像团队2022秋招提前批投递...
- LeetCode(700)——二叉搜索树中的搜索(JavaScript)
- 自动档汽车正确的操作方法和习惯---请教贴
- 读书笔记 effective c++ Item 41 理解隐式接口和编译期多态
- pytorch查看模型weight与grad
- linux 查看安装软件
- 如何使用计算机勾绘汇水面积,第八章 地形测量_同济大学:测量学(八)_ppt_大学课件预览_高等教育资讯网...
- 漫游配置文件修改为强制配置文件|ntuser.dat ntuser.man
- 【网站搭建】修改namesilo自带的域名服务器至cloudflare
- underscoreJs中pluck函数的源码解析
- tar linux 跳过解压,【linux命令】linux解压压缩命令tar详解以及压缩的时候如何跳过某一个压缩目录或文件...
- 实战 - 学成在线项目
- 《卓有成效的管理者》——学习心得(八)