java设置可供下载的excel模板文件

controller

@GetMapping("/download/excel")  
@Operation(summary = "下载技术引入Excel模板")  
public void downloadTemplateExcel(HttpServletResponse response) {  technologyService.getTechnologyExcelModel(response);  
}

service

public void getTechnologyExcelModel(HttpServletResponse response) {  List<TechnologyImportExcelDto> technologyImportExcelDtoList = getTechnologyImportExcelVOList();  File file;  try {  //使用临时文件  file = File.createTempFile("开源技术导入模板", ".xlsx");  FileOutputStream fileOutputStream = new FileOutputStream(file);  ExportParams params = new ExportParams("表格标题", "Sheet1", ExcelType.XSSF);  String tipsMessage = "开源技术导入需遵循以下规则:xxx";  params.setTitle(tipsMessage);  Workbook workbook = ExcelExportUtil.exportExcel(params, TechnologyImportExcelDto.class, technologyImportExcelDtoList);  // 获取Sheet对象  Sheet sheet = workbook.getSheetAt(0); // 只有一个Sheet  // 设置标题行样式  Row titleRow = sheet.getRow(0); // 标题在第一行  CellStyle titleStyle = workbook.createCellStyle();  titleStyle.setAlignment(HorizontalAlignment.LEFT); // 设置水平对齐方式为左对齐  titleStyle.setVerticalAlignment(VerticalAlignment.CENTER); // 设置垂直对齐方式为居中  titleStyle.setWrapText(true); // 设置文本自动换行  // 设置边框  titleStyle.setBorderBottom(BorderStyle.THIN);  titleStyle.setBorderTop(BorderStyle.THIN);  titleStyle.setBorderLeft(BorderStyle.THIN);  titleStyle.setBorderRight(BorderStyle.THIN);  // 设置标题行每个单元格的样式  for (Cell cell : titleRow) {  cell.setCellStyle(titleStyle);  }  // 设置行高  titleRow.setHeightInPoints(titleRow.getHeightInPoints() * 4); // 设置为五行字的高度  // 设置字体加粗  Font font = workbook.createFont();  font.setBold(true);  titleStyle.setFont(font);  workbook.write(fileOutputStream);  fileOutputStream.close();  workbook.close();  } catch (IOException e) {  throw new RuntimeException(e);  }  //下载,读取文件流并将其添加到response的输出流中,同时设置响应的Header字段  try (InputStream inputStream = new FileInputStream(file);  //获取response的输出流对象  OutputStream outputStream = response.getOutputStream()) {  response.setContentType("application/octet-stream");  response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(file.getName(), StandardCharsets.UTF_8));  response.setHeader("Access-Control-Expose-Headers", "Content-Disposition");  IOUtils.copy(inputStream, outputStream);  outputStream.flush();  } catch (Exception e) {  throw new RuntimeException();  } finally {  //清除文件  file.delete();  }  
}
@NotNull  
private static List<TechnologyImportExcelDto> getTechnologyImportExcelVOList() {  List<TechnologyImportExcelDto> technologyImportExcelDtoList = new ArrayList<>();  TechnologyImportExcelDto technologyImportExcelDto = new TechnologyImportExcelDto(  "系统软件/固件",  "模板", "x",  "1.0.0",  "GPL-2.0",  "http://xx.com",  "5",  "2023-03-15 14:17:02",  "http://download.com",  "描述内容");  technologyImportExcelDtoList.add(technologyImportExcelDto);  return technologyImportExcelDtoList;  
}

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

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

相关文章

htb monitored root方式其中的一种(仅作记录)

快下班时候审出来的&#xff0c;目前root的第5种方式 nagiosmonitored:~$ cat /usr/local/nagiosxi/scripts/backup_xi.sh #!/bin/bash # # Creates a Full Backup of Nagios XI # Copyright (c) 2011-2020 Nagios Enterprises, LLC. All rights reserved. #BASEDIR$(dirname …

SCI 2区论文:医疗保健中心训练有素的脑膜瘤分割模型的性能测试-基于四个回顾性多中心数据集的二次分析

基本信息 标题&#xff1a;Performance Test of a Well-Trained Model for Meningioma Segmentation in Health Care Centers: Secondary Analysis Based on Four Retrospective Multicenter Data Sets中文标题&#xff1a;医疗保健中心训练有素的脑膜瘤分割模型的性能测试&am…

PE解释器之PE文件结构(二)

接下来的内容是对IMAGE_OPTIONAL_HEADER32中的最后一个成员DataDirectory&#xff0c;虽然他只是一个结构体数组&#xff0c;每个结构体的大小也不过是个字节&#xff0c;但是它却是PE文件中最重要的成员。PE装载器通过查看它才能准确的找到某个函数或某个资源。 一&#xff1…

软件测试|sqlalchemy一对一关系详解

简介 SQLAlchemy 是一个强大的 Python ORM&#xff08;对象关系映射&#xff09;库&#xff0c;它允许我们将数据库表映射到 Python 对象&#xff0c;并提供了丰富的关系模型来处理不同类型的关系&#xff0c;包括一对一关系。在本文中&#xff0c;我们将深入探讨 SQLAlchemy …

Ubuntu使用QtCreator + CMake 开发C/C++程序

平台 OS: Ubuntu 20.04 cmake: 3.16.3 IDE: Qt Creator 4.11.1 Based on Qt 5.14.1 (GCC 5.3.1 20160406 (Red Hat 5.3.1-6), 64 bit) Built on Feb 5 2020 12:48:30 From revision b2ddeacfb5 Copyright 2008-2019 The Qt Company Ltd. All rights reserved. The program …

【ROS2】ROS2使用C++实现简单服务端

使用ROS2实现简单的服务端,功能为将客户端提供的两个数相加后返回给客户端。 代码如下: #include "rclcpp/rclcpp.hpp" #include "std_msgs/msg/string.hpp" #include "base_interfaces_demo/msg/student.hpp" #include "base_interfac…

Hugging Face怎么通过国内镜像去进行模型下载(hf-mirror.com)

一、引言 Hugging Face &#x1f917;是一家专注于自然语言处理&#xff08;NLP&#xff09;技术的公司&#xff0c;以其开源贡献和先进的机器学习模型而闻名。该公司最著名的产品是 Transformers 库&#xff0c;这是一个广泛使用的 Python 库&#xff0c;它提供了大量预训练模…

(Bean实例化的基本流程 )学习Spring的第六天

Bean实例化的基本流程 其实可以解释为三个过程: 1 . 有关Bean的信息被封装成一个map集合 : DeanDefinitionMap . key为Bean的名称 , value为有关<bena>标签的信息 2 . Spring框架对这个存储Bean信息的Map进行遍历 , 进行创建对象 , 把创建好的对象存储到另一个Map集合里…

Redis中的BigKey相关问题

什么是bigkey bigkey是指key对应的value所占用的内存空间比较大。例如一个字符串类型的value可以最大存到512MB&#xff0c;一个列表类型的value最多可以存储2^32-1个元素。如果按照数据结构来细分的话&#xff0c;一般分为字符串类型bigkey和非字符串类型bigkey。 字符串类型…

深入理解 Kubernetes Ingress:路由流量、负载均衡和安全性配置

Kubernetes Ingress 是 Kubernetes 集群中外部流量管理的重要组件。它为用户提供了一种直观而强大的方式&#xff0c;通过定义规则和配置&#xff0c;来控制外部流量的路由和访问。 1. 什么是 Ingress&#xff1f; 在 Kubernetes 中&#xff0c;Ingress 是一种 API 资源&#…

STL之multimap 【多重映射】

这里写目录标题 STL之multimap 【多重映射】头文件创建 std::multimap插入元素遍历 std::multimap删除元素查找元素场景应用综合示例 STL之multimap 【多重映射】 multimap&#xff1a;多重映射&#xff0c;允许存储多个相同键的键-值对&#xff0c;并按键升序排序。 头文件 …

取代房子,中国又一种资本在崛起(深度)

我一直有一个观点&#xff1a;经济形势好的时候&#xff0c;只要不是夕阳行业&#xff0c;做什么都能过得不错。经济形势差的时候&#xff0c;对于个人来说&#xff0c;拼的就是学习能力。 10年前&#xff0c;在市场上很吃香的是MBA&#xff0c;那时候企业需要高速发展&#x…

如何利用chatgpt提高工作效率?

使用 ChatGPT 提高工作效率的关键在于有效利用其能力来辅助和优化你的工作流程。以下是一些具体的建议&#xff1a; 1. 自动化和优化常规任务 生成和编辑文本&#xff1a;利用 ChatGPT 快速撰写或编辑报告、电子邮件、提案等。代码辅助&#xff1a;获取编程语言的帮助&#x…

JVM工作原理与实战(二十):直接内存

专栏导航 JVM工作原理与实战 RabbitMQ入门指南 从零开始了解大数据 目录 专栏导航 前言 一、直接内存 1.直接内存作用 二、在直接内存上创建数据 总结 前言 JVM作为Java程序的运行环境&#xff0c;其负责解释和执行字节码&#xff0c;管理内存&#xff0c;确保安全&…

Spring Cloud详细入门使用

文章目录 Spring Cloud服务注册与发现EurekaServer 启动服务注册服务发现 NacosServer启动 (nacos2.2.0)服务注册服务发现服务集群命名空间配置中心集群搭建 负载均衡RPC远程过程调用Feign使用 网关路由断言工厂网关过滤工厂跨域处理全局跨域配置单个微服务跨域配置 限流 熔断 …

Codeforces Round 919 (Div. 2) A~E

A. Satisfying Constraints(模拟) 题意&#xff1a; 给出 n n n个限制条件&#xff0c;问有多少个数字 k k k同时满足这些限制条件。 限制条件分为以下三种&#xff1a; k k k必须大于等于给出的一些数字 x x x k k k必须小于等于给出的一些数字 x x x k k k不能与给出的…

Netty和传统NIO之间的比较

Netty回显服务器实现&#xff1a; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelInitializer; import io.netty.channel.ChannelOption; import io.netty.channel.SimpleChannelInboundHandle…

十个Java字符串操作示例程序

1. 如何在String中获取不同的字符及其计数&#xff1f; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors;public class DistinctCharsCount {public static void main(String[] args) {printDistinctCharsWithCo…

定时器开发基础

1定时器的基本概述 通过滴漏和漏沙瓶这两个例子简单讲述定时器的基本工作原理。 STM32的常见的定时器资源&#xff1a; 系统嘀嗒定时器SysTick、看门狗定时器WatchDog、实时时钟RTC、基本定时器、通用定时器、高级定时器。 系统嘀嗒定时器SysTick &#xff1a;这是一个集成在C…

中移(苏州)软件技术有限公司面试问题与解答(2)—— Linux内核内存初始化的完整流程1

接前一篇文章&#xff1a;中移&#xff08;苏州&#xff09;软件技术有限公司面试问题与解答&#xff08;1&#xff09;—— 可信计算国密标准 本文参考以下文章&#xff1a; 启动期间的内存管理之初始化过程概述----Linux内存管理(九) Linux初始化 特此致谢&#xff01; 本…