Git Product home page Git Product logo

myexcel's People

Contributors

chenxiaolei avatar dependabot[bot] avatar fondon avatar jeesun avatar kortov avatar ldfengl4j avatar liaochong avatar link2fun avatar mostcool avatar mouriya-emma avatar qingmings avatar rexxiang avatar wanderhero avatar xuqin1 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

myexcel's Issues

boolean类型数据 导入导出问题

如果类型是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容纳

支持公式导出

2.2.0版本提供,预计5.10前提供,非全部公式,具体请参见poi公式支持文档

海量数据导入 支持类似分页导入形式

海量数据导入,现在好像一下子会读到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

导出的时候报错:Broken pipe

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)

期望的结果
我希望最好能不报错

Describe the bug
A clear and concise description of what the bug is.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

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):

  • OS: [e.g. iOS]
  • Browser [e.g. chrome, safari]
  • Version [e.g. 22]

Smartphone (please complete the following information):

  • Device: [e.g. iPhone6]
  • OS: [e.g. iOS8.1]
  • Browser [e.g. stock browser, safari]
  • Version [e.g. 22]

Additional context
Add any other context about the problem here.

关于order和title的问题

DefaultExcelBuilder的order以及title最好能用注解来实现 , 自己手动输入order名称容易出错

导出文件时对应的类注解是否可以加上样式支持?

现在需要导出Excel文件,用的是默认的实现方式,可否在注解上加上样式支持?比如设置背景色或者字体颜色什么的。

当然最好是能动态根据值来设置样式,比如我有一个返回数据集合,希望能做到根据返回集合的值判断该列是否需要添加不一样的样式。

如何设定只从第几行开始读取数据?

现有的rowFilter写法不是很明白。而且根据文档当中的代码.sheet(0).rowFilter(row -> row.getRowNum() > 0) 没明白是什么意思。是否可以直接提供一个简单的可以设置的参数?

导入及导出通过自定义处理

目前是数据导入导出必须要求是 写一个
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环境下使用的版本,现在也同样提示版本错误。
请问使用遗留老版本的系统,现在还能使用老版本吗?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.