easypoi needmerge失效_EasyPOI简单用例,简单有效

用poi导出Excel表格,需要配置很多东西,也比较麻烦,这里使用poi的封装easypoi,可以快速配置,实现Excel或者word文件的导出。这里我们结合SpringMVC开发easypoi。

1,导入以下3个.jar包:这里是springMVC和easypoi所需的jar包,主要是easypoi-base和easypoi-web,其它都是关联所需的jar包,我们需要commons-lang3.jar包,开始使用commons-lang2.6版本会出现错误。

2,spring-mvc.xml配置如下:

class="org.springframework.web.servlet.view.BeanNameViewResolver" p:order="0">

1.ExcelExportUtil Excel导出(普通导出,模板导出)

2.ExcelImportUtil Excel导入

3.WordExportUtil Word导出(只支持docx ,doc版本poi

3 Controller

导入方式,可以根据映射关系,通过注解,字段名符合导入,如下例

public class RechannelreportEntity implements java.io.Serializable {

/**id*/

private java.lang.Integer id;

/**amount*/

@Excel(name="amount")

private java.lang.Integer amount;

/**amounts*/

@Excel(name="amounts")

private java.lang.Integer amounts;

/**counts*/

@Excel(name="counts")

private java.lang.Integer counts;

/**date*/

@Excel(name="date",format = "yyyy-MM-dd")

private java.util.Date date;

/**username*/

.......

@SuppressWarnings("unchecked")

@RequestMapping(params = "importExcel", method = RequestMethod.POST)

@ResponseBody

public AjaxJson importExcel(HttpServletRequest request, HttpServletResponse response) {

AjaxJson j = new AjaxJson();

MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;

Map fileMap = multipartRequest.getFileMap();

for (Map.Entry entity : fileMap.entrySet()) {

MultipartFile file = entity.getValue();// 获取上传文件对象

ImportParams params = new ImportParams();

params.setTitleRows(2);

params.setHeadRows(1);

params.setNeedSave(true);

try {

List listRechannelreportEntitys = ExcelImportUtil.importExcel(file.getInputStream(),RechannelreportEntity.class,params);

for (RechannelreportEntity rechannelreport : listRechannelreportEntitys) {

rechannelreportService.save(rechannelreport);

}

j.setMsg("文件导入成功!");

} catch (Exception e) {

j.setMsg("文件导入失败!");

logger.error(ExceptionUtil.getExceptionMessage(e));

}finally{

try {

file.getInputStream().close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

return j;

导出方式一,可以自定义输出字段,并赋值

@RequestMapping(params = "exportXls2")

public String string2(RechannelreportEntity rechannelreport,HttpServletRequest request,HttpServletResponse response

, DataGrid dataGrid,ModelMap modelMap) {

//"&&searchColums=&undefined=&sqlbuilder=&username=CL007&date_begin=2017-01-17&date_end=2017-01-17"

List entityList = new ArrayList();

entityList.add(new ExcelExportEntity("日期", "cou1", 15));

entityList.add(new ExcelExportEntity("渠道号", "cou2", 15));

entityList.add(new ExcelExportEntity("原始金额", "cou3", 15));

entityList.add(new ExcelExportEntity("扣量金额", "cou4", 15));

entityList.add(new ExcelExportEntity("结算金额", "cou5", 15));

//这边的getData2 方法是对 MapExcelConstants.MAP_LIST进行赋值

List> dataResult = getData2(getDateGrid(rechannelreport, request));

modelMap.put(MapExcelConstants.ENTITY_LIST, entityList);

modelMap.put(MapExcelConstants.MAP_LIST, dataResult);

modelMap.put(MapExcelConstants.FILE_NAME, DateUtils.formatDate(new Date()) + "数据");

Date now = new Date();

modelMap.put(NormalExcelConstants.PARAMS, new ExportParams(rechannelreport.getUsername() + "对账单详情", "导出日期:" + DateUtils.formatDate(new Date()) + "     ", "导出信息"));

return MapExcelConstants.JEECG_MAP_EXCEL_VIEW;

}

导出方式二,根据实体映射现实字段

@ExcelTarget("courseEntity")

public class CourseEntity implements java.io.Serializable {

/** 主键 */    private String id;

/** 课程名称 */    @Excel(name = "课程名称", orderNum = "1", needMerge = true)

private String name;

/** 老师主键 */    @ExcelEntity(id = "yuwen")

@ExcelVerify()

private TeacherEntity teacher;

/** 老师主键 */    @ExcelEntity(id = "shuxue")

private TeacherEntity shuxueteacher;

@ExcelCollection(name = "选课学生", orderNum = "4")

private List students;

@RequestMapping(params = "exportXls")

public String exportXls(CourseEntity course,HttpServletRequest request,HttpServletResponse response

, DataGrid dataGrid,ModelMap map) {

CriteriaQuery cq = new CriteriaQuery(CourseEntity.class, dataGrid);

org.jeecgframework.core.extend.hqlsearch.HqlGenerateUtil.installHql(cq, course, request.getParameterMap());

List courses = this.courseService.getListByCriteriaQuery(cq,false);

map.put(NormalExcelConstants.FILE_NAME,"用户信息");

map.put(NormalExcelConstants.CLASS,CourseEntity.class);

map.put(NormalExcelConstants.PARAMS,new ExportParams("课程列表", "导出人:Jeecg",

"导出信息"));

map.put(NormalExcelConstants.DATA_LIST,courses);

return NormalExcelConstants.JEECG_EXCEL_VIEW;

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/282054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

禁止sethc.exe运行 防止3389的sethc后门

废话:在土司看到的一篇文章,发私信给那个哥们儿说让不让转载,结果还没回复我就在百度看到相同的文章。他自己也是转载的。这哥们儿ID迟早被ban 文章转载自:http://www.jb51.net/hack/64484.html 点“开始”,在“运行”中敲入gpedit.msc依次展开“用户配置…

Mac 与虚拟机中的linux集群共享文件目录设置

一、环境介绍 本机:Macos Big Sur系统 虚拟机软件:vmware-fusion 虚拟机上虚拟的linux - centos7 系统 二、实现的效果 在mac上创建一个/Users/SH-Server/vm-vagrant目录,作为之后和虚拟机linux系统 /data 文件夹的共享目录。 我们最终想…

jsp编程技术徐天凤课后答案_jsp编程技术教材课后习题.doc

jsp编程技术教材课后习题JSP编程技术习题集1.6 本 章 习 题思考题(1)为什么要为JDK设置环境变量?(2)Tomcat和JDK是什么关系?(3)什么是Web服务根目录、子目录、相对目录?如何配置虚拟目录?(4)什么是B/S模式?(5)JSP、Jav…

JVM知识(一)

java三大流:数据流、控制流、指令流 线程是执行程序的最小单元,一个线程中也有这些东西。 java 运行时数据区: 1.程序计数器 指向当前线程正在执行的字节码指令地址。如果此时从一个线程转为执行另一个线程,此时就会中断&#xff…

AWD-LSTM为什么这么棒?

摘要: AWD-LSTM为什么这么棒,看完你就明白啦!AWD-LSTM是目前最优秀的语言模型之一。在众多的顶会论文中,对字级模型的研究都采用了AWD-LSTMs,并且它在字符级模型中的表现也同样出色。 本文回顾了论文——Regularizing …

Spread / Rest 操作符

Spread / Rest 操作符指的是 ...,具体是 Spread 还是 Rest 需要看上下文语境。 当被用于迭代器中时,它是一个 Spread 操作符:(参数为数组) function foo(x,y,z) {console.log(x,y,z); }let arr [1,2,3]; foo(...arr);…

python postman脚本自动化_如何用Postman做接口自动化测试

什么是自动化测试把人对软件的测试行为转化为由机器执行测试行为的一种实践。例如GUI自动化测试,模拟人去操作软件界面,把人从简单重复的劳动中解放出来本质是用代码去测试另一段代码,属于一种软件开发工作,已经开发完成的用例还必…

Mac上,为虚拟机集群上的每台虚拟机设置固定IP

一、环境介绍 本机:macOS系统 虚拟机软件:VMware Fusion 虚拟机上:centos7内核的Linux系统集群 二、为什么要为每台虚拟机设置固定ip 由于每次启动虚拟机,得到的ip可能不一样,这样对远程连接非常不友好&#xff0c…

朱晔的互联网架构实践心得S1E7:三十种架构设计模式(上)

设计模式是前人通过大量的实践总结出来的一些经验总结和最佳实践。在经过多年的软件开发实践之后,回过头来去看23种设计模式你会发现很多平时写代码的套路和OO的套路和设计模式里总结的类似,这也说明了你悟到的东西和别人悟到的一样,经过大量…

记一次某制造业ERP系统 CPU打爆事故分析

一:背景 1.讲故事前些天有位朋友微信找到我,说他的程序出现了CPU阶段性爆高,过了一会就下去了,咨询下这个爆高阶段程序内部到底发生了什么?画个图大概是下面这样,你懂的。按经验来说,这种情况一…

PC端和移动APP端CSS样式初始化

CSS样式初始化分为PC端和移动APP端 1.PC端:使用Normalize.css Normalize.css是一种CSS reset的替代方案。 我们创造normalize.css有下面这几个目的: 保护有用的浏览器默认样式而不是完全去掉它们一般化的样式:为大部分HTML元素提供修复浏览器…

FPGA浮点数定点化

因为在普通的fpga芯片里面,寄存器只可以表示无符号型,不可以表示小数,所以在计算比较精确的数值时,就需要做一些处理,不过在altera在Arria 10 中增加了硬核浮点DSP模块,这样更加适合硬件加速和做一些比较精…

框架实现修改功能的原理_JAVA集合框架的特点及实现原理简介

1.集合框架总体架构集合大致分为Set、List、Queue、Map四种体系,其中List,Set,Queue继承自Collection接口,Map为独立接口Set的实现类有:HashSet,LinkedHashSet,TreeSet...List下有ArrayList,Vector,LinkedList...Map下…

NPM报错终极大法

2019独角兽企业重金招聘Python工程师标准>>> 所有的错误基本上都跟node的版本相关 直接删除系统中的node 重新安装 sudo rm -rf /usr/local/{bin/{node,npm},lib/node_modules/npm,lib/node,share/man/*/node.*} 重新安装 $ n lts $ npm install -g npm $ n stable…

自己使用的一个.NET轻量开发结构

三个文件夹,第一个是放置前端部分,第二个是各种支持的类文件,第三个是单元测试文件。Core文件类库放置的是与数据库做交互的文件,以及一些第三方类库,还有与数据库连接的文件1.Lasy.Validator是一个基于Attribute验证器…

英语影视台词---八、the shawshank redemption

英语影视台词---八、the shawshank redemption 一、总结 一句话总结:肖申克的救赎 1、Its funny. On the outside, I was an honest man. Straight as an arrow. I had to come to prison to be a crook.? 这很有趣。 在外面,我是一个诚实的人…

10.python网络编程(socket server 实现并发 part 2)

一、基于tcp的socket通信的基本原理分析。基于tcp的socket通信,主要依靠两个循环,分别是连接循环和通信循环。这个前面的文章有写过,在这里就不再重复了。二、socketserver实现多并发的原理分析。1.server类:2.reques类。类继承关…

如何在一小时内更新100篇文章?-Evernote Sync插件介绍

上一篇“手把手教你制作微信小程序,开源、免费、快速搞定”,已经教会你如何快速制作一个小程序,但作为资讯类小程序,内容不可少,并且还需要及时更新。 但是,如果让你复制粘贴,可能还需要上传图片…

linux awk

grep 文本过滤器sed 流编辑器awk 报告生成器 格式化以后显示awk [option] PATTERN {action} file1 file2awk -F"|" BEGIN{OFS":"} {print $1,$2,$3} test.txt #文本字符串用双引号awk -F"|" BEGIN{OFS":"} {print $1,"jksong&quo…

iOS无线真机调试

为什么80%的码农都做不了架构师?>>> Xcode从9开始 就支持无线真机调试,那么怎么操作呢? 首先用数据线连接你的设备,接下来Xcode- Window-Devices and Simulators 点开之后看到你的设备 默认情况下Connect via networ…