easyExcel模板导出,流的形式

这是一个easyexcel模板导出:https://gitee.com/xiao-hao123/easyexcel-demo.git

下面这个使用的时候注意模板要用 xls,也可以用xlsx,如果有问题改成xls,仅仅针对模板格式


 <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>easyexcel</artifactId>
            <version>2.1.1</version>
        </dependency>



import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.handler.WriteHandler;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.fill.FillConfig;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Service;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * Created on 2022/12/30.
 *
 * @author lichuanming
 */

@Slf4j
@Service
public class EasyExcelService {


     public static final String SUFFIX_2007 = ".xlsx";


    private static final String CONTENT_DISPOSITION = "Content-disposition";
    private static final String ATTACHMENT_FILENAME = "attachment;filename*=utf-8''";
    private static final String COM_MSG = "导出文件异常——》";


    /**
     * exce导出,异常时会导出异常文件
     *
     * @param response
     * @param datas        数据
     * @param classz       实体类
     * @param excelName    excel名称
     * @param writeHandler 自定义拦截器
     * @param <T>
     */
    public <T> void writeWebErrorByTemplate(HttpServletResponse response, List<T> datas, Class<T> classz, String excelName,
                                            WriteHandler writeHandler, String templateName, String title, String title2, String date) {

        if (StringUtils.endsWith(excelName, SUFFIX_2007)) {
            excelName = excelName.replace(SUFFIX_2007, "");
        }

        // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
        try {
            OutputStream outputStream = response.getOutputStream();
            // 字符串替换 符号‘\’
            String fileName = URLEncoder.encode(excelName, StandardCharsets.UTF_8).replaceAll("\\+", "%20");
            response.setHeader(CONTENT_DISPOSITION, ATTACHMENT_FILENAME + fileName + SUFFIX_2007);

            ClassPathResource classPathResource = new ClassPathResource("/template/bywsReportForm.xls");
            String templatePath = classPathResource.getFile().getPath();


            ExcelWriter excelWriter = EasyExcel.write(outputStream).withTemplate(templatePath).build();
            WriteSheet writeSheet = EasyExcel.writerSheet().build();
            FillConfig fillConfig = FillConfig.builder().forceNewRow(Boolean.TRUE).build();
            excelWriter.fill(datas, fillConfig, writeSheet);
            Map<String, Object> map = new HashMap<>();
            map.put("title", title != null ? title : null);
            map.put("title2", title2 != null ? title2 : null);
            map.put("date", date != null ? date : null);
            excelWriter.fill(map, writeSheet);
            excelWriter.finish();

        } catch (IOException e) {
            // 导出异常文件
            log.error(COM_MSG, e);
        }
    }


}

posted @ 2022-12-30 17:13  小傻孩丶儿  阅读(963)  评论(0编辑  收藏  举报