当前位置: 首页 > wzjs >正文

设计公司网站欣赏网站 迁移

设计公司网站欣赏,网站 迁移,卓越职业院校建设专题网站,太原企业网站搭建客户要求导出的excel文件是有好看格式的,当然本文举例模板文件比较简单,内容丰富的模板可以自行设置,话不多说,第一步设置一个"好看"的excel文件模板 上面要注意的地方是{.变量名} ,这里的变量名对应的就是…

客户要求导出的excel文件是有好看格式的,当然本文举例模板文件比较简单,内容丰富的模板可以自行设置,话不多说,第一步设置一个"好看"的excel文件模板

上面要注意的地方是{.变量名} ,这里的变量名对应的就是导出数据对象里面的变量名,一定要有"."
对象属性,不写"."就是填充单个属性,写了就是填充列表数据
先看代码目录结构

application.yml配置文件:

server:port: 9009

springboot启动类代码:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublic class BootstrapApp {public static void main(String[] args) {SpringApplication.run(BootstrapApp.class, args);}
}



数据对象代码:

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Getter;
import lombok.Setter;@Getter
@Setter
public class User {private int id;@ExcelProperty(value = "姓名")private String name;@ExcelProperty(value = "年龄")private String age;@ExcelProperty(value = "兴趣爱好")private String love;@ExcelProperty(value = "备注")private String remark;
}

然后controller代码:
 

import com.operation.excel.service.DoExcelService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpServletResponse;@Slf4j
@RestController
@RequestMapping("/api")
public class ExcelController {@Autowiredprivate DoExcelService doExcelService;@GetMapping("/export")public void export(HttpServletResponse response) throws Exception {log.info("开始导出自定义样式excel");doExcelService.export(response);}
}

然后是service代码

import javax.servlet.http.HttpServletResponse;public interface DoExcelService {void export(HttpServletResponse response) throws Exception;
}

service对应实现类代码:

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.operation.excel.dto.User;
import com.operation.excel.service.DoExcelService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;@Service
@Slf4j
public class DoExcelServiceImpl implements DoExcelService {@Overridepublic void export(HttpServletResponse response) throws Exception {// 1:设置响应参数setResponseHeader(response, "user_");// 2:获取待导出的数据合集List<User> productCoreParamList = getData();// 3:获取模板流InputStream templateStream = new ClassPathResource("template/export-user.xlsx").getInputStream();// 4:写入response导出excelEasyExcel.write(response.getOutputStream()).registerWriteHandler(setStyle()).withTemplate(templateStream).sheet().doFill(productCoreParamList);}//这里设置响应头的部分参数private void setResponseHeader(HttpServletResponse response, String fileName) throws Exception {try {// 修正文件扩展名为xlsx以匹配实际格式String fileNameStr = fileName + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss")) + ".xlsx";String encodedFileName = URLEncoder.encode(fileNameStr, StandardCharsets.UTF_8.toString());response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");response.setCharacterEncoding("UTF-8");response.setHeader("Content-Disposition", "attachment;filename=" + encodedFileName);} catch (Exception e) {log.error("set response header error", e);throw new Exception("设置响应头失败: " + e.getMessage());}}// 这个方法是模拟需要导出的数据(实际是从数据库获取)private List<User> getData() {List<User> students = new ArrayList<>();for (int i = 0; i < 10; i++) {User student = new User();student.setId(i);student.setAge("A" + i);student.setName("B" + i);student.setLove(UUID.randomUUID().toString());student.setRemark(UUID.randomUUID().toString());students.add(student);}return students;}//这这个方法是设置填充的数据内容字体样式,也可以不设置private HorizontalCellStyleStrategy setStyle(){// 定义样式:自动换行WriteCellStyle contentWriteCellStyle = new WriteCellStyle();contentWriteCellStyle.setWrapped(true); // 关键:开启自动换行WriteFont writeFont = new WriteFont();writeFont.setFontName("Microsoft YaHei"); // 字体writeFont.setFontHeightInPoints((short) 12);// 字体大小contentWriteCellStyle.setWriteFont(writeFont);// 注册样式策略(全局生效)HorizontalCellStyleStrategy styleStrategy = new HorizontalCellStyleStrategy(null, // 头样式(默认)contentWriteCellStyle // 内容样式(自动换行));return styleStrategy;}

postman验证效果:
 

response直接展示会乱码,所以选择save response 然后选择保存为文件也就是 save file
查看保存的文件:
 

总结:就是先准备一个好看的模板(设置变量),然后读模版流,然后向模板流中的sheet工作表填充数据,最后写入response前端获取

http://www.dtcms.com/wzjs/826100.html

相关文章:

  • 百合视频做爰视频网站湛江企业网站怎么建设
  • 网站你懂我意思正能量免费软件做好我局门户网站建设工作
  • 中国建设银行网站公积金查询上海搜索引擎优化seo
  • 网站建设玖金手指谷哥十一四川住房和城乡建设厅网站
  • 优秀网站建设模版中国空间站现在有几个人
  • 上市公司网站建设分析评价网站是怎么被挂马
  • 花钱做网站注意江西做网站找谁
  • 旅游电子商务网站的建设汉中建设工程招标信息网
  • 佛山企业快速建站上海市营业执照查询
  • 网站排行榜前十名关于企业网站建设的请示
  • 珠海市品牌网站建设平台wordpress手工升级
  • 凡科建站登录德州企业网站建设要素
  • 网站前台设计工具怎么做彩票网站代理
  • wordpress首页显示链接云南网站建设优化
  • 如何判断网站好坏南阳旅游网站建设现状
  • 在什么网站做引流自己制作微信小程序
  • 自助建站门户网站一周新闻热点事件
  • 唐山网站制作服务公司虚拟主机是什么
  • 医疗器械网站建设方案网站建设包含哪些内容
  • 有个网站发任务 用手机可以做汕头seo专家
  • 在小型网站建设小组网页设计教程课本
  • 商城网站开发价格北京改网站
  • 网站开发企业开发网络推广好的公司
  • 做房产信息互联网网站需要什么资质大学网站建设论文
  • 做网站用什么域名好注册广告公司名字
  • 网站建设 可以吗广告设计公司需要什么资质
  • 怎么样模仿网站学校网络营销推广方案
  • 自贸区网站建设南磨房网站建设公司
  • 网站没有被收录原因如何将音乐上传到wordpress
  • 沙井网站建设凡科建站免费版可以做什么