POI 导出

1.添加依赖

        <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.17</version></dependency>

2.POI工具类


import java.io.UnsupportedEncodingException;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;public class PoiUtils {/*** 导出Excel* @param sheetName sheet名称* @param title 标题* @param values 内容* @param wb HSSFWorkbook对象* @return*/public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,String [][]values, HSSFWorkbook wb){// 第一步,创建一个HSSFWorkbook,对应一个Excel文件if(wb == null){wb = new HSSFWorkbook();}// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet sheet = wb.createSheet(sheetName);// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制HSSFRow row = sheet.createRow(0);// 第四步,创建单元格,并设置值表头 设置表头居中HSSFCellStyle style = wb.createCellStyle();
//        style.setAlignment(HorizontalAlignment.CENTER); // 创建一个居中格式//声明列对象HSSFCell cell = null;//创建标题for(int i=0;i<title.length;i++){cell = row.createCell(i);cell.setCellValue(title[i]);cell.setCellStyle(style);}//创建内容for(int i=0;i<values.length;i++){row = sheet.createRow(i + 1);for(int j=0;j<values[i].length;j++){//将内容按顺序赋给对应的列对象row.createCell(j).setCellValue(values[i][j]);}}return wb;}//发送响应流方法public static void setResponseHeader(HttpServletResponse response, String fileName) {try {try {fileName = new String(fileName.getBytes(),"ISO8859-1");} catch (UnsupportedEncodingException e) {// TODO Auto-generated catch blocke.printStackTrace();}response.setContentType("application/octet-stream;charset=ISO8859-1");response.setHeader("Content-Disposition", "attachment;filename="+ fileName);response.addHeader("Pargam", "no-cache");response.addHeader("Cache-Control", "no-cache");} catch (Exception ex) {ex.printStackTrace();}}
}

3.导出

@GetMapping("/export")@ApiOperation(value = "导出设备清单信息接口", notes = "导出")public void export(@RequestParam(value = "page", required = true, defaultValue = "0") @ApiParam(required = true, defaultValue = "0", value = "当前页数,默认从0开始") Integer page,@RequestParam(value = "limit", required = true, defaultValue = "10") @ApiParam(required = true, defaultValue = "10", value = "每一页条数,默认10条") Integer limit,@RequestParam(value = "pkId", required = false) @ApiParam(required = false, value = "车场名称") String pkId, HttpServletResponse response){try {log.info("++++++++++访问/parkDevice/export接口:>>>>>>pkId:" + pkId );Page<ParkDeviceVo> requestPage = new Page<>(page, limit);Map<String, Object> requestParam = new HashMap<String, Object>();requestParam.put("pkId", pkId);Page<ParkDeviceVo> parkDeviceVoPage = parkDeviceService.getParkDevoceByPage(requestPage, requestParam);List<ParkDeviceVo> parkDeviceVoList = parkDeviceVoPage.getRecords();//excel标题String[] title = {"设备类型","设备厂家","设备型号","设备数量","备注","添加时间"};//excel文件名String fileName = "设备清单信息"+System.currentTimeMillis()+".xls";//sheet名String sheetName = "设备清单信息表";String[][] content = new String[parkDeviceVoList.size()][title.length];for(int i = 0; i < parkDeviceVoList.size();i++){//设备类型if (parkDeviceVoList.get(i).getDeviceType()!=null){//设备类型(1.相机 2.道闸 3.显示屏 4.其他)int type =parkDeviceVoList.get(i).getDeviceType();switch (type){case 1:content[i][0] = "相机";break;case 2:content[i][0] = "道闸";break;case 3:content[i][0] = "显示屏";break;case 4:content[i][0] = "其他";break;}}else {content[i][0] = "";}//设备厂家content[i][1] = parkDeviceVoList.get(i).getDeviceVender() == null ? "" :parkDeviceVoList.get(i).getDeviceVender();//设备型号content[i][2] = parkDeviceVoList.get(i).getDeviceNo() == null ? "" :parkDeviceVoList.get(i).getDeviceNo();//设备数量content[i][3] =parkDeviceVoList.get(i).getDeviceNum() == null ? "" :parkDeviceVoList.get(i).getDeviceNum().toString();//设备型号content[i][4] = parkDeviceVoList.get(i).getRemark() == null ? "" :parkDeviceVoList.get(i).getRemark();//设备型号SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");content[i][4] = parkDeviceVoList.get(i).getCreateTime() == null ? "" :formatter.format(parkDeviceVoList.get(i).getCreateTime());}//创建HSSFWorkbookHSSFWorkbook wb = PoiUtils.getHSSFWorkbook(sheetName, title, content, null);//响应到客户端PoiUtils.setResponseHeader(response, fileName);OutputStream os = response.getOutputStream();wb.write(os);os.flush();os.close();log.info("++++++++++访问/parkDevice/export接口调用成功>>>>>>");}catch (Exception e){log.error("++++++++++访问/parkDevice/export接口系统异常原因 : +++++++++" + e.getMessage());}}

 

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

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

相关文章

度量空间的基本性质

收敛性 $\bf命题&#xff1a;$ 连续性 $\bf命题&#xff1a;$ 稠密性 $\bf命题&#xff1a;$设$E$为度量空间$X$中的点集&#xff0c;则$E$在$X$中稠密的充要条件是对任意的$x \in X$&#xff0c;存在点列$\left\{ {{x_n}} \right\} \subset E$&#xff0c;使得${x_n} \to x\…

@Value 注入静态变量

1、定义配置类 Component public class FilePathConfig {public static String httpResUrl;public static String savePath;public static String resUri;public String getHttpResUrl() {return httpResUrl;}Value("${file.path.httpResURL}")public void setHttpR…

配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler” 解决办法...

今天遇到了这个问题&#xff0c; 电脑系统&#xff1a;vs2010 win7系统 iis7 我运行在iis中配置的那个网站后&#xff0c;报错&#xff1a;错误代码 0x800700b7 配置错误定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节 这个问题原因在于window7的II…

Base64 四种方式的编码和解码

base64与字符串String之间的相互转换 package com.wzq;import javax.xml.bind.DatatypeConverter; import java.io.UnsupportedEncodingException; import java.util.Base64;/*** ClassName Base64Utils* Description: TODO* Author wzq* CreateDate 2019/10/14* UpdateDate 2…

邮件服务器“单点登录”功能

现状分析&#xff1a; 相信我们每个人都有这样的经历&#xff0c;比方说银行卡多的人要具体记忆每张卡的密码挺麻烦&#xff1b;现代人兴 趣广泛&#xff0c;爱好多多&#xff0c;运动健身俱乐部、娱乐游戏休闲、购物理财等各种场合少不了获得入门的“通行证”&#xff0c;要输…

【kafka】 windows平台搭建及使用

一、安装 kafka 需要java环境&#xff1b;kafka 最新版本内置了 zookeeper&#xff0c;所以不需要安装zookeeper&#xff1b;下载kafka最新版本&#xff0c;因为下载的是tgz文件&#xff0c;所以不需要安装&#xff0c;解压到相应的地方就可以了。下载地址&#xff1a;http://…

Unix/Linux环境C编程入门教程(16) LinuxMint CCPP开发环境搭建

1.Linux Mint由Linux Mint Team团队于2006年开始发行&#xff0c;是一份基于Debian和Ubuntu的Linux发行版。其目标是提供一种更完整的即刻可用体验&#xff0c;这包括提供浏览器插件、多媒体编解码器、对DVD播放的支持、Java和其他组件&#xff0c;它也增加了一套定制桌面及各种…

@TableLogic注解表示逻辑删除

TableLogic注解表示逻辑删除 效果&#xff1a;在字段上加上这个注解再执行BaseMapper的删除方法时&#xff0c;删除方法会变成修改 场景&#xff1a; 1.实体类中属性加上TableLogic, TableLogic private Integer dataStatus; 2.调用BaseMapper的deleteById(id)或…

图片上传至本地

1.配置文件 bootstrap.yml file:path:httpResURL: http://122.246.1.148:19086SAVE_PATH: /data/imagesresURI: /wzq/ 2.文件工具类 import cn.hutool.core.io.FileUtil; import com.vinsuan.park.platform.biz.FilePathConfig; import lombok.AllArgsConstructor; import lo…

html调用静态json例子

html调用静态json例子 1.json {"current": 2,"result": "success" } 1.html <!doctype html> <html> <head> <meta charset"utf-8"> <title></title> <script src"http://code.jquery.co…

Extjs发票管理系统

技术特点&#xff1a;Extjs框架&#xff0c;三层架构&#xff0c;Ajax,json 1.仿office2007菜单.介面美观大方,可动态更改皮肤保存至cookie。 2,json数据源与实体类的相互转换. 3.可下载桌面版登录方式,统计在线人数. 4, chm操作手册,方便操作人员熟悉. 功能描述&#xff1a; 1…

jQuery调用WebService返回JSON数据

相信大家都比较了解JSON格式的数据对于ajax的方便&#xff0c;不了解的可以从网上找一下这方面的资料来看一下&#xff0c;这里就不多说了&#xff0c;不清楚的可以在网上查一下&#xff0c;这里只说一下因为参数设置不当引起的取不到返回值的问题。 在用jQuery调用WebService的…

Docker---问题1:bash: vi: command not found/bash: vim: command not found

在使用docker时&#xff0c;有时候我们需要编辑配置文件&#xff0c;需要使用vim或者vi命令&#xff0c;发现&#xff1a; root64801a03b121:/etc/nginx/conf.d# vi default.conf bash: vi: command not found root64801a03b121:/etc/nginx/conf.d# vim default.conf bash: …

C# 获取配置文件节点值

<?xml version"1.0" encoding"utf-8" ?><configuration> <appSettings> <add key"ManagerName" value"XXX" /> </appSettings> <connectionStrings> <add name"DataBase"…

WHENEVER SQLERROR EXIT SQL.SQLCODE

1.SQL>WHENEVER SQLERROR EXIT SQL.SQLCODE出现错误后终止SQL*Plus运行。2.SQL>WHENEVER SQLERROR SQL.SQLCODE EXIT ROLLBACK 除了之前的含义&#xff0c;还包括让SQL*Plus在推出之前把所有还没提交的变化回滚处理。转载于:https://www.cnblogs.com/nuaa/p/3828473.html…

IDEA 快捷键终极大全

一、自动代码 常用的有fori/sout/psvmTab即可生成循环、System.out、main方法等boilerplate样板代码 。 例如要输入for(User user : users)只需输入user.forTab &#xff1b; 再比如&#xff0c;要输入Date birthday user.getBirthday()只需输入user.getBirthday().varTab即…

数组中只出现一次的数字

题目&#xff1a;一个整型数组里&#xff0c;除了两个数字以外&#xff0c;其他数字都出现了两次&#xff0c;请写程序找到这两个只出现一次的数字。要求&#xff1a;时间复杂度为O(n),空间复杂度为O(1). 分析&#xff1a;看到这题&#xff0c;首先要明白&#xff0c;这是求两个…

iOS工作笔记之NSClassFromString

id myObj [[NSClassFromString("MySpecialClass") alloc] init]; 和 id myObj [[MySpecialClass alloc] init]; 是一样的。但是&#xff0c;如果你的程序中并不存在MySpecialClass这个类&#xff0c;下面的写法会出错&#xff0c;而上面的写法只是返回一个空对象而…

Maven 使用bat批量清除本地仓库的lastUpdated文件

echo off set REPOSITORY_PATHC:\Users\Administrator\.m2\repository rem 正在搜索... for /f "delims" %%i in (dir /b /s "%REPOSITORY_PATH%\*lastUpdated*") do ( del /s /q %%i ) rem 搜索完毕 pause 新建一个文件txt文件&#xff0c;把.txt后缀…

“ddl”有一个无效 SelectedValue,因为它不在项目列表中。

“ddl_ekt”有一个无效 SelectedValue,因为它不在项目列表中。 怎么回事 现象&#xff1a; 在用户控件的page_load事件里绑定下拉框&#xff0c;报上面错误 解决&#xff1a; 将下拉框绑定&#xff0c;放在page_Init事件里 这可能跟服务器加载控件的生命过程有关系转载于:https…