用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;

}

easypoi needmerge失效_EasyPOI简单用例,简单有效相关推荐

  1. easypoi needmerge失效_easyPoi报表导出

    easyPoi报表制作工具,其操作简单,容易上手,不同于POI报表导出那么繁琐,需要自己写相应的工具类.easypoi导出分为3部分,基础导出,模板导出,HTML导出,先总结基础导出. 基础导出我们可 ...

  2. matlab 简单算例,(简单算例)基于Matlab的电力系统潮流编程计算.pdf

    (简单算例)基于Matlab的电力系统潮流编程计算 基于Matlab的电力系统潮流编程计算 口黄扬威吴喜春郭志峰张斯翔 (三峡大学电气与新能源学院湖北·宜昌443002) 摘要:通过介绍电力系统的实际 ...

  3. 学习Docker之Docker初体验 简单用例---SpringBoot集成Docker的部署、发布与应用

    简单用例 简单的创建一个工程,实现一个接口即可,然后在pom中添加docker插件,相关代码如下 @SpringBootApplication @RestController public class ...

  4. JDBC 连接Hive 简单样例(开启Kerberos)

    今天在移动的云平台上通过jdbc连接hive,发现云平台使用了 kerberos的认证.与宁波实验环境不同. 发现一文解决了问题,转载如下: 原文地址:http://blog.csdn.net/zen ...

  5. 重要性采样(Importance Sampling)简介和简单样例实现

    重要性采样(Importance Sampling)简介和简单样例实现 在渲染领域,重要性采样这个术语是很常见的,但它究竟是什么呢?我们首先考虑这样的一种情况: 如果场景里有一点P,我们想计算P点的最 ...

  6. C语言单元测试之安装gtest教程及一个简单样例

    准备工作 安装包:gtest1.7.0版本(最新的1.8.0版本一直安装失败,1.7.0版本一次成功) 安装链接:百度网盘 https://pan.baidu.com/s/1mDy9sB3sBIMei ...

  7. K8S Yaml 详细说明及简单样例

    一.K8S Yaml 配置文件主要分为基本标签.元数据标签.资源内容 3 个部分 基本标签 apiVersion: v1 #必选,版本号,例如v1 kind: Pod #必选,Pod 元数据标签 me ...

  8. NASBench101-安装及简单样例使用指南

    NASBench101-安装及简单样例使用指南 github地址:https://github.com/google-research/nasbench paper原文地址:https://arxiv ...

  9. 19.3 C++STL标准模板库大局观-容器的说明和简单应用例续

    19.1 C++STL标准模板库大局观-STL总述.发展史.组成与数据结构谈 19.2 C++STL标准模板库大局观-容器分类与array.vector容器精解 19.3 C++STL标准模板库大局观 ...

最新文章

  1. pandas.get_dummies函数用法详细解答(实践)
  2. iOS APP日志写入文件(日志收集)
  3. Manacher's algorithms(马拉车算法)最长回文子串
  4. java源文件扩展名_java源文件名的后缀是什么?
  5. JavaFX即将推出您附近的Android或iOS设备吗?
  6. 武忠祥.高等数学.基础课-第一章函数 极限 连续P10
  7. centos7搭建superset数据平台
  8. 【DP + 卖股票】LeetCode 123. Best Time to Buy and Sell Stock III
  9. 如何修改sql server 表中自增长ID列,因删除而不连续。可以使用临时表
  10. 系统检测到您正在使用网页抓取工具访问_网站如何检测被爬虫?
  11. 基于QT的网络五子棋游戏程序的设计与实现
  12. iOS 最新AppStore申请加急审核 以及 apple联系方式大全
  13. Springboot物理地址映射和Nginx静态资源代理实现前端上传并访问服务器图片
  14. 微信小程序单个页面导航栏 设置
  15. TIA博途_数据的保持型与初始化的具体方法和相关问题汇总
  16. WIN10下配置Yolov3(VS2019,GPU)+opencv训练自己的数据集(绝对详细,小白型记录)
  17. 一文读懂什么是智能制造,企业又该如何实施智能制造?
  18. 区块链未来的发展前景是什么?
  19. 如何快速搭建个人网站(服务器配置篇)
  20. Python几种主流框架,知道三种你就是大神,干货建议收藏

热门文章

  1. ios之UISplitViewController
  2. 微软翻译api的使用介绍和注意事项
  3. 女人15个秘密武器疼爱男人(女人必看)
  4. YARP+AgileConfig 5分钟实现一个支持配置热更新的代理网关
  5. 读《中台架构与实现》
  6. C# 实现一个基于值相等性比较的字典
  7. 如何在 ASP.Net Core 使用 内存缓存
  8. .NET 项目中的单元测试
  9. 进击吧! Blazor !第二期 页面制作
  10. .NET Core微服务开发服务间调用篇-GRPC