说明

在上一个文章里说了,用了阿里巴巴的easyexcle会导致项目build后的jar包体积增大20MB左右,所以想了个曲线救国的方式

其中的\t是制表符,即tab键,\n是回车

你可以自己试着这样写个txt文件,然后改后缀为xlsx,用WPS和OFFICE也是可以打开的

只不过没有花里胡哨的格式而已,不过,无伤大雅

工具类

/**
* 导出卡密为XLSX
* @param request
* @param response
* @param fileName
* @param list
*/
public static void exportCard2Xls(HttpServletRequest request, HttpServletResponse response, String fileName, List<Card> list) {
request.getSession();
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
try {
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8") + ".xlsx");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
//如果用这种方式导出,WPS或者office打开文件时会检测到是SYLK,即此文件是一个文本文件
//这样没啥问题,但是如果第一个字符是"ID",就会有弹窗警告提示,如果用小写的"id"或者其他字符就不会再有弹窗提示
String ret = "id\t卡密\t点数\t秒数\t生成时间\t使用时间\t使用人账号\t卡密状态\t所属软件";
for (Card card : list) {
ret = ret + "\n" + card.getId() + "\t" + card.getCkey() + "\t" + card.getPoint() + "\t" + card.getSeconds() + "\t" +MyUtils.dateToStr(card.getAddTimeName())+ "\t" +MyUtils.dateToStr(card.getLetTimeName()) + "\t" + card.getLetUser() + "\t" + card.getStatusName() + "\t" + card.getFromSoftName();
}
OutputStream outputStream = null;
try {
outputStream = response.getOutputStream();
outputStream.write(ret.getBytes(StandardCharsets.UTF_8));
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
return;
}

java springboot api接口导出xlsx(不使用easyexcle)的更多相关文章

  1. 没想到吧,Java开发 API接口可以不用写 Controller了

    本文案例收录在 https://github.com/chengxy-nds/Springboot-Notebook 大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便 ...

  2. java web api接口调用

    Web Services 被W3C进行了标准化定义. Web Services 发布到网上,可以公布到某个全局注册表,自动提供服务URL,服务描述.接口调用要求.参数说明以及返回值说明.比如中国气象局 ...

  3. java 调用 api接口

    /* * Copyright 2018 textile.com All right reserved. This software is the * confidential and propriet ...

  4. springBoot api接口

    application/json 请求接口 @RequestMapping(value = "/getBaseData", method = RequestMethod.POST, ...

  5. SpringBoot RestFul风格API接口开发

    本文介绍在使用springBoot如何进行Restful Api接口的开发及相关注解已经参数传递如何处理. 一.概念: REST全称是Representational State Transfer,中 ...

  6. SpringBoot实战(二)Restful风格API接口

    在上一篇SpringBoot实战(一)HelloWorld的基础上,编写一个Restful风格的API接口: 1.根据MVC原则,创建一个简单的目录结构,包括controller和entity,分别创 ...

  7. java springboot调用第三方接口 借助hutoool工具类 爬坑

    楼主是个后端小白一枚,之前没接触过后端,只学了java基本语法,还是在学校老师教的,学的很浅,什么ssh.ssm框架都没有学,最近在自学spring boot,看书学也看不是很懂,就在b站上看教学视频 ...

  8. SpringBoot + Swagger2 自动生成API接口文档

    spring-boot作为当前最为流行的Java web开发脚手架,相信越来越多的开发者会使用其来构建企业级的RESTFul API接口.这些接口不但会服务于传统的web端(b/s),也会服务于移动端 ...

  9. SpringBoot接口 - API接口有哪些不安全的因素?如何对接口进行签名?

    在以SpringBoot开发后台API接口时,会存在哪些接口不安全的因素呢?通常如何去解决的呢?本文主要介绍API接口有不安全的因素以及常见的保证接口安全的方式,重点实践如何对接口进行签名.@pdai ...

  10. 使用Swagger和OpenAPI 3规范定义API接口并集成到SpringBoot

    1. OpenAPI 3 规范介绍及属性定义 参考官方定义:https://swagger.io/specification/ 2. 使用OpenAPI 3规范定义API接口 官方样例参考:https ...

随机推荐

  1. python以及java环境搭建+解决不同版本环境共存问题

    1.搭建python环境 1.安装python3.9.7,选择自定义安装.将文件添加至环境路径,然后选择下一步. 2.默认.然后选择下一步. 3.选择适用于所有使用者,选择自己想要存放的路径,然后选择 ...

  2. linux安装python centos

    下载安装包 可以到官网 ftp 地址,复制指定 python 版本源码安装包下载链接 https://www.python.org/ftp/python/ 或者到官网 downloads, 复制指定 ...

  3. go generate

    介绍 go generate 命令是go 1.4版本里面新添加的一个命令,当运行 go generate 时,它将扫描与当前包相关的源代码文件,找出所有包含 //go:generate 的特殊注释,提 ...

  4. Golang 入门 : 变量声明

    变量声明 在Go中,变量是包含值的一块存储.可以使用变量声明为变量命名.只需使用var关键字,后跟所需的名称以及变量将保存的值的类型. 一旦你声明了一个变量,就可以用=为它分配该类型的任何值: qua ...

  5. 模型蒸馏(Distillation)案例--从DeepSeek-R1-1.5B 到 Qwen-2.5-1.5B 的模型蒸馏

    DeepSeek-R1-1.5B 到 Qwen-2.5-1.5B 的模型蒸馏(Distillation) 本文重点进行DeepSeek-R1-1.5B 到 Qwen-2.5-1.5B 的模型蒸馏(Di ...

  6. PX4 仿真环境开发整理

    博客地址:https://www.cnblogs.com/zylyehuo/ (一)PX4 仿真开发 搭建仿真环境 概念介绍及环境建议 MAVROS安装(适用于ROS1.ROS2) Ubuntu安装Q ...

  7. K8S基本概念和组件

    特点 便携性 无论公有云.私有云.混合云还是多云架构都全面支持 可扩展 模块化.可插拔.可挂载.可组合,支持各种形式的扩展 自修复 自保持应用状态.自重启.自复制.自缩放,声明式语法 组件 etcd ...

  8. MySQL-事务相关知识

    事务ACID的理解 引入事务的主要目的: 保证数据库从一个一致性状态切换为另一种一致性状态 所有修改要么都保存,要么都不保存 A 原子性 原子性关注单个事务的整体性,需要保证事务中的全部操作是一个单元 ...

  9. 【Docker】DockerFile解析

    DockerFile解析 中文官网 英文官网 是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本. 构建三步骤 注意:Dockerfile可以构建出镜像, ...

  10. AQS的release(int)方法底层源码

    一.定义 release(int) 是 AQS(AbstractQueuedSynchronizer)中的一个核心方法,用于在独占模式下释放同步状态.如果释放成功,则会唤醒等待队列中的后继节点,使其有 ...