- 最近需要用Java处理Excel中的数据,并生成word和pdf格式的文档(其中word和pdf需要带背景图),所以在这里做下总结。
- 使用技术:FreeMarker + easyexcel + jacob
①FreeMarker大家应该会比较熟悉,一个模板引擎。
②easyexcel 是阿里巴巴开源,用于快速、简单避免OOM的java处理Excel工具。
②JACOB是一个JAVA-COM Bridge,允许您从Java调用COM Automation组件。它使用JNI对COM和Win32库进行本机调用。
- 使用easyexcel处理excel
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.BaseRowModel;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
* JavaBean与Excel之间的关系映射
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ERReport extends BaseRowModel {
@ExcelProperty(value = "省", index = 0)
private String province;
@ExcelProperty(value = "市", index = 1)
private String city;
@ExcelProperty(value = "学校", index = 2)
private String school;
@ExcelProperty(value = "班级", index = 3)
private String classs;
@ExcelProperty(value = "老师", index = 4
private String teacher;
}
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.BaseRowModel;
import com.google.common.collect.Lists;
/**
* 自定义Listener继承AnalysisEventListener,重写invoke方法,为了方便获取值,添加了一个getData的方法
*/
public class ExcelListener<T extends BaseRowModel> extends AnalysisEventListener<T> {
private final List<T> data = Lists.newArrayList();
@Override
public void invoke(T t, AnalysisContext analysisContext) {
data.add(t);
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
public List<T>