gunshi-project-ss/src/main/java/com/gunshi/project/ss/service/StEvpoService.java

58 lines
2.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

package com.gunshi.project.ss.service;
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.ss.mapper.StEvpoMapper;
import com.gunshi.project.ss.model.StEvpo;
import jakarta.servlet.http.HttpServletResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.io.IOException;
import java.net.URLEncoder;
import java.util.List;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class StEvpoService extends ServiceImpl<StEvpoMapper, StEvpo> {
public void export(HttpServletResponse response) {
List<StEvpo> list = this.lambdaQuery().orderByAsc(StEvpo::getMonth).list();
list.stream().forEach(o ->{
o.setEvaporation(o.getEvaporation().setScale(2));
});
// 通过工具类创建writer
ExcelWriter writer = ExcelUtil.getWriter();
// 自定义标题别名(只包含需要导出的字段)
writer.addHeaderAlias("month", "月份");
writer.addHeaderAlias("evaporation", "日蒸发量(万m³)");
// 只写出设置了别名的字段,默认写出所有字段
writer.setOnlyAlias(true);
// 一次性写出内容,使用默认样式
writer.write(list, true);
// 设置响应内容类型
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8");
try {
// 设置响应头信息
String fileName = URLEncoder.encode("蒸发量数据", "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName + ".xlsx");
// 将writer对象刷新到响应输出流中
writer.flush(response.getOutputStream(), true);
} catch (IOException e) {
e.printStackTrace();
} finally {
// 关闭writer释放内存
writer.close();
}
}
}