liaochong / myexcel Goto Github PK
View Code? Open in Web Editor NEWMyExcel, a new way to operate excel!
Home Page: https://github.com/liaochong/myexcel/wiki
License: Apache License 2.0
MyExcel, a new way to operate excel!
Home Page: https://github.com/liaochong/myexcel/wiki
License: Apache License 2.0
WorkbookType设置成xls时,不能添加自定义背景色
如果某个单元格内容太多,如何设置其自动换行并且换行后高度自适应?
如果类型是boolen的导出的数据是BOOLEAN/FALSE 大写
但再导入的时候会错误
[WARN ] 2019-05-05 11:27:24.111 org.nutz.mvc.impl.processor.FailProcessor.process(FailProcessor.java:28) - Error@/label/filter/upload :
java.lang.RuntimeException: java.lang.IllegalStateException: Cell content does not match the type of field to be injected,field is ignore
at com.github.liaochong.myexcel.core.converter.ReadConverterContext.convert(ReadConverterContext.java:54)
at com.github.liaochong.myexcel.core.DefaultExcelReader.lambda$instanceObj$2(DefaultExcelReader.java:294)
at java.util.HashMap.forEach(HashMap.java:1288)
at com.github.liaochong.myexcel.core.DefaultExcelReader.instanceObj(DefaultExcelReader.java:287)
at com.github.liaochong.myexcel.core.DefaultExcelReader.getDataFromFile(DefaultExcelReader.java:241)
at com.github.liaochong.myexcel.core.DefaultExcelReader.read(DefaultExcelReader.java:118)
at com.github.liaochong.myexcel.core.DefaultExcelReader.read(DefaultExcelReader.java:106)
at cc.mumshop.cloud.crawler.module.LabelFilterModule.upload(LabelFilterModule.java:72)
at cc.mumshop.cloud.crawler.module.LabelFilterModule$FM$upload$374d53dc152c140dc0a06fd0ead0f380.invoke(LabelFilterModule.java)
at org.nutz.mvc.impl.processor.MethodInvokeProcessor.process(MethodInvokeProcessor.java:31)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.AdaptorProcessor.process(AdaptorProcessor.java:38)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ActionFiltersProcessor.process(ActionFiltersProcessor.java:58)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.integration.shiro.NutShiroProcessor.process(NutShiroProcessor.java:126)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.ModuleProcessor.process(ModuleProcessor.java:123)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.EncodingProcessor.process(EncodingProcessor.java:27)
at org.nutz.mvc.impl.processor.AbstractProcessor.doNext(AbstractProcessor.java:44)
at org.nutz.mvc.impl.processor.UpdateRequestAttributesProcessor.process(UpdateRequestAttributesProcessor.java:15)
at org.nutz.mvc.impl.NutActionChain.doChain(NutActionChain.java:44)
at org.nutz.mvc.impl.ActionInvoker.invoke(ActionInvoker.java:67)
at org.nutz.mvc.ActionHandler.handle(ActionHandler.java:31)
at org.nutz.mvc.NutFilter.doFilter(NutFilter.java:202)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:124)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at org.nutz.mvc.WhaleFilter.doFilter(WhaleFilter.java:171)
at io.undertow.servlet.core.ManagedFilter.doFilter(ManagedFilter.java:61)
at io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:131)
at io.undertow.servlet.handlers.FilterHandler.handleRequest(FilterHandler.java:84)
at io.undertow.servlet.handlers.ServletChain$1.handleRequest(ServletChain.java:65)
at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:292)
at io.undertow.servlet.handlers.ServletInitialHandler.access$100(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:138)
at io.undertow.servlet.handlers.ServletInitialHandler$2.call(ServletInitialHandler.java:135)
at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:48)
at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:272)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:81)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:104)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:336)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:830)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Cell content does not match the type of field to be injected,field is ignore
at com.github.liaochong.myexcel.core.converter.BoolReadConverter.convert(BoolReadConverter.java:45)
at com.github.liaochong.myexcel.core.converter.ReadConverterContext.convert(ReadConverterContext.java:48)
... 60 more
超百万数据放在一个sheet上会丢失,需要另起一个sheet容纳
Additional context
如题,建议加个方法以html字符串做为参数
2.2.0版本提供,预计5.10前提供,非全部公式,具体请参见poi公式支持文档
Long类型的数据,导出后变成了科学计数法。再导入,导入失败,读不到数据。
indexs,区间导入为List属性
海量数据导入,现在好像一下子会读到list里边了,如果数据量太大会内存溢出;考虑类似生产消费形式的导入处理即每取一条数据就做相应的回调函数处理 和 类似分页形式导入每次导N条,处理完再导接下来N条
导入示例代码:
public class ArtCrowd {
// index代表列索引,从0开始
@ExcelColumn(index = 0)
private String name;
@ExcelColumn(index = 1)
private String age;
@ExcelColumn(index = 2,dateTimePattern="yyyy-MM-dd")
private Date birthday;
}
dateTimePattern参照注解方法应该为:dateFormatPattern
这个库可以直接在Android的应用使用吗,我看示例都是服务端的?
Bug描述
导出之后就报错,不过数据是导出了的,但是后台紧接这就报错了
Bug复现
按如下步骤复现(Steps to reproduce the behavior):
2019-06-18T07:15:13.709405182Z 2019-06-18 15:15:13,706 ERROR [http-nio-8604-exec-9] c.y.s.comm.common.GgExceptionHandler: org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Fail to save: an error occurs while saving the package : The part /docProps/core.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller@37f1f548
2019-06-18T07:15:13.709444370Z org.apache.poi.openxml4j.exceptions.OpenXML4JRuntimeException: Fail to save: an error occurs while saving the package : The part /docProps/core.xml failed to be saved in the stream with marshaller org.apache.poi.openxml4j.opc.internal.marshallers.ZipPackagePropertiesMarshaller@37f1f548
2019-06-18T07:15:13.709600815Z at org.apache.poi.openxml4j.opc.ZipPackage.saveImpl(ZipPackage.java:558)
2019-06-18T07:15:13.709628501Z at org.apache.poi.openxml4j.opc.OPCPackage.save(OPCPackage.java:1488)
2019-06-18T07:15:13.709641736Z at org.apache.poi.ooxml.POIXMLDocument.write(POIXMLDocument.java:242)
2019-06-18T07:15:13.709654764Z at com.github.liaochong.myexcel.utils.AttachmentExportUtil.export(AttachmentExportUtil.java:71)
2019-06-18T07:15:13.709667572Z at com.ymtx.sudoku.comm.excel.PriceAdjustGoodsExportCtrl.export(PriceAdjustGoodsExportCtrl.java:35)
2019-06-18T07:15:13.710441229Z at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2019-06-18T07:15:13.710459568Z at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
2019-06-18T07:15:13.710472853Z at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2019-06-18T07:15:13.710512326Z at java.lang.reflect.Method.invoke(Method.java:498)
2019-06-18T07:15:13.710527542Z at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
2019-06-18T07:15:13.710540568Z at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133)
2019-06-18T07:15:13.710553505Z at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
2019-06-18T07:15:13.710566842Z at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
2019-06-18T07:15:13.710580091Z at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
2019-06-18T07:15:13.710597786Z at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
2019-06-18T07:15:13.710612486Z at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
2019-06-18T07:15:13.710625366Z at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
2019-06-18T07:15:13.710637732Z at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
2019-06-18T07:15:13.710650590Z at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
2019-06-18T07:15:13.710663764Z at javax.servlet.http.HttpServlet.service(HttpServlet.java:635)
2019-06-18T07:15:13.710676412Z at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
2019-06-18T07:15:13.710688758Z at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
2019-06-18T07:15:13.710701223Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
2019-06-18T07:15:13.710714343Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.710726715Z at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
2019-06-18T07:15:13.710739019Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.710751432Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.710763684Z at xorg.springboot.cors.CorsFilter.doFilter(CorsFilter.java:57)
2019-06-18T07:15:13.710775667Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.710788011Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.710801283Z at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99)
2019-06-18T07:15:13.710977369Z at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2019-06-18T07:15:13.710996268Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.711009326Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.711022243Z at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:108)
2019-06-18T07:15:13.711034865Z at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2019-06-18T07:15:13.711050198Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.711063645Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.711076367Z at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81)
2019-06-18T07:15:13.711089189Z at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2019-06-18T07:15:13.711101739Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.711114481Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.711126935Z at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
2019-06-18T07:15:13.711139748Z at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
2019-06-18T07:15:13.711152192Z at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
2019-06-18T07:15:13.711165212Z at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
2019-06-18T07:15:13.711177602Z at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
2019-06-18T07:15:13.711190235Z at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
2019-06-18T07:15:13.711202677Z at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:478)
2019-06-18T07:15:13.711215321Z at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
2019-06-18T07:15:13.711227891Z at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
2019-06-18T07:15:13.711240476Z at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
2019-06-18T07:15:13.711252814Z at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
2019-06-18T07:15:13.711265401Z at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
2019-06-18T07:15:13.711277691Z at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
2019-06-18T07:15:13.711290284Z at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
2019-06-18T07:15:13.711341410Z at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459)
2019-06-18T07:15:13.711362581Z at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
2019-06-18T07:15:13.711378719Z at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
2019-06-18T07:15:13.711392303Z at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
2019-06-18T07:15:13.711404988Z at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
2019-06-18T07:15:13.711418695Z at java.lang.Thread.run(Thread.java:745)
期望的结果
我希望最好能不报错
html 上的内容
渲染后excel的内容
html源码(因为不支持上传html类型改为txt)
templatePref.txt
Describe the bug
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
A clear and concise description of what you expected to happen.
Screenshots
If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
Smartphone (please complete the following information):
Additional context
Add any other context about the problem here.
支持原生类型写入,不全部转换为String
总耗时
如题
能否给出一些示例?
移除common包
大量数据存储原结构为ArrayList,替换为LinkedList,降低对内存的要求
用户无需提供模板,使用默认模板
Bug复现
如果excel 中是这样的"2009/8/27",会报错
Unparseable date: "2009/8/27";
期望的结果
可不可以对其进行自动补零2009/08/27;
DefaultExcelBuilder的order以及title最好能用注解来实现 , 自己手动输入order名称容易出错
默认模板defaultExcelBuilder反射使用的方式局限了POJO的方法名称只能以get/is开头
现在需要导出Excel文件,用的是默认的实现方式,可否在注解上加上样式支持?比如设置背景色或者字体颜色什么的。
当然最好是能动态根据值来设置样式,比如我有一个返回数据集合,希望能做到根据返回集合的值判断该列是否需要添加不一样的样式。
现有的rowFilter写法不是很明白。而且根据文档当中的代码.sheet(0).rowFilter(row -> row.getRowNum() > 0)
没明白是什么意思。是否可以直接提供一个简单的可以设置的参数?
在大量数据的情况下,会产生大量SimpleDateFormatter创建销毁操作
问题1 RT
问题2 pojo中的private static final long serialVersionUID = 4883836472385315194L;
发现也被导出到表格中了?
请问这两个问题可以处理下么?
目前是数据导入导出必须要求是 写一个
public class ArtCrowd {
// index代表列索引,从0开始
@ExcelColumn(index = 0)
private String name;
@ExcelColumn(index = 1)
private String age;
@ExcelColumn(index = 2,dateFormatPattern="yyyy-MM-dd")
private Date birthday;
}
类似这样的类,是否可以 通过自定义一个数组来保存和注释的一样的数据格式,以达到自定义实
现导入的目的。
这样,所有的数据导入,可以在后台通过一个表来灵活配置,不用每次业务表变了,都需要重新
调整导入或者导出这块了
1、对金额的支持,比如加逗号等;
2、对BigDeciamal的支持,比如设置末尾保留几位;
3、能够固定表头,即下拉数据,表头依然在第一行。
支持海量数据多文件压缩导出
目前公司的环境还是在JDK7,但是发现html2excel不但已经改名,所有代码也都变成了jdk8,甚至我之前能够在JDK7环境下使用的版本,现在也同样提示版本错误。
请问使用遗留老版本的系统,现在还能使用老版本吗?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.