This commit is contained in:
Looly 2020-11-04 01:24:17 +08:00
parent a54ce406b7
commit 394d05f9d2
4 changed files with 18 additions and 9 deletions

View File

@ -11,6 +11,7 @@
### Bug修复 ### Bug修复
* 【core 】 修复DateUtil.current使用System.nanoTime的问题issue#1198@Github * 【core 】 修复DateUtil.current使用System.nanoTime的问题issue#1198@Github
* 【core 】 修复Excel03SaxReader判断日期出错问题issue#I23M9H@Gitee
------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------

View File

@ -648,10 +648,6 @@ public class DateTime extends Date {
return new Date(this.getTime()); return new Date(this.getTime());
} }
public Date writeReplace(){
return toJdkDate();
}
/** /**
* 转为{@link Timestamp} * 转为{@link Timestamp}
* *

View File

@ -1,6 +1,5 @@
package cn.hutool.poi.excel.sax; package cn.hutool.poi.excel.sax;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.IoUtil; import cn.hutool.core.io.IoUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
@ -306,11 +305,9 @@ public class Excel03SaxReader implements HSSFListener, ExcelSaxReader<Excel03Sax
break; break;
case NumberRecord.sid: // 数字类型 case NumberRecord.sid: // 数字类型
final NumberRecord numrec = (NumberRecord) record; final NumberRecord numrec = (NumberRecord) record;
final String formatString = formatListener.getFormatString(numrec); if(ExcelSaxUtil.isDateFormat(numrec, formatListener)){
if(false == StrUtil.contains(formatString, '%') &&
false == "General".equalsIgnoreCase(formatString)){
// 可能为日期格式 // 可能为日期格式
value = DateUtil.date(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(numrec.getValue())); value = ExcelSaxUtil.getDateValue(numrec.getValue());
} else { } else {
final double doubleValue = numrec.getValue(); final double doubleValue = numrec.getValue();
final long longPart = (long) doubleValue; final long longPart = (long) doubleValue;

View File

@ -7,6 +7,8 @@ import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.poi.excel.sax.handler.RowHandler; import cn.hutool.poi.excel.sax.handler.RowHandler;
import cn.hutool.poi.exceptions.POIException; import cn.hutool.poi.exceptions.POIException;
import org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener;
import org.apache.poi.hssf.record.NumberRecord;
import org.apache.poi.ooxml.util.SAXHelper; import org.apache.poi.ooxml.util.SAXHelper;
import org.apache.poi.ss.usermodel.DataFormatter; import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.xssf.model.SharedStringsTable; import org.apache.poi.xssf.model.SharedStringsTable;
@ -171,6 +173,19 @@ public class ExcelSaxUtil {
} }
} }
/**
* 判断数字Record中是否为日期格式
* @param numrec 单元格记录
* @param formatListener {@link FormatTrackingHSSFListener}
* @return 是否为日期格式
* @since 5.4.8
*/
public static boolean isDateFormat(NumberRecord numrec, FormatTrackingHSSFListener formatListener){
final int formatIndex = formatListener.getFormatIndex(numrec);
final String formatString = formatListener.getFormatString(numrec);
return org.apache.poi.ss.usermodel.DateUtil.isADateFormat(formatIndex, formatString);
}
/** /**
* 获取日期 * 获取日期
* *