diff --git a/WebRoot/Excel/0405b3b5-896a-4502-91f3-8fbc71d55615.xlsx b/WebRoot/Excel/0405b3b5-896a-4502-91f3-8fbc71d55615.xlsx new file mode 100644 index 00000000..88071173 Binary files /dev/null and b/WebRoot/Excel/0405b3b5-896a-4502-91f3-8fbc71d55615.xlsx differ diff --git a/WebRoot/Excel/2e92764f-086e-48cd-89bd-535b8a1431f9.xlsx b/WebRoot/Excel/2e92764f-086e-48cd-89bd-535b8a1431f9.xlsx new file mode 100644 index 00000000..9961f94a Binary files /dev/null and b/WebRoot/Excel/2e92764f-086e-48cd-89bd-535b8a1431f9.xlsx differ diff --git a/WebRoot/Excel/37daa608-6b71-4eb3-a6ed-b00bbfc0d414.xlsx b/WebRoot/Excel/37daa608-6b71-4eb3-a6ed-b00bbfc0d414.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/37daa608-6b71-4eb3-a6ed-b00bbfc0d414.xlsx differ diff --git a/WebRoot/Excel/3bc29fcc-441c-48b7-a740-d260b0b93e8b.xlsx b/WebRoot/Excel/3bc29fcc-441c-48b7-a740-d260b0b93e8b.xlsx new file mode 100644 index 00000000..842c8497 Binary files /dev/null and b/WebRoot/Excel/3bc29fcc-441c-48b7-a740-d260b0b93e8b.xlsx differ diff --git a/WebRoot/Excel/5252d80e-3cdd-44aa-ba51-be95a3d8b710.xlsx b/WebRoot/Excel/5252d80e-3cdd-44aa-ba51-be95a3d8b710.xlsx new file mode 100644 index 00000000..29011e29 Binary files /dev/null and b/WebRoot/Excel/5252d80e-3cdd-44aa-ba51-be95a3d8b710.xlsx differ diff --git a/WebRoot/Excel/54bc1cc5-f8ee-40c9-a1eb-023907e4aef5.xlsx b/WebRoot/Excel/54bc1cc5-f8ee-40c9-a1eb-023907e4aef5.xlsx new file mode 100644 index 00000000..ce25b5b7 Binary files /dev/null and b/WebRoot/Excel/54bc1cc5-f8ee-40c9-a1eb-023907e4aef5.xlsx differ diff --git a/WebRoot/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx b/WebRoot/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx new file mode 100644 index 00000000..efbe71b6 Binary files /dev/null and b/WebRoot/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx differ diff --git a/WebRoot/Excel/6a40b337-93b5-4089-b8f3-24f326873bbb.xlsx b/WebRoot/Excel/6a40b337-93b5-4089-b8f3-24f326873bbb.xlsx new file mode 100644 index 00000000..6e119f01 Binary files /dev/null and b/WebRoot/Excel/6a40b337-93b5-4089-b8f3-24f326873bbb.xlsx differ diff --git a/WebRoot/Excel/6fc58d18-9b71-4066-9f89-c9df6948abad.xlsx b/WebRoot/Excel/6fc58d18-9b71-4066-9f89-c9df6948abad.xlsx new file mode 100644 index 00000000..17c3b9e9 Binary files /dev/null and b/WebRoot/Excel/6fc58d18-9b71-4066-9f89-c9df6948abad.xlsx differ diff --git a/WebRoot/Excel/7449b9d3-f287-4989-b0d2-3b0fc7f684ac.xlsx b/WebRoot/Excel/7449b9d3-f287-4989-b0d2-3b0fc7f684ac.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/7449b9d3-f287-4989-b0d2-3b0fc7f684ac.xlsx differ diff --git a/WebRoot/Excel/80cb71a5-7669-48f2-86b9-d059576f6b4f.xlsx b/WebRoot/Excel/80cb71a5-7669-48f2-86b9-d059576f6b4f.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/80cb71a5-7669-48f2-86b9-d059576f6b4f.xlsx differ diff --git a/WebRoot/Excel/82310b4c-e585-4f4e-ac21-189452ba3888.xlsx b/WebRoot/Excel/82310b4c-e585-4f4e-ac21-189452ba3888.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/82310b4c-e585-4f4e-ac21-189452ba3888.xlsx differ diff --git a/WebRoot/Excel/964e43bd-3a36-43ec-a345-c1bb6dbc695a.xlsx b/WebRoot/Excel/964e43bd-3a36-43ec-a345-c1bb6dbc695a.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/964e43bd-3a36-43ec-a345-c1bb6dbc695a.xlsx differ diff --git a/WebRoot/Excel/9e6e9dd3-9e35-4f46-8beb-6d088c80f838.xlsx b/WebRoot/Excel/9e6e9dd3-9e35-4f46-8beb-6d088c80f838.xlsx new file mode 100644 index 00000000..4884fe2f Binary files /dev/null and b/WebRoot/Excel/9e6e9dd3-9e35-4f46-8beb-6d088c80f838.xlsx differ diff --git a/WebRoot/Excel/a3d840b0-b934-448f-9a3b-bf8db8a7eecf.xlsx b/WebRoot/Excel/a3d840b0-b934-448f-9a3b-bf8db8a7eecf.xlsx new file mode 100644 index 00000000..c24172a7 Binary files /dev/null and b/WebRoot/Excel/a3d840b0-b934-448f-9a3b-bf8db8a7eecf.xlsx differ diff --git a/WebRoot/Excel/ab5772c6-7a10-41d9-a1a6-cda1e5eeaf8e.xlsx b/WebRoot/Excel/ab5772c6-7a10-41d9-a1a6-cda1e5eeaf8e.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/ab5772c6-7a10-41d9-a1a6-cda1e5eeaf8e.xlsx differ diff --git a/WebRoot/Excel/af53506e-d375-47c4-8c57-218cad78fa6e.xlsx b/WebRoot/Excel/af53506e-d375-47c4-8c57-218cad78fa6e.xlsx new file mode 100644 index 00000000..dd602253 Binary files /dev/null and b/WebRoot/Excel/af53506e-d375-47c4-8c57-218cad78fa6e.xlsx differ diff --git a/WebRoot/Excel/b3705cc5-dc05-4002-931d-58b4123fd670.xlsx b/WebRoot/Excel/b3705cc5-dc05-4002-931d-58b4123fd670.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/WebRoot/Excel/b3705cc5-dc05-4002-931d-58b4123fd670.xlsx differ diff --git a/WebRoot/Excel/c31ccd3e-4fa8-41b4-8d9e-9c528885d9fa.xlsx b/WebRoot/Excel/c31ccd3e-4fa8-41b4-8d9e-9c528885d9fa.xlsx new file mode 100644 index 00000000..d6cd88fd Binary files /dev/null and b/WebRoot/Excel/c31ccd3e-4fa8-41b4-8d9e-9c528885d9fa.xlsx differ diff --git a/WebRoot/Excel/cde51864-f29a-4c25-a38c-0058ac9087ad.xlsx b/WebRoot/Excel/cde51864-f29a-4c25-a38c-0058ac9087ad.xlsx new file mode 100644 index 00000000..180e622b Binary files /dev/null and b/WebRoot/Excel/cde51864-f29a-4c25-a38c-0058ac9087ad.xlsx differ diff --git a/WebRoot/Excel/ce5e648f-9bcf-4a96-823a-de289ff18c19.xlsx b/WebRoot/Excel/ce5e648f-9bcf-4a96-823a-de289ff18c19.xlsx new file mode 100644 index 00000000..dcc04401 Binary files /dev/null and b/WebRoot/Excel/ce5e648f-9bcf-4a96-823a-de289ff18c19.xlsx differ diff --git a/WebRoot/Excel/f00dc401-4be2-4dc2-a74e-0d335f4e7a6d.xlsx b/WebRoot/Excel/f00dc401-4be2-4dc2-a74e-0d335f4e7a6d.xlsx new file mode 100644 index 00000000..8f502c3a Binary files /dev/null and b/WebRoot/Excel/f00dc401-4be2-4dc2-a74e-0d335f4e7a6d.xlsx differ diff --git a/WebRoot/Excel/f085bb49-c4a5-420c-94b1-eb4a0a6584cd.xlsx b/WebRoot/Excel/f085bb49-c4a5-420c-94b1-eb4a0a6584cd.xlsx new file mode 100644 index 00000000..b1f151aa Binary files /dev/null and b/WebRoot/Excel/f085bb49-c4a5-420c-94b1-eb4a0a6584cd.xlsx differ diff --git a/WebRoot/Excel/f0adbce0-93f3-42ac-8ecb-5ecca843d2e4.xlsx b/WebRoot/Excel/f0adbce0-93f3-42ac-8ecb-5ecca843d2e4.xlsx new file mode 100644 index 00000000..8093e54c Binary files /dev/null and b/WebRoot/Excel/f0adbce0-93f3-42ac-8ecb-5ecca843d2e4.xlsx differ diff --git a/WebRoot/Excel/f1b545da-6eb5-4799-87bf-c7189adec395.xlsx b/WebRoot/Excel/f1b545da-6eb5-4799-87bf-c7189adec395.xlsx new file mode 100644 index 00000000..0dcb32f6 Binary files /dev/null and b/WebRoot/Excel/f1b545da-6eb5-4799-87bf-c7189adec395.xlsx differ diff --git a/WebRoot/Excel/f484072e-6b20-4a04-be0b-2fcb3589d497.xlsx b/WebRoot/Excel/f484072e-6b20-4a04-be0b-2fcb3589d497.xlsx new file mode 100644 index 00000000..8351a72b Binary files /dev/null and b/WebRoot/Excel/f484072e-6b20-4a04-be0b-2fcb3589d497.xlsx differ diff --git a/WebRoot/Excel/fc23de6d-08f2-450a-97e6-6de8383c80e4.xlsx b/WebRoot/Excel/fc23de6d-08f2-450a-97e6-6de8383c80e4.xlsx new file mode 100644 index 00000000..a19b5363 Binary files /dev/null and b/WebRoot/Excel/fc23de6d-08f2-450a-97e6-6de8383c80e4.xlsx differ diff --git a/src/main/java/com/dsideal/QingLong/Collect/Controller/CollectController.java b/src/main/java/com/dsideal/QingLong/Collect/Controller/CollectController.java index bbcc9dcc..b69cd35f 100644 --- a/src/main/java/com/dsideal/QingLong/Collect/Controller/CollectController.java +++ b/src/main/java/com/dsideal/QingLong/Collect/Controller/CollectController.java @@ -516,6 +516,8 @@ public class CollectController extends Controller { //打开EXCEL,进行检查 InputStream is = new FileInputStream(f2); XSSFWorkbook wb = new XSSFWorkbook(is); + + //遍历每个Sheet注册好的信息,对用户上传的数据表进行检查 boolean flag = true; List blankSheet = new ArrayList<>(); @@ -528,7 +530,7 @@ public class CollectController extends Controller { Record r = cm.getSheetConfig(upload_excel_filename_finish, i); int data_start_row = r.getInt("data_start_row"); //恢复背景色 - PoiUtil.resetStyle(wb, sheet, data_start_row); + //PoiUtil.resetStyle(wb, sheet, data_start_row); //数据有效行数 int lastRowNum = sheet.getLastRowNum(); @@ -565,11 +567,17 @@ public class CollectController extends Controller { } } } +// int sheet_index = 1; +// int row_index = 3; +// int col_index = 7; +// XSSFCell cell2 = wb.getSheetAt(sheet_index).getRow(row_index).getCell(col_index); +// Object value2 = PoiUtil.getValue(cell2); +// System.out.println(value2); + // 检查数据类型是不是和规定的不兼容 for (int j = data_start_row; j <= lastRowNum; j++) {//行 XSSFCell cell = sheet.getRow(j).getCell(excel_column_idx); Object obj = PoiUtil.getValue(cell); - if (column_type.equals("Integer") && !CommonUtil.isInteger(obj.toString())) {//要求整数,实际不是整数 PoiUtil.addComment(wb, cell, "要求是整数,实际数据类型不是整数!"); PoiUtil.fillColor(wb, cell, IndexedColors.YELLOW.getIndex()); @@ -578,10 +586,13 @@ public class CollectController extends Controller { PoiUtil.addComment(wb, cell, "要求是小数,实际数据类型不是小数!"); PoiUtil.fillColor(wb, cell, IndexedColors.YELLOW.getIndex()); flag = false; - } else if (column_type.equals("Date") && !CommonUtil.isDate(obj.toString())) {//要求是日期,实际不是日期 - PoiUtil.addComment(wb, cell, "要求是日期格式,实际数据类型不是日期格式!"); - PoiUtil.fillColor(wb, cell, IndexedColors.YELLOW.getIndex()); - flag = false; + } + else if (column_type.equals("Date")) {//要求是日期,实际不是日期 + if (!CommonUtil.isDate(obj.toString())) { + PoiUtil.addComment(wb, cell, "要求是日期格式,实际数据类型不是日期格式!"); + PoiUtil.fillColor(wb, cell, IndexedColors.YELLOW.getIndex()); + flag = false; + } } } } diff --git a/src/main/java/com/dsideal/QingLong/Util/PoiUtil.java b/src/main/java/com/dsideal/QingLong/Util/PoiUtil.java index 9ed9d661..9a219d52 100644 --- a/src/main/java/com/dsideal/QingLong/Util/PoiUtil.java +++ b/src/main/java/com/dsideal/QingLong/Util/PoiUtil.java @@ -9,6 +9,7 @@ import org.apache.poi.ss.util.CellRangeAddressList; import org.apache.poi.xssf.usermodel.*; import java.io.*; +import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.util.*; @@ -102,7 +103,7 @@ public class PoiUtil { * @param sheet */ public static void resetStyle(XSSFWorkbook wb, XSSFSheet sheet, int dataStartRow) { - // 遍历所有行和单元格,移除批注 + // 遍历所有行和单元格,恢复颜色 for (int row = dataStartRow; row <= sheet.getLastRowNum(); row++) { for (int col = 0; col < sheet.getRow(row).getLastCellNum(); col++) { Cell cell = sheet.getRow(row).getCell(col); @@ -176,32 +177,68 @@ public class PoiUtil { * @param cell * @return */ - public static Object getValue(XSSFCell cell) { + //获取单元格各类型值,返回字符串类型 + public static String getValue(Cell cell) { + //判断是否为null或空串 + if (cell == null || cell.toString().trim().equals("")) { + return ""; + } + String cellValue = ""; switch (cell.getCellType()) { - case CellType.STRING: - String cellValueString = cell.getStringCellValue(); - return cellValueString; - case CellType.NUMERIC: - //日期格式 + case CellType.NUMERIC: // 数字 + short format = cell.getCellStyle().getDataFormat(); if (DateUtil.isCellDateFormatted(cell)) { - Date dateValue = cell.getDateCellValue(); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - String formattedDate = sdf.format(dateValue); - return formattedDate; + SimpleDateFormat sdf = null; + //System.out.println("cell.getCellStyle().getDataFormat()="+cell.getCellStyle().getDataFormat()); + if (format == 20 || format == 32) { + sdf = new SimpleDateFormat("HH:mm"); + } else if (format == 14 || format == 31 || format == 57 || format == 58) { + // 处理自定义日期格式:m月d日(通过判断单元格的格式id解决,id的值是58) + sdf = new SimpleDateFormat("yyyy-MM-dd"); + double value = cell.getNumericCellValue(); + Date date = org.apache.poi.ss.usermodel.DateUtil + .getJavaDate(value); + cellValue = sdf.format(date); + } else {// 日期 + sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + } + try { + cellValue = sdf.format(cell.getDateCellValue());// 日期 + } catch (Exception e) { + try { + throw new Exception("exception on get date data !".concat(e.toString())); + } catch (Exception e1) { + e1.printStackTrace(); + } + } finally { + sdf = null; + } + } else { + BigDecimal bd = new BigDecimal(cell.getNumericCellValue()); + cellValue = bd.toPlainString();// 数值 这种用BigDecimal包装再获取plainString,可以防止获取到科学计数值 } - double cellValueNumeric = cell.getNumericCellValue(); - return cellValueNumeric; - case CellType.BOOLEAN: - boolean cellValueBoolean = cell.getBooleanCellValue(); - return cellValueBoolean; - case CellType.BLANK: - cellValueString = cell.getStringCellValue(); - return cellValueString; - // 其他类型的处理 + break; + case CellType.STRING: // 字符串 + cellValue = cell.getStringCellValue(); + break; + case CellType.BOOLEAN: // Boolean + cellValue = cell.getBooleanCellValue() + ""; + ; + break; + case CellType.FORMULA: // 公式 + cellValue = cell.getCellFormula(); + break; + case CellType.BLANK: // 空值 + cellValue = ""; + break; + case CellType.ERROR: // 故障 + cellValue = "ERROR VALUE"; + break; default: - cellValueString = cell.getStringCellValue(); - return cellValueString; + cellValue = "UNKNOW VALUE"; + break; } + return cellValue; } /** @@ -346,19 +383,30 @@ public class PoiUtil { } public static void main(String[] args) throws IOException { - InputStream is = new FileInputStream("D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\sheet.xlsx"); - XSSFWorkbook wb = new XSSFWorkbook(is); - - setIntegerStyle(wb, 0, 2, 0, 20000); +// InputStream is = new FileInputStream("D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\sheet.xlsx"); +// XSSFWorkbook wb = new XSSFWorkbook(is); +// +// setIntegerStyle(wb, 0, 2, 0, 20000); +// +// setFloatStyle(wb, 0, 3, 0, 20000); +// +// setDateStyle(wb, 0, 4, 0, 20000); +// //保存 +// FileOutputStream fileOut = new FileOutputStream("D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\b61a2af2-223f-4058-a675-b212e4dd9487_finish.xlsx"); +// wb.write(fileOut); +// //关闭Excel +// wb.close(); - setFloatStyle(wb, 0, 3, 0, 20000); - - setDateStyle(wb,0,4,0,20000); - //保存 - FileOutputStream fileOut = new FileOutputStream("D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\b61a2af2-223f-4058-a675-b212e4dd9487_finish.xlsx"); - wb.write(fileOut); - //关闭Excel - wb.close(); + String f2 = "D:\\dsWork\\QingLong\\src\\main\\resource\\Excel\\4.xlsx"; + InputStream is = new FileInputStream(f2); + XSSFWorkbook wb = new XSSFWorkbook(is); + int sheet_index = 1; + int row_index = 3; + int col_index = 7; + XSSFCell cell = wb.getSheetAt(sheet_index).getRow(row_index).getCell(col_index); + Object value = getValue(cell); + System.out.println(value); } + } diff --git a/src/main/resource/Excel/4.xlsx b/src/main/resource/Excel/4.xlsx new file mode 100644 index 00000000..5b7cdabd Binary files /dev/null and b/src/main/resource/Excel/4.xlsx differ diff --git a/src/main/resource/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx b/src/main/resource/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx new file mode 100644 index 00000000..efbe71b6 Binary files /dev/null and b/src/main/resource/Excel/5cbe4e6f-724b-495d-8e3d-9272d5ac7391.xlsx differ diff --git a/src/main/resource/Excel/数据汇总表.xlsx b/src/main/resource/Excel/数据汇总表.xlsx new file mode 100644 index 00000000..d4c11e07 Binary files /dev/null and b/src/main/resource/Excel/数据汇总表.xlsx differ