esayExcel导出

使用esayexcel导出excel,怎么在某个单元格中设置对角线

使用EasyExcel导出Excel时,可以通过设置CellStyle来设置单元格的样式,包括对角线。具体的代码可以参考以下示例:

// 创建Workbook对象
ExcelWriter writer = EasyExcel.write("output.xlsx").build();

// 创建Sheet对象
Sheet sheet = new Sheet(1, 0);

// 创建样式对象
WriteCellStyle style = new WriteCellStyle();
WriteFont font = new WriteFont();
font.setBold(true);
style.setWriteFont(font);
style.setFillForegroundColor(IndexedColors.WHITE.getIndex());
style.setFillPatternType(FillPatternType.SOLID_FOREGROUND);

// 设置对角线
style.setDiagonalDown(true);
style.setDiagonalUp(true);

// 设置某个单元格的样式
CellData cellData = new CellData();
cellData.setCellStyle(style);
cellData.setStringValue("测试");

// 写入数据并关闭流
writer.write1(Collections.singletonList(cellData), sheet);
writer.finish();

以上代码中,通过设置WriteCellStyle对象的setDiagonalDown()和setDiagonalUp()方法来设置对角线。同时可以通过WriteCellStyle的其他方法来设置单元格的其他样式,例如字体、背景颜色等。最后将CellData对象添加到ExcelWriter中即可。

  • 给你找了一篇非常好的博客,你可以看看是否有帮助,链接:最简单的EsayExcel导入导出工具类
  • 除此之外, 这篇博客: 最简单的EsayExcel导入导出工具类中的 EsayExcel导入导出工具类 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 今天收到一个新需求,就是将我们的整个系统的导入导出封装成公共方法,避免重复代码。俗称造轮子,开始在网上 
    也找了很多博客参考,发现大都是以前,很多方法已经被弃用了,所以决定自己重新写一个,工作中如果遇到了导入
    导出,拿来即用。
    

    1、首先引入EasyExcel工具包

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

    ExcelUtil2工具类

    package cn.xdd.common.utils;
    
    import com.alibaba.excel.EasyExcel;
    import com.alibaba.excel.ExcelWriter;
    import com.alibaba.excel.write.metadata.WriteSheet;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.UnsupportedEncodingException;
    import java.net.URLEncoder;
    import java.util.List;
    
    /**
     * @author caogongde
     * @date 2020/8/13 10:57
     */
    public class ExcelUtil2 {
    
        /**
         * 单个sheet 导出
         * @param response
         * @param fileName 文件名
         * @param sheetName sheet名
         * @param clazz
         * @param data 导出数据
         * @throws IOException
         */
        public static void exportExcel(HttpServletResponse response,
                                       String fileName,
                                       String sheetName,
                                       Class<?> clazz,
                                       List<?> data) throws IOException {
            // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
            try {
                fileName = URLEncoder.encode(fileName, "UTF-8");
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
            response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
            EasyExcel.write(response.getOutputStream(), clazz).sheet("模板").doWrite(data);
        }
    
        public static void exportExcelMoreSheets(HttpServletResponse response,
                                                 String fileName,
                                                 Class<?> clazz,
                                                 List<?> list,List<String> sheetNames){
            ExcelWriter excelWriter = null;
            response.setContentType("application/vnd.ms-excel");
            response.setCharacterEncoding("utf-8");
            try {
                excelWriter = EasyExcel.write(response.getOutputStream()).build();
                fileName = fileName+System.currentTimeMillis() + ".xlsx";
                response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
                for (int i = 0; i < list.size(); i++) {
                    WriteSheet writeSheet = EasyExcel.writerSheet(i, sheetNames.get(i)).head(clazz).build();
                    List<Object> Object  = (List<java.lang.Object>) list.get(i);
                    excelWriter.write((List) list.get(i),writeSheet);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (excelWriter != null) {
                    excelWriter.finish();
                }
            }
        }
    }
    
    

    导出工具类 DataEasyExcelListener

    package cn.xdd.common.utils;
    
    /**
     * @author caogongde
     * @date 2020/8/13 15:11
     */
    
    import com.alibaba.excel.context.AnalysisContext;
    import com.alibaba.excel.event.AnalysisEventListener;
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.context.annotation.Scope;
    import org.springframework.stereotype.Component;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 数据监听器
     *
     * @author Administrator
     * @param <T>
     */
    @Slf4j
    @Component
    @Scope("prototype")
    public class DataEasyExcelListener<T> extends AnalysisEventListener<T> {
        private List<T> list = new ArrayList<>();
    
        @Override
        public void invoke(T data, AnalysisContext context) {
            log.info("解析到一条数据:{}", data);
            list.add(data);
        }
    
        @Override
        public void doAfterAllAnalysed(AnalysisContext context) {
            log.info("所有数据解析完成!");
        }
    
        public List<T> getData() {
            return list;
        }
    
    }
    

    测试代码:

    package cn.xdd.web;
    
    import com.alibaba.excel.EasyExcel;
    import com.alibaba.excel.annotation.ExcelProperty;
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.multipart.MultipartFile;
    
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collections;
    import java.util.List;
    
    /**
     * @author caogongde
     * @date 2020/8/13 13:14
     */
    @RestController
    public class testController {
    
        @Autowired
        DataEasyExcelListener dataEasyExcelListener;
        @GetMapping("export")
        public void ExportExcel( HttpServletResponse response) throws IOException {
            User zhangsan1 = new User(1, "zhangsan1");
            User zhangsan2 = new User(1, "zhangsan2");
            User zhangsan3 = new User(1, "zhangsan3");
            User zhangsan4 = new User(1, "zhangsan4");
            User zhangsan5 = new User(2, "zhangsan1");
            User zhangsan6 = new User(2, "zhangsan2");
            User zhangsan7 = new User(2, "zhangsan3");
            User zhangsan8 = new User(2, "zhangsan4");
            List<User> list = new ArrayList<>();
            list.add(zhangsan1);
            list.add(zhangsan2);
            list.add(zhangsan3);
            list.add(zhangsan4);
            List<User> list2 = new ArrayList<>();
            list2.add(zhangsan5);
            list2.add(zhangsan6);
            list2.add(zhangsan7);
            list2.add(zhangsan8);
            List<User> users = Arrays.asList(zhangsan1, zhangsan2, zhangsan3, zhangsan4);
            List<List<User>> lastList = new ArrayList<>();
            lastList.add(list);
            lastList.add(list2);
            List<String> strings = Arrays.asList("sheet1", "sheet2");
            ExcelUtil2.exportExcelMoreSheets(response,"sheets",User.class, lastList,strings);
            //ExcelUtil2.exportExcel(response,"ces","cse",User.class,list);
        }
        @GetMapping("import")
        public void importExcel(@RequestParam("file") MultipartFile file) throws IOException {
    
            EasyExcel.read(file.getInputStream(),User.class,dataEasyExcelListener).sheet(1).doRead();
            List<User> data = dataEasyExcelListener.getData();
            data.stream().forEach(System.out::println);
        }
    }
    
    

    如有不足之处,请大家多多指教。

excel都用对角线了,可以考虑下通过模板自定义导出