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

58 lines
2.0 KiB
Java
Raw Normal View History

2025-12-29 17:13:09 +08:00
package com.gunshi.project.ss.service;
2025-12-02 15:18:17 +08:00
import cn.hutool.poi.excel.ExcelUtil;
import cn.hutool.poi.excel.ExcelWriter;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
2025-12-29 17:13:09 +08:00
import com.gunshi.project.ss.mapper.StEvpoMapper;
import com.gunshi.project.ss.model.StEvpo;
2025-12-02 15:18:17 +08:00
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();
}
}
}