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.pswp.cn/news/282054.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282054.shtml
英文地址,請注明出處:http://en.pswp.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…