java后端:实现导出excel,按其中一个列的数据生成二维码图片,显示在列表中
2021-04-23 03:27
标签:word position osi 输出流 new lis rtp null bytearray 新手记录自己的用过的工具,要是能帮到码友就更好了。借鉴:(借鉴的文章找不到了) 需求分析: 实现导出excel,二维码根据编号生成,二维码图片不存储在数据库(刚看到需求,还以为要把二维码图片存在数据库,前辈说完全没必要存) 运行环境及框架: idea、springboot、 实现: 第一步:导入依赖 第二步:放在工具类 第三步:controller层 @ApiOperation("导出") @RequestMapping(value = "/export") 效果: 用swagger调用接口,导出的没有数据,但是前端调用的效果如下:(有大佬知道什么问题的话,望指教) java后端:实现导出excel,按其中一个列的数据生成二维码图片,显示在列表中 标签:word position osi 输出流 new lis rtp null bytearray 原文地址:https://www.cnblogs.com/qq993411626------/p/13272675.html
import com.google.zxing.BarcodeFormat;
import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.zkhb.boot.ponder.common.utils.common.QRCodeUtil;
import com.zkhb.boot.ponder.common.web.exception.PonderException;
import com.zkhb.boot.ponder.services.pound.entity.PoundCasualUser;
import com.zkhb.boot.ponder.services.pound.vo.report.PoundCasualUserReport;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.Workbook;
import org.jeecgframework.poi.excel.ExcelExportUtil;
import org.jeecgframework.poi.excel.entity.ExportParams;
import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.BufferedOutputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
/**
* @author Chen
* @Description:
* @ClassName:ExeclUtil
* @date 2020/7/7 12:46
* @Version: 1.0
* @RETURN
*/
@Slf4j
public class ExcelUtil {
/**
* 导出excel
*
* @param response HttpServletResponse
* @param fileName 文件名字
* @param workbook 通过exportPicture()方法获取
* @author zhy
*/
public static void writeExcel(HttpServletResponse response, String fileName, Workbook workbook) {
// 判断数据
if (workbook == null) {
throw new PonderException("错误");
}
// 重置响应对象
response.reset();
try {
OutputStream outputStream = getOutputStream(fileName, response);
BufferedOutputStream bufferedOutPut = new BufferedOutputStream(outputStream);
workbook.write(bufferedOutPut);
bufferedOutPut.flush();
bufferedOutPut.close();
outputStream.close();
} catch (IOException e) {
log.error(e.getMessage());
}
}
/**
* 导出文件时为Writer生成OutputStream
*
* @param fileName 文件名字
* @param response response
* @return 输出流
* @author zhy
*/
private static OutputStream getOutputStream(String fileName, HttpServletResponse response) {
try {
fileName = URLEncoder.encode(fileName, "UTF-8");
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf8");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "no-store");
response.addHeader("Cache-Control", "max-age=0");
return response.getOutputStream();
} catch (IOException e) {
throw new PonderException("导出excel表格失败!");
}
}
/**
* 获取Workbook对象
*
* @param pigList 查询黑猪对象列表
* @param aesPassword aes加密密码
* @param qrCodeUrl 溯源网址前缀
* @return 文件下载
* @author zhy
*/
public static Workbook exportPicture(List
public Result export(
@RequestParam(value = "ids") @ApiParam(value = "要导出的id,多个用逗号隔开", required = true) String ids,
HttpServletRequest request,HttpServletResponse response)throws Exception{
//获取List集合(替换上你要导出的集合)
List
//导出的excel名
String fileName = "临时用户列表" + DateUtils.formatDate(new Date(), "yyyyMMddHHmmss");
//调用导出的方法
ExcelUtil.writeExcel(response,fileName,ExcelUtil.exportPicture(poundCasualUserList,null,null));
return null;
}
上一篇:Spring零配置之@Configuration注解详解
下一篇:Java接口小结
文章标题:java后端:实现导出excel,按其中一个列的数据生成二维码图片,显示在列表中
文章链接:http://soscw.com/index.php/essay/78361.html