easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

无法读取日期格式

Open LeiYuBoGitHub opened this issue 1 year ago • 2 comments

` package com.soft.excel;

import java.util.Date;

/**

  • @author 野性的呼唤

  • @date 2023/12/19 18:24 */ public class ReadExcelModel {

    private String outTradeNo;

    private Integer deviceNo;

    private Date dateTime;

    public String getOutTradeNo() { return outTradeNo; }

    public void setOutTradeNo(String outTradeNo) { this.outTradeNo = outTradeNo; }

    public Integer getDeviceNo() { return deviceNo; }

    public void setDeviceNo(Integer deviceNo) { this.deviceNo = deviceNo; }

    public Date getDateTime() { return dateTime; }

    public void setDateTime(Date dateTime) { this.dateTime = dateTime; } } package com.soft.excel;

import com.alibaba.excel.context.AnalysisContext; import com.alibaba.excel.read.listener.ReadListener; import com.alibaba.excel.util.ListUtils; import java.util.List;

/**

  • @author 野性的呼唤

  • @date 2023/12/19 17:46 */ public class ReadExcelListener implements ReadListener<ReadExcelModel> {

    private static final int BATCH_COUNT = 100;

    private List<ReadExcelModel> CACHE_LIST = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT);

    @Override public void invoke(ReadExcelModel item, AnalysisContext analysisContext) { System.out.println("解析到一条数据:" + item.getOutTradeNo() + "/" + item.getDeviceNo()); CACHE_LIST.add(item); if (CACHE_LIST.size() >= BATCH_COUNT) { System.out.println("准备存储"); // 存储完成清理 list CACHE_LIST = ListUtils.newArrayListWithExpectedSize(BATCH_COUNT); } }

    @Override public void doAfterAllAnalysed(AnalysisContext analysisContext) { System.out.println("最终结束......"); } }

package com.soft.excel;

import com.alibaba.excel.EasyExcel;

import java.io.File;

/**

  • @author 野性的呼唤

  • @date 2023/12/20 13:06 */ public class Main {

    public static void main(String[] args) { EasyExcel.read(new File("C:\Users\Soft\Desktop\A4.xlsx"), ReadExcelModel.class, new ReadExcelListener()).doReadAll(); } }

`

复现过程

新建excel 在第一行写上标题 第二行写上内容 分别为 字符格式 数字 和日期 会出现解析错误

Exception in thread "main" com.alibaba.excel.exception.ExcelAnalysisException: java.lang.NoSuchMethodError: 'java.time.LocalDateTime org.apache.poi.ss.usermodel.DateUtil.getLocalDateTime(double, boolean, boolean)' at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:135) at com.alibaba.excel.ExcelReader.readAll(ExcelReader.java:47) at com.alibaba.excel.read.builder.ExcelReaderBuilder.doReadAll(ExcelReaderBuilder.java:219) at com.soft.excel.Main.main(Main.java:14) Caused by: java.lang.NoSuchMethodError: 'java.time.LocalDateTime org.apache.poi.ss.usermodel.DateUtil.getLocalDateTime(double, boolean, boolean)' at com.alibaba.excel.util.DateUtils.getLocalDateTime(DateUtils.java:326) at com.alibaba.excel.util.DateUtils.getJavaDate(DateUtils.java:308) at com.alibaba.excel.converters.date.DateNumberConverter.convertToJavaData(DateNumberConverter.java:37) at com.alibaba.excel.converters.date.DateNumberConverter.convertToJavaData(DateNumberConverter.java:21) at com.alibaba.excel.converters.Converter.convertToJavaData(Converter.java:57) at com.alibaba.excel.util.ConverterUtils.doConvertToJavaObject(ConverterUtils.java:181) at com.alibaba.excel.util.ConverterUtils.convertToJavaObject(ConverterUtils.java:121) at com.alibaba.excel.util.ConverterUtils.convertToJavaObject(ConverterUtils.java:87) at com.alibaba.excel.read.listener.ModelBuildEventListener.buildUserModel(ModelBuildEventListener.java:150) at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:42) at com.alibaba.excel.read.listener.ModelBuildEventListener.invoke(ModelBuildEventListener.java:35) at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.dealData(DefaultAnalysisEventProcessor.java:104) at com.alibaba.excel.read.processor.DefaultAnalysisEventProcessor.endRow(DefaultAnalysisEventProcessor.java:51) at com.alibaba.excel.analysis.v07.handlers.RowTagHandler.endElement(RowTagHandler.java:66) at com.alibaba.excel.analysis.v07.handlers.sax.XlsxRowHandler.endElement(XlsxRowHandler.java:99) at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:618) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1728) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2899) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889) at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825) at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224) at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637) at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.parseXmlSource(XlsxSaxAnalyser.java:239) at com.alibaba.excel.analysis.v07.XlsxSaxAnalyser.execute(XlsxSaxAnalyser.java:260) at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:124) ... 3 more

环境

系统:windows JAVA:21 easy-excel: 3.3.2

LeiYuBoGitHub avatar Dec 20 '23 05:12 LeiYuBoGitHub

3.1.1版本出现这个问题,目前发现是poi的包版本依赖有问题,需要参数官方的依赖。

shmilyhcl avatar Jan 11 '24 02:01 shmilyhcl

3.3.3 也有这问题

big-fairy avatar Mar 03 '24 10:03 big-fairy