poi 导出excel(BigDecimal数据类型)左上角有绿色小三角解决

本文主要是介绍poi 导出excel(BigDecimal数据类型)左上角有绿色小三角解决,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在做poi导出excel肯定会有这么一段代码如下:

public Cell addCell(Row row, int column, Object val, int align, Class<?> fieldType){Cell cell = row.createCell(column);CellStyle style1 = styles.get("data"+(align>=1&&align<=3?align:""));CellStyle style = wb.createCellStyle();style.cloneStyleFrom(style1);try {if (val == null){cell.setCellValue("");} else if (val instanceof String) {cell.setCellValue((String) val);} else if (val instanceof Integer) {cell.setCellValue((Integer) val);} else if (val instanceof Long) {cell.setCellValue((Long) val);} else if (val instanceof Double) {cell.setCellValue((Double) val);} else if (val instanceof Float) {cell.setCellValue((Float) val);} else if (val instanceof Date) {DataFormat format = wb.createDataFormat();style.setDataFormat(format.getFormat("yyyy/MM/dd"));cell.setCellValue((Date) val);}  else if (val instanceof BigDecimal) {double doubleVal = ((BigDecimal) val).doubleValue();DataFormat format = wb.createDataFormat();style.setDataFormat(format.getFormat("¥#,##0.00"));cell.setCellValue(doubleVal);}else {if (fieldType != Class.class){cell.setCellValue((String)fieldType.getMethod("setValue", Object.class).invoke(null, val));}else{cell.setCellValue((String)Class.forName(this.getClass().getName().replaceAll(this.getClass().getSimpleName(), "fieldtype."+val.getClass().getSimpleName()+"Type")).getMethod("setValue", Object.class).invoke(null, val));}}} catch (Exception ex) {log.info("Set cell value ["+row.getRowNum()+","+column+"] error: " + ex.toString());cell.setCellValue(val.toString());}cell.setCellStyle(style);return cell;}

 

注意其中BigDecimal数据类型的转换方法

 

 

else if (val instanceof BigDecimal) {/** 最初的val是没有类型的需要强转,既然强转为什么不直接转成Double类型,而是这样转成BigDecimal类型,* 再用doubleValue方法转呢,完全可以这样做double doubleVal = (Double)val;在编译的时候不会报错,* 运行时候会抱异常 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.Double* 经实践还是用下面的代码才可以导出的数据上面没有小三角。*/double doubleVal = ((BigDecimal) val).doubleValue();DataFormat format = wb.createDataFormat();//此格式是货币格式style.setDataFormat(format.getFormat("¥#,##0.00"));//最终必须接收一个double类型的数据cell.setCellValue(doubleVal);

 

 

 

 

 

 

 

这篇关于poi 导出excel(BigDecimal数据类型)左上角有绿色小三角解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/604079

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

C++右移运算符的一个小坑及解决

《C++右移运算符的一个小坑及解决》文章指出右移运算符处理负数时左侧补1导致死循环,与除法行为不同,强调需注意补码机制以正确统计二进制1的个数... 目录我遇到了这么一个www.chinasem.cn函数由此可以看到也很好理解总结我遇到了这么一个函数template<typename T>unsigned

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

oracle 11g导入\导出(expdp impdp)之导入过程

《oracle11g导入导出(expdpimpdp)之导入过程》导出需使用SEC.DMP格式,无分号;建立expdir目录(E:/exp)并确保存在;导入在cmd下执行,需sys用户权限;若需修... 目录准备文件导入(impdp)1、建立directory2、导入语句 3、更改密码总结上一个环节,我们讲了

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec