|
@@ -117,7 +117,6 @@ public class ExcelUtils {
|
|
|
* 获取每个对象的数据
|
|
* 获取每个对象的数据
|
|
|
*/
|
|
*/
|
|
|
private static <T> T getBean(Class<T> c, JSONObject obj, Map<Integer, String> uniqueMap) throws Exception {
|
|
private static <T> T getBean(Class<T> c, JSONObject obj, Map<Integer, String> uniqueMap) throws Exception {
|
|
|
- log.info("原始obj======"+obj);
|
|
|
|
|
T t = c.newInstance();
|
|
T t = c.newInstance();
|
|
|
Field[] fields = c.getDeclaredFields();
|
|
Field[] fields = c.getDeclaredFields();
|
|
|
List<String> errMsgList = new ArrayList<>();
|
|
List<String> errMsgList = new ArrayList<>();
|
|
@@ -308,30 +307,28 @@ public class ExcelUtils {
|
|
|
} else if ("LocalDate".equalsIgnoreCase(fieldClassName)) {
|
|
} else if ("LocalDate".equalsIgnoreCase(fieldClassName)) {
|
|
|
val = val.trim().replaceAll("\\u00A0", " ").trim();
|
|
val = val.trim().replaceAll("\\u00A0", " ").trim();
|
|
|
val = val.replace("/", "-");
|
|
val = val.replace("/", "-");
|
|
|
-
|
|
|
|
|
- DateTimeFormatter formatter = null;
|
|
|
|
|
- try {
|
|
|
|
|
- // 尝试解析 "yyyy-MM-dd HH:mm:ss" 格式的日期时间
|
|
|
|
|
- formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
- LocalDate date = LocalDate.parse(val, formatter);
|
|
|
|
|
- field.set(t, date);
|
|
|
|
|
- } catch (DateTimeParseException e) {
|
|
|
|
|
|
|
+ if (!val.contains("/") && !val.contains("-")) {
|
|
|
|
|
+ String stringDate = convertExcelNumberToDate(Long.parseLong(val));
|
|
|
try {
|
|
try {
|
|
|
- // 如果上面的解析失败,尝试解析 "yyyy-MM-dd" 格式的日期
|
|
|
|
|
- formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
|
- LocalDate date = LocalDate.parse(val, formatter);
|
|
|
|
|
- field.set(t, date);
|
|
|
|
|
- } catch (DateTimeParseException ex) {
|
|
|
|
|
- String stringDate = convertExcelNumberToDate(Long.parseLong(val));
|
|
|
|
|
- try {
|
|
|
|
|
- LocalDate date = LocalDate.parse(stringDate, formatter);
|
|
|
|
|
- field.set(t, date); // 直接将 Date 对象赋值给 field
|
|
|
|
|
- } catch (NumberFormatException | IllegalAccessException ex2) {
|
|
|
|
|
- throw new IllegalArgumentException("Invalid date format: " + val, ex2);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ LocalDate date = LocalDate.parse(stringDate);
|
|
|
|
|
+ field.set(t, date); // 直接将 Date 对象赋值给 field
|
|
|
|
|
+ } catch (IllegalAccessException e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 如果 val 包含了分隔符,你可能需要解析这个字符串
|
|
|
|
|
+ DateTimeFormatter sdf;
|
|
|
|
|
+ if (val.contains(" ")) {
|
|
|
|
|
+ sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
|
|
+ } else {
|
|
|
|
|
+ sdf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
|
|
+ }
|
|
|
|
|
+ try {
|
|
|
|
|
+ LocalDate parsedDate = LocalDate.parse(val,sdf);
|
|
|
|
|
+ field.set(t, parsedDate);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
}
|
|
}
|
|
|
- } catch (IllegalAccessException ex) {
|
|
|
|
|
- throw new RuntimeException(ex);
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
} catch (Exception e) {
|
|
} catch (Exception e) {
|
|
@@ -653,6 +650,12 @@ public static Map<String, PictureData> readPicture(MultipartFile mFile) throws I
|
|
|
|
|
|
|
|
private static Map<String, PictureData> getPictures(XSSFSheet sheet) {
|
|
private static Map<String, PictureData> getPictures(XSSFSheet sheet) {
|
|
|
Map<String, PictureData> picMap = new HashMap<>();
|
|
Map<String, PictureData> picMap = new HashMap<>();
|
|
|
|
|
+ // 获取绘图父级
|
|
|
|
|
+ Drawing<?> drawing = sheet.getDrawingPatriarch();
|
|
|
|
|
+ // 检查绘图父级是否为 null
|
|
|
|
|
+ if (drawing == null) {
|
|
|
|
|
+ return picMap; // 如果没有绘图父级,直接返回空的图片映射
|
|
|
|
|
+ }
|
|
|
List<XSSFShape> list = sheet.getDrawingPatriarch().getShapes();
|
|
List<XSSFShape> list = sheet.getDrawingPatriarch().getShapes();
|
|
|
|
|
|
|
|
if (CollectionUtils.isEmpty(list)) {
|
|
if (CollectionUtils.isEmpty(list)) {
|