Browse Source

Merge f17b3c8928 into aae9c61ab6

pull/3368/merge
yuhaowin 5 months ago committed by GitHub
parent
commit
4524a22853
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      easyexcel-core/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java
  2. 52
      easyexcel-core/src/main/java/com/alibaba/excel/converters/localtime/LocalTimeStringConverter.java
  3. 52
      easyexcel-core/src/main/java/com/alibaba/excel/util/DateUtils.java
  4. 1
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterDataListener.java
  5. 1
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterDataTest.java
  6. 3
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterReadData.java
  7. 3
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterWriteData.java
  8. 9
      easyexcel-test/src/test/java/com/alibaba/easyexcel/test/util/TestUtil.java

5
easyexcel-core/src/main/java/com/alibaba/excel/converters/DefaultConverterLoader.java

@ -37,6 +37,7 @@ import com.alibaba.excel.converters.localdate.LocalDateStringConverter;
import com.alibaba.excel.converters.localdatetime.LocalDateTimeNumberConverter;
import com.alibaba.excel.converters.localdatetime.LocalDateTimeDateConverter;
import com.alibaba.excel.converters.localdatetime.LocalDateTimeStringConverter;
import com.alibaba.excel.converters.localtime.LocalTimeStringConverter;
import com.alibaba.excel.converters.longconverter.LongBooleanConverter;
import com.alibaba.excel.converters.longconverter.LongNumberConverter;
import com.alibaba.excel.converters.longconverter.LongStringConverter;
@ -91,6 +92,8 @@ public class DefaultConverterLoader {
putAllConverter(new LocalDateTimeNumberConverter());
putAllConverter(new LocalDateTimeStringConverter());
putAllConverter(new LocalTimeStringConverter());
putAllConverter(new DoubleBooleanConverter());
putAllConverter(new DoubleNumberConverter());
putAllConverter(new DoubleStringConverter());
@ -125,6 +128,7 @@ public class DefaultConverterLoader {
putWriteConverter(new ByteNumberConverter());
putWriteConverter(new DateDateConverter());
putWriteConverter(new LocalDateTimeDateConverter());
putWriteConverter(new LocalTimeStringConverter());
putWriteConverter(new LocalDateDateConverter());
putWriteConverter(new DoubleNumberConverter());
putWriteConverter(new FloatNumberConverter());
@ -146,6 +150,7 @@ public class DefaultConverterLoader {
putWriteStringConverter(new DateStringConverter());
putWriteStringConverter(new LocalDateStringConverter());
putWriteStringConverter(new LocalDateTimeStringConverter());
putWriteStringConverter(new LocalTimeStringConverter());
putWriteStringConverter(new DoubleStringConverter());
putWriteStringConverter(new FloatStringConverter());
putWriteStringConverter(new IntegerStringConverter());

52
easyexcel-core/src/main/java/com/alibaba/excel/converters/localtime/LocalTimeStringConverter.java

@ -0,0 +1,52 @@
package com.alibaba.excel.converters.localtime;
import com.alibaba.excel.converters.Converter;
import com.alibaba.excel.enums.CellDataTypeEnum;
import com.alibaba.excel.metadata.GlobalConfiguration;
import com.alibaba.excel.metadata.data.ReadCellData;
import com.alibaba.excel.metadata.data.WriteCellData;
import com.alibaba.excel.metadata.property.ExcelContentProperty;
import com.alibaba.excel.util.DateUtils;
import java.text.ParseException;
import java.time.LocalTime;
/**
* LocalTime and string converter
*
* @author yuhaowin
*/
public class LocalTimeStringConverter implements Converter<LocalTime> {
@Override
public Class<?> supportJavaTypeKey() {
return LocalTime.class;
}
@Override
public CellDataTypeEnum supportExcelTypeKey() {
return CellDataTypeEnum.STRING;
}
@Override
public LocalTime convertToJavaData(ReadCellData<?> cellData, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) throws ParseException {
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
return DateUtils.parseLocalTime(cellData.getStringValue(), null, globalConfiguration.getLocale());
} else {
return DateUtils.parseLocalTime(cellData.getStringValue(),
contentProperty.getDateTimeFormatProperty().getFormat(), globalConfiguration.getLocale());
}
}
@Override
public WriteCellData<?> convertToExcelData(LocalTime value, ExcelContentProperty contentProperty,
GlobalConfiguration globalConfiguration) {
if (contentProperty == null || contentProperty.getDateTimeFormatProperty() == null) {
return new WriteCellData<>(DateUtils.format(value, null, globalConfiguration.getLocale()));
} else {
return new WriteCellData<>(
DateUtils.format(value, contentProperty.getDateTimeFormatProperty().getFormat(),
globalConfiguration.getLocale()));
}
}
}

52
easyexcel-core/src/main/java/com/alibaba/excel/util/DateUtils.java

@ -78,6 +78,7 @@ public class DateUtils {
public static final String DATE_FORMAT_19 = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT_19_FORWARD_SLASH = "yyyy/MM/dd HH:mm:ss";
private static final String MINUS = "-";
private static final String DEFAULT_LOCAL_TIME_FORMAT = "HH:mm:ss";
public static String defaultDateFormat = DATE_FORMAT_19;
@ -147,6 +148,25 @@ public class DateUtils {
}
}
/**
* convert string to date
*
* @param dateString
* @param dateFormat
* @param local
* @return
*/
public static LocalTime parseLocalTime(String dateString, String dateFormat, Locale local) {
if (StringUtils.isEmpty(dateFormat)) {
dateFormat = DEFAULT_LOCAL_TIME_FORMAT;
}
if (local == null) {
return LocalTime.parse(dateString, DateTimeFormatter.ofPattern(dateFormat));
} else {
return LocalTime.parse(dateString, DateTimeFormatter.ofPattern(dateFormat, local));
}
}
/**
* convert string to date
*
@ -283,6 +303,38 @@ public class DateUtils {
return format(date, dateFormat, null);
}
/**
* Format date
*
* @param date
* @param dateFormat
* @return
*/
public static String format(LocalTime date, String dateFormat) {
return format(date, dateFormat, null);
}
/**
* Format date
*
* @param date
* @param dateFormat
* @return
*/
public static String format(LocalTime date, String dateFormat, Locale local) {
if (date == null) {
return null;
}
if (StringUtils.isEmpty(dateFormat)) {
dateFormat = DEFAULT_LOCAL_TIME_FORMAT;
}
if (local == null) {
return date.format(DateTimeFormatter.ofPattern(dateFormat));
} else {
return date.format(DateTimeFormatter.ofPattern(dateFormat, local));
}
}
/**
* Format date
*

1
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterDataListener.java

@ -31,6 +31,7 @@ public class ConverterDataListener extends AnalysisEventListener<ConverterReadDa
Assertions.assertEquals(list.size(), 1);
ConverterReadData data = list.get(0);
Assertions.assertEquals(TestUtil.TEST_DATE, data.getDate());
Assertions.assertEquals(TestUtil.TEST_LOCAL_TIME, data.getLocalTime());
Assertions.assertEquals(TestUtil.TEST_LOCAL_DATE, data.getLocalDate());
Assertions.assertEquals(TestUtil.TEST_LOCAL_DATE_TIME, data.getLocalDateTime());
Assertions.assertEquals(data.getBooleanData(), Boolean.TRUE);

1
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterDataTest.java

@ -113,6 +113,7 @@ public class ConverterDataTest {
List<ConverterWriteData> list = new ArrayList<ConverterWriteData>();
ConverterWriteData converterWriteData = new ConverterWriteData();
converterWriteData.setDate(TestUtil.TEST_DATE);
converterWriteData.setLocalTime(TestUtil.TEST_LOCAL_TIME);
converterWriteData.setLocalDate(TestUtil.TEST_LOCAL_DATE);
converterWriteData.setLocalDateTime(TestUtil.TEST_LOCAL_DATE_TIME);
converterWriteData.setBooleanData(Boolean.TRUE);

3
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterReadData.java

@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
@ -22,6 +23,8 @@ import lombok.Setter;
public class ConverterReadData {
@ExcelProperty("日期")
private Date date;
@ExcelProperty("本地时间")
private LocalTime localTime;
@ExcelProperty("本地日期")
private LocalDate localDate;
@ExcelProperty("本地日期时间")

3
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterWriteData.java

@ -4,6 +4,7 @@ import java.math.BigDecimal;
import java.math.BigInteger;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import com.alibaba.excel.annotation.ExcelProperty;
@ -24,6 +25,8 @@ public class ConverterWriteData {
private Date date;
@ExcelProperty("本地日期")
private LocalDate localDate;
@ExcelProperty("本地时间")
private LocalTime localTime;
@ExcelProperty("本地日期时间")
private LocalDateTime localDateTime;
@ExcelProperty("布尔")

9
easyexcel-test/src/test/java/com/alibaba/easyexcel/test/util/TestUtil.java

@ -1,14 +1,14 @@
package com.alibaba.easyexcel.test.util;
import com.alibaba.excel.util.DateUtils;
import lombok.extern.slf4j.Slf4j;
import java.text.ParseException;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.util.Date;
import com.alibaba.excel.util.DateUtils;
import lombok.extern.slf4j.Slf4j;
/**
* test util
*
@ -18,6 +18,7 @@ import lombok.extern.slf4j.Slf4j;
public class TestUtil {
public static final Date TEST_DATE;
public static final LocalTime TEST_LOCAL_TIME = LocalTime.of(12, 0, 0);
public static final LocalDate TEST_LOCAL_DATE = LocalDate.of(2020, 1, 1);
public static final LocalDateTime TEST_LOCAL_DATE_TIME = LocalDateTime.of(2020, 1, 1, 1, 1, 1);

Loading…
Cancel
Save