POI 方式-excle 表格导出实现-java-poi

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 

效果:

 

jsp 页面  用的Bootstrap :

 

<li class="dropdown">

 

	                    	<a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-file-excel-o"></i></a><ul class="dropdown-menu" role="menu"><li><a href="javascript:void(0);" id="excel">excel导出 </a></li></ul></li>

 

 

 

 

 

 

  表格是用的jquery 的dataTable  ,js :

 

 

// 导出 $("#excel").click(function(){// 查询条件: var account = $('#account').val();var riceCount = $('#riceCount').val();var format = $('#format').val();var regioin = $('#regioin').val();var url = "/order/excelBegFlowInfo?account="+account+"&riceCount="+riceCount+"&format="+format+"&regioin="+regioin;if ($("#datatable tbody tr").text() == "表中数据为空") {$.tooltip("没有可导出的数据", false);return;}location.href = url;})

 

 

 


后台调用部分:

 

 

/*** 导出 * @throws Exception*/@RequestMapping("/excelBegFlowInfo")public void excelBegFlowInfo(HttpServletResponse response, BegFlowInfo info) throws Exception {// 要导出的列表数据List<BegFlowInfo> totalList = _begFlowOrderService.selectBegFlowInfo(info);if (CollectionUtils.isEmpty(totalList)) {return;}List<List<Object>> list = new ArrayList<List<Object>>();	for (BegFlowInfo begFlowInfo : totalList) {List<Object> dataList = new ArrayList<Object>();dataList.add(begFlowInfo.getId() == null ? "":begFlowInfo.getId());dataList.add(begFlowInfo.getCreateDate() == null ? "":begFlowInfo.getCreateDate());dataList.add(begFlowInfo.getAccount() == null ? "":begFlowInfo.getAccount());dataList.add(begFlowInfo.getCarrier() == null ? "":begFlowInfo.getCarrier());dataList.add(begFlowInfo.getRegioin() == null ? "":begFlowInfo.getRegioin());dataList.add(begFlowInfo.getFormat() == null ? "" :begFlowInfo.getFormat());dataList.add(begFlowInfo.getPrice() == null ? "":begFlowInfo.getPrice());dataList.add(begFlowInfo.getType() == null ? "":begFlowInfo.getType().getName());dataList.add(begFlowInfo.getRiceCount() == null ? "0":begFlowInfo.getRiceCount());dataList.add(begFlowInfo.getIdentifyCode() == null ? "":begFlowInfo.getIdentifyCode());dataList.add(begFlowInfo.getSmsCommand() == null ? "":begFlowInfo.getSmsCommand());dataList.add(begFlowInfo.getUsableDate() == null ? "":begFlowInfo.getUsableDate());			dataList.add(giveCount == null ? "":giveCount);list.add(dataList);}//表头String[] headers = new String[]{"序号","xxx","xxx","XXX","XXX","XXX","XXX","XXX","XXX","XXX","XXXX","XXXX"};// list 是要导出的表数据 HSSFWorkbook workbook = ExcelUtil.excelOut(headers, list);try{  response.reset(); //清除response中的缓存信息response.setHeader("Content-Disposition", "attachment; filename=" + new String("订单管理.csv".getBytes("gbk"), "iso8859-1"));response.setContentType("application/vnd.ms-excel;");response.setCharacterEncoding("utf-8");workbook.write(response.getOutputStream());} catch (Exception e){e.printStackTrace();  }}xxx","xxx","XXX","XXX","XXX","XXX","XXX","XXX","XXX","XXXX","XXXX"};// list 是要导出的表数据 HSSFWorkbook workbook = ExcelUtil.excelOut(headers, list);try{  response.reset(); //清除response中的缓存信息response.setHeader("Content-Disposition", "attachment; filename=" + new String("订单管理.csv".getBytes("gbk"), "iso8859-1"));response.setContentType("application/vnd.ms-excel;");response.setCharacterEncoding("utf-8");workbook.write(response.getOutputStream());} catch (Exception e){e.printStackTrace();  }}

 

 

 

POI 方式-excle导出工具类实现:

 

import java.util.List;import org.apache.commons.lang3.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;/*** Excel工具* @author jiangyu* @date   */
public class ExcelUtil {public static HSSFWorkbook excelOut(String[] cloumName, List<List<Object>> list){//声明一个工作簿  HSSFWorkbook workbook = new HSSFWorkbook();  //生成一个表格  HSSFSheet sheet = workbook.createSheet();  //设置表格默认列宽度为20个字符  sheet.setDefaultColumnWidth(20);//生成一个样式,用来设置标题样式  HSSFCellStyle style = workbook.createCellStyle();  // 表头居中style.setAlignment(HSSFCellStyle.ALIGN_CENTER);  //生成一个字体  HSSFFont font = workbook.createFont();  font.setFontHeightInPoints((short) 12); // 字体高度font.setFontName(" 黑体 "); // 字体//把字体应用到当前的样式  style.setFont(font);  // 生成并设置另一个样式,用于设置内容样式  HSSFCellStyle style2 = workbook.createCellStyle();  style2.setAlignment(HSSFCellStyle.ALIGN_CENTER);  // 生成另一个字体  HSSFFont font2 = workbook.createFont();  font2.setFontName(" 黑体 "); // 字体// 把字体应用到当前的样式  style2.setFont(font2);  HSSFRow row = sheet.createRow(0);  for(int i = 0; i < cloumName.length; i++){  //单元格HSSFCell cellHead = row.createCell(i);  cellHead.setCellStyle(style);  HSSFRichTextString text = new HSSFRichTextString(cloumName[i]);  cellHead.setCellValue(text); }  for (int i = 0; i < list.size(); i++){  row = sheet.createRow(i + 1);  List<Object> dataList = list.get(i);  for (int j = 0; j < dataList.size(); j++) {// 表格内容样式设置HSSFCell cellHead = row.createCell(j);  cellHead.setCellStyle(style2);  HSSFRichTextString text = new HSSFRichTextString(String.valueOf(dataList.get(j)));  // 为空if(text == null || text.toString() == ""){cellHead.setCellValue(""); }// 整数,不为电话else if(ValidateUtils.isInteger(String.valueOf(text))&& !(StringUtils.startsWith(String.valueOf(text),"1")&& String.valueOf(text).length() == 11)){cellHead.setCellValue(Integer.parseInt(String.valueOf(text))); }// 有小数、或为电话else if(ValidateUtils.isDouble(dataList.get(j).toString())){cellHead.setCellValue(Double.parseDouble(String.valueOf(text))); }// 字符串else{cellHead.setCellValue(String.valueOf(text)); }}}return workbook;}
}

 

 

 

 

 

 

 

 

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

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

相关文章

学成在线--19.新增课程(数据字典)

文章目录一.介绍二.数据模型三.数据模型类四.字典查询API接口五.服务器端1.Dao2.Service3.Controller一.介绍 在新增课程界面需要选择课程等级、课程状态等&#xff0c;这些信息统一采用数据字典管理的方式。 本项目对一些业务的分类配置信息&#xff0c;比如&#xff1a;课程…

程序员的进化

对于很多同学来说&#xff0c;他们对程序员的职业生涯非常关注。而这本质上是一个进化的过程。我们将如何进化&#xff1f;在每个进化阶段我们应该如何提高自己&#xff1f;下面的文章根据我自己的切身经历和阅读过的书&#xff0c;为程序员每个阶段的进化提供了不同的学习思路…

学成在线--20.新增课程(最后完善)

文章目录一.效果展示二.服务端1.Api接口2.Dao3.Service4.Controller三.前端1.页面完善1&#xff09;创建course_add.vue页面2&#xff09;course_add.vue页面路由3&#xff09;course_list.vue中添加链接2.查询数据字典1&#xff09;视图中代码2&#xff09;定义Api方法3&#…

html里面表格问题

表格问题汇总&#xff1a; 现代网站中表格的用武之地已经很少了&#xff0c;但是一些框架&#xff0c;如bootstorp还是会用到的&#xff0c;所以还是需要了解掌握。本随笔只涉及开发过程中遇到的表格问题&#xff0c;不做其他拓展。 1、caption代表的是表格元素的标题。至于标题…

RT-Thread简介

RT-Thread简介 RT-Thread是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff08;RTOS&#xff09;&#xff0c;具有完全的自主知识产权。 经过16个年头的沉淀&#xff0c;伴随着物联网的兴起&#xff0c;它正演变成一个功能强大、组件丰富的物联网操作系统。 RT-Thre…

学成在线--21.课程信息修改

文章目录一.需求分析二.课程管理导航页面1.定义course_manage.vue为课程管理页面2.创建各个信息管理页面3.创建路由三.服务端1.Api接口1&#xff09;根据课程ID查询课程信息2&#xff09;修改课程信息2.Dao3.Service4.Controller四.前端1. 完成course_baseinfo.vue页面2.API方法…

C#曲线分析平台的制作(四,highcharts+ajax加载后台数据)

在上一篇博客&#xff1a;C#曲线分析平台的制作&#xff08;三&#xff0c;三层构架echarts显示&#xff09;中已经完成了后台的三层构架的简单搭建&#xff0c;为实现后面的拓展应用开发和review 改写提供了方便。而在曲线分析平台中&#xff0c;往往有要求时间轴联动功能&…

国际C语言混乱代码大赛结果公布

国际C语言混乱代码大赛&#xff08;IOCCC, The International Obfuscated C Code Contest&#xff09;是一项国际编程赛事&#xff0c;从1984年开始&#xff0c;每年举办一次&#xff08;1997年、1999年、2002年、2003年和2006年例外&#xff09;。目的是写出最有创意的最让人难…

eclipse加速之禁用 JS、jsp 等文件的语法验证

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 去除eclipse的JS验证&#xff1a; 将windows->preference->Java Script->Validator->Errors/Warnings-> Enable Javascr…

学成在线--22.课程营销

文章目录一.需求分析二.数据模型三.服务端1.Api接口1&#xff09;查询课程营销信息2&#xff09;更新课程营销信息2.Dao3.Service4.Controller四.前端1.Api 方法2.编写 course_marketinfo.vue1&#xff09;template2&#xff09;数据对象3&#xff09;保存方法4&#xff09;在m…

电子邮件系统

&#xff08;一&#xff09;电子邮件系统的构成 1.用户代理 用户与电子邮件系统的接口&#xff0c;用户代理使用户能够通过一个很友好的接口来发送和接收邮件&#xff0c;用户代理就是一个运行在PC上的程序。 2 邮件服务器 邮件服务器的功能是发送和接收邮件&#xff0c;同…

mysql查看binlog日志内容

2019独角兽企业重金招聘Python工程师标准>>> &#xff08;一&#xff09; binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变&#xff0c;并以二进制的形式保存在磁盘中&#xff1b; 它可以用来查看数据库的变更历史、数据库增量备份和恢复、Mysql的复制&…

架构师:我们需要顶层设计

架构师&#xff1a;我们需要顶层设计背景&#xff1a; 某公司&#xff0c;建立的程序又被推倒&#xff0c;外人觉得很奇怪&#xff0c;这个程序的主管非常敬业&#xff0c;关注到了程序每一个细节&#xff0c;甚至包括每一个按钮的文字和位置。这个主管很委屈&#xff0c;他说…

Diango博客--19.使用 Docker部署项目到线上服务器

文章目录1.克隆代码到服务器2.创建环境变量文件用于存放项目敏感信息3.在 .production 文件写入下面的内容并保存4.修改 Nginx 配置5.修改项目配置文件6.启动容器7.检查容器启动状况8.配置 HTTPS 证书&#xff08;没有配置域名无法配置&#xff0c;只能通过服务器 ip 以 HTTP 协…

Jquery Datatable 数据填充报错:requested unknown parameter ‘XXX‘ for row xx, column xx 解决方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 报错如图&#xff1a; 解决方法见官网&#xff1a;https://datatables.net/manual/tech-notes/4 摘要如下&#xff1a; Parameter is an…

Tarjan-缩点

$Tarjan$缩点 Tarjan的第二个应用就是求缩点啦。缩点虽然比割点麻烦一点&#xff0c;但是用处也比割点要大不少。 本来要学另外两个缩点算法的,但是似乎没什么用...$MST$里确实有只能有$prim$或者只能用$kruscal$的题目&#xff0c;但是这三种缩点...在网上没有找到介绍它们之间…

百度王一男: DevOps 的前提是拆掉业务-开发-测试-运维中间的三面墙

这是一个创建于 375 天前的主题&#xff0c;其中的信息可能已经有所发展或是发生改变。由数人云、优维科技、中生代社区联合发起的 系列 Meetup 《 DevOps&SRE 超越传统运维之道》 先后在深圳、北京举行过两场 7 月 15 日上海站&#xff0c;敬请期待 ▼ 王一男老师在《 Dev…

解决Cannot change version of project facet Dynamic web module to 2.5

见 &#xff1a; http://blog.csdn.net/steveguoshao/article/details/38414145 我们用Eclipse创建Maven结构的web项目的时候选择了Artifact Id为maven-artchetype-webapp&#xff0c;由于这个catalog比较老&#xff0c;用的servlet还是2.3的&#xff0c;而一般现在至少都是2.5…

Diango博客--22.Django Haystack 全文检索与关键词高亮

文章目录1. Django Haystack 简介2. 安装 django-haystack和elasticsearch 23. 构建容器来运行 elasticsearch 服务4. 配置 Haystack5. 处理数据6. 配置 URL7. 修改搜索表单8. 创建搜索结果页面9. 高亮关键词10. 建立索引文件11. 修改搜索引擎为中文分词12. 防止标题被截断13. …