EasyExcel的使用的心得体会

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.EasyExcelFactory;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.metadata.Font;
import com.alibaba.excel.metadata.TableStyle;
import com.alibaba.excel.write.builder.ExcelWriterBuilder;
import com.alibaba.excel.write.metadata.WriteSheet;
import com.alibaba.excel.write.metadata.WriteTable;
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
import com.alibaba.excel.write.metadata.style.WriteFont;

import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
import com.alibaba.excel.write.style.column.SimpleColumnWidthStyleStrategy;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.assertj.core.util.Lists;
import org.junit.Test;

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

public class ExcelImport {

@Test
public void test() throws IOException {
    // 头的策略
    WriteCellStyle headWriteCellStyle = new WriteCellStyle();
    // 背景设置为灰色
    headWriteCellStyle.setFillForegroundColor(IndexedColors.GREY_25_PERCENT.getIndex());
    //表头居中
    headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
    WriteFont headWriteFont = new WriteFont();
    headWriteFont.setFontHeightInPoints((short)12);
    headWriteFont.setFontName("Arial");
    headWriteCellStyle.setWriteFont(headWriteFont);
    // 内容的策略
    WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
    //内容居中
    contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
    WriteFont contentWriteFont = new WriteFont();
    // 字体大小
    contentWriteFont.setFontHeightInPoints((short)10);
    contentWriteFont.setFontName("Arial");
    contentWriteCellStyle.setWriteFont(contentWriteFont);
    // 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
    HorizontalCellStyleStrategy horizontalCellStyleStrategy =
            new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);

    // 文件输出位置
    OutputStream out = new FileOutputStream("d://测试导出123.xlsx");
    ExcelWriter writer = EasyExcelFactory
            .write(out)
            .registerWriteHandler(horizontalCellStyleStrategy)
            .registerWriteHandler(new SimpleColumnWidthStyleStrategy(20))
            .build();
    for (int i=0;i<10;i++){
            // 每次都要创建writeSheet 这里注意必须指定sheetNo 而且sheetName必须不一样。这里注意DemoData.class 可以每次都变,我这里为了方便 所以用的同一个class
            // 实际上可以一直变
            WriteSheet writeSheet = EasyExcel.writerSheet(i, "模板" + i).head(head()).build();
            // 分页去数据库查询数据 这里可以去数据库查询每一页的数据
            writer.write(contentData(),writeSheet);
    }
   writer.finish();
    out.close();

}

/**
 * 生成动态表头,表头数据可以当做参数传入
 *
 * @return 表头list
 */
private static List<List<String>> head() {
    List<List<String>> headTitles = Lists.newArrayList();
    String warZone = "表头1", base = "表头2", personal = "表头3";
    headTitles.add(Lists.newArrayList(warZone));
    headTitles.add(Lists.newArrayList(base));
    headTitles.add(Lists.newArrayList(personal));
    return headTitles;
}


/**
 * 导入数据封装,需要导出数据进行传参
 *
 * @return 导出数据集合
 */
private static List<List<Object>> contentData() {
    List<List<Object>> contentList = Lists.newArrayList();
    // 这里一个List<Object>代表一行数据,需要映射成每行数据填充,横向填充(把实体数据的字段设置成一个List<Object>)
    contentList.add(Lists.newArrayList("测试", "测试A", "测试B"));
    contentList.add(Lists.newArrayList("测试", null, "测试B1"));
    return contentList;
}

}

EasyExcel是阿里巴巴开源的一个excel处理框架,使用简单且节省内存。它适合处理大数据量的Excel,不像之前的Excel解析框架将数据一次性加载到内存中,而是从磁盘上逐行读取数据并解析。它重写了poi对07版本Excel的解析,在处理大数据时不容易发生内存溢出。EasyExcel可以用于数据导入、数据导出以及数据传输等场景。在使用EasyExcel时,可以使用注解来自定义表头、选择excel中的顺序、忽略不需要导出的属性、进行日期格式转换,以及设置行宽等。官方文档提供了更详细的使用说明。 在实际应用中,可以使用@ExcelIgnore注解来标记不需要导出的多余属性,这样可以避免导出不需要的字段。另外,可以使用@DateTimeFormat注解来进行日期格式转换,使用@ColumnWidth注解来设置行宽。 总的来说,EasyExcel是一个方便易用的excel处理框架,可以帮助我们简化Excel的处理操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [EasyExcel使用教程](https://blog.csdn.net/tttalk/article/details/123379580)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值