MyExcel 3.0.0.RELEASE 正式版发布

 惟心
发布于 2019年10月16日
收藏 59

MyExcel,是一个集导入、导出、加密Excel等多项功能的Java工具包。

  • 导入:提供简便的API,读取Excel内容,并转化为List< Bean >。
  • 导出:可快速导出海量数据的简单列表,可生成高复杂度布局的Excel,复杂布局指的是包含多种不规则合并单元格、背景色、字体大小、斜体、下拉列表等,可自动划分Excel生成zip压缩包。

本次发布主要是针对RC版本发现的Bug进行修正,更新点如下:

  • 修复全局设定内容单元格样式无前缀情况下无效问题;
  • 修复读取科学计数数据错误问题;
  • 支持Excel数值型日期读取(如43927.678879879);
  • 修改Bigdecimal导出方式,默认为数值,格式化后依然为数值;
  • 支持导入时数据转换异常自定义处理机制;
  • 支持DefaultExcelBuilder、DefaultStreamExcelBuilder设置隔行样式;
  • 优化计算宽度,单元格将考虑跨列影响;
  • 其他性能优化;

其中隔行样式设定如下:

@ExcelTable(sheetName = "艺术生", style = {"even->background-color:green"})
public class ArtCrowd extends People {

    @ExcelColumn(order = 3, index = 3)
    private String paintingLevel;

    @ExcelColumn(order = 4, title = "是否会跳舞")
    private boolean dance;

    @ExcelColumn(order = 5, title = "考核时间")
    private LocalDateTime assessmentTime;

    @ExcelColumn(order = 6, defaultValue = "---")
    private String hobby;
}
style = {"even->background-color:green"},even代表偶数行,odd代表奇数行

除上述全局设置外,也可针对各列进行单独设置,效果如下:

具体,其他,请移步文档:https://github.com/liaochong/myexcel/wiki

欢迎各位使用以及提出建议!!!!

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:MyExcel 3.0.0.RELEASE 正式版发布
加载中

精彩评论

boleyn2012
boleyn2012
可以的:
workbook = DefaultExcelBuilder.of(CustomerInfo.class).autoWidthStrategy(AutoWidthStrategy.AUTO_WIDTH).build(customerList);
构建第二个sheet,of(xx.class, workbook)
workbook = DefaultExcelBuilder.of(IdentityCard.class, workbook).看下文档,里面还是蛮全的

最新评论(18

田文健
兹磁
刘俊林
刘俊林
动态导出、多sheet的示例没有找到,应该是支持的吧。哪位做过的的可以分享下吗
boleyn2012
boleyn2012
可以的:
workbook = DefaultExcelBuilder.of(CustomerInfo.class).autoWidthStrategy(AutoWidthStrategy.AUTO_WIDTH).build(customerList);
构建第二个sheet,of(xx.class, workbook)
workbook = DefaultExcelBuilder.of(IdentityCard.class, workbook).看下文档,里面还是蛮全的
惟心
小提示,从3.0.0开始,宽度策略方法修改为widthStrategy(WidthStrategy.AUTO_WIDTH)
刘俊林
刘俊林
我两个sheet都是list<map<string,object>>的形式动态导出。
但这个DefaultExcelBuilder.of的第一个参数是一个bean的class,可我是map的,没有使用bean,怎么处理?
感谢您抽时间回答我的问题。
boleyn2012
boleyn2012
考虑用模板渲染,表达式逻辑控制,更强大
惟心
请加入QQ群:135520370,该功能可增加支持
从未离开
从未离开
为什么我到处的xlsx是没有数据的

List<ArtCrowd> dataList = this.getDataList();
Workbook workbook = DefaultExcelBuilder.of(ArtCrowd.class).widthStrategy(WidthStrategy.AUTO_WIDTH).build(dataList);
AttachmentExportUtil.export(workbook, "艺术生信息", response);

private List<ArtCrowd> getDataList() {
List<ArtCrowd> dataList = new ArrayList<>(1000);
for (int i = 0; i < 1000; i++) {
ArtCrowd artCrowd = new ArtCrowd();
artCrowd.setName("李四");
artCrowd.setAge(18);
artCrowd.setGender("Woman");
artCrowd.setPaintingLevel("一级证书");
artCrowd.setDance(true);
artCrowd.setAssessmentTime(LocalDateTime.now());
artCrowd.setHobby("钓鱼");
dataList.add(artCrowd);
}
return dataList;
}

@ExcelTable(sheetName = "艺术生")
public class ArtCrowd extends People {

@ExcelColumn(order = 0, title = "姓名")
private String name;

@ExcelColumn(order = 1, ti
惟心
这是示例,不太可能出现导出没有数据哦
从未离开
从未离开
我就是看着实例来的,但不知道是不是少了什么东西,导出的xlsx里木有数据😓
从未离开
从未离开
public void defaultBuild(HttpServletResponse response) throws Exception {
List<People> data = this.data(10);
Workbook workbook = DefaultExcelBuilder.of(People.class).build(data);
AttachmentExportUtil.export(workbook, "艺术生信息", response);
}
private List<People> data(int size) {
BigDecimal oddMoney = new BigDecimal(109898);
BigDecimal evenMoney = new BigDecimal(66666);
List<People> peoples = new LinkedList<>();
for (int i = 0; i < size; i++) {
People csvPeople = new People();
boolean odd = i % 2 == 0;
csvPeople.setName(odd ? "张三" : "李四");
csvPeople.setAge(odd ? 18 : 24);
csvPeople.setDance(odd ? true : false);
csvPeople.setMoney(odd ? oddMoney : evenMoney);
peoples.add(csvPeople);
}
return peoples;
}
惟心
回复 @从未离开 : 两点:
1.确保data里面有数据;
2.确保People中有@ExcelColumn注解
从未离开
从未离开
回复 @惟心 : @Data
@FieldDefaults(level = AccessLevel.PRIVATE)
@ExcelTable(sheetName = "人员信息")
public class People {
@ExcelColumn(title = "姓名", index = 0)
String name;

@ExcelColumn(title = "年龄", index = 1)
Integer age;

@ExcelColumn(title = "是否会跳舞", groups = People.class, index = 2)
boolean dance;

@ExcelColumn(title = "金钱", decimalFormat = "#,000.00", index = 3)
BigDecimal money;
}😭都有
惟心
回复 @从未离开 : 请到github 加下QQ 群,把对应文件发给我,我看下有什么问题
惟心
3.0.1.RELEASE支持动态多sheet导出,getInstance(workbook)
刘俊林
刘俊林
速度真快,疯狂点赞。
开源中国首席罗纳尔多
开源中国首席罗纳尔多
可以设置模板的吗?
惟心
可以,不过模板只能是html页面,不能是excel模板,这样做是为了较高的灵活性,具体请参见文档-模板导出部分
返回顶部
顶部