| | |
| | | Exceldata exceldata = new Exceldata(); |
| | | Map<Integer, Object> project = new HashMap<>(); |
| | | HashMap<String, Object> datas1 = new HashMap<>(); |
| | | Boolean exitLoop=false; |
| | | Boolean exitLoop = false; |
| | | for (int i = 0; i < workbook.getNumberOfSheets(); i++) { |
| | | String s = ""; |
| | | Sheet sheet = workbook.getSheetAt(i); |
| | |
| | | } else { |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | if (cell.getColumnIndex()==1) { |
| | | exitLoop=true; |
| | | if (cell.getColumnIndex() == 1) { |
| | | exitLoop = true; |
| | | break; |
| | | } |
| | | if (StringUtils.isNotEmpty(s)) { |
| | |
| | | System.out.print("NULL\t"); |
| | | } |
| | | } |
| | | if (exitLoop){ |
| | | exitLoop=false; |
| | | if (exitLoop) { |
| | | exitLoop = false; |
| | | break; |
| | | } |
| | | if (map.isEmpty()) { |
| | |
| | | for (Map<String, Object> number : hashMaps) { |
| | | number.put("端口", s1); |
| | | Double o = (Double) number.get("频率"); |
| | | if (o!=null) { |
| | | if (o != null) { |
| | | floatList.add(o); |
| | | } |
| | | } |
| | |
| | | public void getFuSheWord2(String sonLaboratory, InsOrderFile insOrderFile) { |
| | | //读取excel文件内容 |
| | | String excelFilePath = wordUrl + "/" + insOrderFile.getFileUrl(); // 更新为你的文件路径 |
| | | String fileEncoding = "GBK"; // 或其他编码格式,如GBK, ISO-8859-1 等 |
| | | Exceldata exceldata = new Exceldata(); |
| | | HashMap<Integer, Object> project = new HashMap<>(); |
| | | HashMap<String, Object> biaozhun = new HashMap<>(); |
| | | HashMap<String, Object> pingjunzhi = new HashMap<>(); |
| | | HashMap<String, Object> datas1 = new HashMap<>(); |
| | | HashMap<String, Object> map2 = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | XWPFDocument document = new XWPFDocument(); |
| | | String jiaodu = ""; |
| | | String port = ""; |
| | | try (CSVReader reader = new CSVReader(new InputStreamReader(new FileInputStream(excelFilePath), fileEncoding))) { |
| | | List<String[]> records = reader.readAll(); |
| | | for (int i = 0; i < records.size(); i++) { |
| | | HashMap<String, Object> map1 = new HashMap<>(); |
| | | HashMap<String, Object> pingjun = new HashMap<>(); |
| | | String[] record = records.get(i); |
| | | |
| | | for (int i1 = 0; i1 < record.length; i1++) { |
| | | String value = record[i1]; |
| | | if (i == 0) { |
| | | project.put(i1, value); |
| | | } |
| | | if (i == 1) { |
| | | biaozhun.put(project.get(i1).toString(), value); |
| | | } |
| | | if (i > 2) { |
| | | if (i1 == 0 && StringUtils.isNotEmpty(value)) { |
| | | |
| | | if (map2.size() != 0) { |
| | | map2.put(port, list); |
| | | datas1.put(jiaodu, map2); |
| | | map2 = new HashMap<>(); |
| | | } |
| | | datas1.put(value, ""); |
| | | jiaodu = value; |
| | | } else if (i1 == 1 && StringUtils.isNotEmpty(value)) { |
| | | if (list.size() != 0) { |
| | | map2.put(port, list); |
| | | list = new ArrayList<>(); |
| | | } |
| | | map2.put(value, ""); |
| | | port = value; |
| | | } else if (StringUtils.isNotEmpty(value)) { |
| | | if (value.equals("最大值") || value.equals("最小值") || value.equals("指标") || value.equals("类别")) { |
| | | break; |
| | | } else if (value.equals("平均值")) { |
| | | for (int i2 = 0; i2 < record.length; i2++) { |
| | | String value1 = record[i2]; |
| | | if (value1.equals("平均值")) { |
| | | continue; |
| | | } |
| | | pingjun.put(project.get(i2).toString(), value1); |
| | | } |
| | | break; |
| | | } |
| | | map1.put(project.get(i1).toString(), value); |
| | | } |
| | | } |
| | | System.out.print(value + " "); |
| | | } |
| | | if (map1.size() != 0) { |
| | | list.add(map1); |
| | | } |
| | | if (pingjun.size() != 0) { |
| | | pingjunzhi.put(jiaodu, pingjun); |
| | | } |
| | | if (i == records.size() - 1) { |
| | | map2.put(port, list); |
| | | datas1.put(jiaodu, map2); |
| | | } |
| | | System.out.println(); |
| | | } |
| | | System.out.println("-----------------"); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | exceldata.setProject(project); |
| | | exceldata.setDataRow(datas1); |
| | | System.out.println(exceldata); |
| | | |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | for (String s : datas1.keySet()) { |
| | | Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); |
| | | for (String s1 : numbers.keySet()) { |
| | | List<HashMap<String, Object>> hashMaps = numbers.get(s1); |
| | | |
| | | List<Integer> floatList = new ArrayList<>(); |
| | | for (Map<String, Object> number : hashMaps) { |
| | | number.put("端口", s1); |
| | | floatList.add(Integer.parseInt((String) number.get("测试频率(MHZ)"))); |
| | | } |
| | | Integer maxValue = Collections.max(floatList); |
| | | Integer minValue = Collections.min(floatList); |
| | | |
| | | if (map.get(minValue + "-" + maxValue + "-" + s) == null) { |
| | | map.put(minValue + "-" + maxValue + "-" + s, s1); |
| | | } else { |
| | | Object o = map.get(minValue + "-" + maxValue + "-" + s); |
| | | map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o); |
| | | } |
| | | } |
| | | |
| | | } |
| | | System.out.println(map); |
| | | |
| | | int size = map.size(); |
| | | for (String s1 : map.keySet()) { |
| | | String o = map.get(s1).toString(); |
| | | |
| | | List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList()); |
| | | int size1 = -1; |
| | | |
| | | for (String s : datas1.keySet()) { |
| | | Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); |
| | | for (String s3 : o1.keySet()) { |
| | | List<HashMap<String, Object>> numbers = o1.get(s3); |
| | | for (String s2 : collect) { |
| | | if (s3.equals(s2)) { |
| | | if (numbers.size() > size1) { |
| | | size1 = numbers.size(); |
| | | } |
| | | } |
| | | } |
| | | map.put(s1, o + "," + size1); |
| | | } |
| | | } |
| | | |
| | | } |
| | | System.out.println(map); |
| | | FileInputStream fileInputStream = null; |
| | | Workbook workbook = null; |
| | | |
| | | try { |
| | | createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile); |
| | | fileInputStream = new FileInputStream(new File(excelFilePath)); |
| | | workbook = new XSSFWorkbook(fileInputStream); // 对于 .xlsx 文件 |
| | | XWPFDocument document = new XWPFDocument(); |
| | | |
| | | Boolean exitLoop = false; |
| | | for (int i = 0; i < workbook.getNumberOfSheets(); i++) { |
| | | Exceldata exceldata = new Exceldata(); |
| | | HashMap<Integer, Object> project = new HashMap<>(); |
| | | HashMap<String, Object> biaozhun = new HashMap<>(); |
| | | HashMap<String, Object> pingjunzhi = new HashMap<>(); |
| | | HashMap<String, Object> datas1 = new HashMap<>(); |
| | | HashMap<String, Object> map2 = new HashMap<>(); |
| | | List<Map<String, Object>> list = new ArrayList<>(); |
| | | String jiaodu = ""; |
| | | String port = ""; |
| | | Integer count = 0; |
| | | Sheet sheet = workbook.getSheetAt(i); |
| | | Boolean biaoji = false; |
| | | int lastRowNum = sheet.getLastRowNum(); |
| | | for (Row row : sheet) { |
| | | |
| | | count++; |
| | | HashMap<String, Object> map1 = new HashMap<>(); |
| | | HashMap<String, Object> pingjun = new HashMap<>(); |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | for (Cell cell : row) { |
| | | |
| | | if (row.getRowNum() == 0) { |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | project.put(cell.getColumnIndex(), cell.getStringCellValue()); |
| | | System.out.print(cell.getStringCellValue() + "\t"); |
| | | break; |
| | | case NUMERIC: |
| | | System.out.print(cell.getNumericCellValue() + "\t"); |
| | | break; |
| | | case BOOLEAN: |
| | | System.out.print(cell.getBooleanCellValue() + "\t"); |
| | | break; |
| | | case FORMULA: |
| | | System.out.print(cell.getCellFormula() + "\t"); |
| | | break; |
| | | default: |
| | | System.out.print("NULL\t"); |
| | | } |
| | | } else if (row.getRowNum() == 1) { |
| | | |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | biaozhun.put(project.get(cell.getColumnIndex()).toString(), cell.getStringCellValue()); |
| | | break; |
| | | case NUMERIC: |
| | | System.out.print(cell.getNumericCellValue() + "\t"); |
| | | break; |
| | | case BOOLEAN: |
| | | System.out.print(cell.getBooleanCellValue() + "\t"); |
| | | break; |
| | | case FORMULA: |
| | | System.out.print(cell.getCellFormula() + "\t"); |
| | | break; |
| | | default: |
| | | System.out.print("NULL\t"); |
| | | } |
| | | } else if (row.getRowNum() > 2) { |
| | | |
| | | if (cell.getColumnIndex() == 0 && StringUtils.isNotEmpty(cell.getStringCellValue())) { |
| | | |
| | | if (map2.size() != 0) { |
| | | map2.put(port, list); |
| | | datas1.put(jiaodu, map2); |
| | | map2 = new HashMap<>(); |
| | | } |
| | | datas1.put(cell.getStringCellValue(), ""); |
| | | jiaodu = cell.getStringCellValue(); |
| | | } else if (cell.getColumnIndex() == 1 && StringUtils.isNotEmpty(cell.getStringCellValue())) { |
| | | if (list.size() != 0) { |
| | | map2.put(port, list); |
| | | list = new ArrayList<>(); |
| | | } |
| | | map2.put(cell.getStringCellValue(), ""); |
| | | port = cell.getStringCellValue(); |
| | | |
| | | } else { |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | String value = cell.getStringCellValue(); |
| | | if (value.equals("avg")) { |
| | | for (Cell cell1 : row) { |
| | | switch (cell1.getCellType()) { |
| | | case STRING: |
| | | |
| | | break; |
| | | case NUMERIC: |
| | | pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue()); |
| | | System.out.print(cell1.getNumericCellValue() + "\t"); |
| | | break; |
| | | case BOOLEAN: |
| | | System.out.print(cell1.getBooleanCellValue() + "\t"); |
| | | break; |
| | | case FORMULA: |
| | | String cellFormula = cell1.getCellFormula(); |
| | | Double numericCellValue = cell1.getNumericCellValue(); |
| | | pingjun.put(project.get(cell1.getColumnIndex()).toString(), cell1.getNumericCellValue()); |
| | | System.out.print(cellFormula); |
| | | break; |
| | | default: |
| | | System.out.print("NULL\t"); |
| | | } |
| | | |
| | | } |
| | | } else { |
| | | biaoji = true; |
| | | } |
| | | break; |
| | | case NUMERIC: |
| | | map1.put(project.get(cell.getColumnIndex()).toString(), cell.getNumericCellValue()); |
| | | System.out.print(cell.getNumericCellValue() + "\t"); |
| | | break; |
| | | case BOOLEAN: |
| | | System.out.print(cell.getBooleanCellValue() + "\t"); |
| | | break; |
| | | case FORMULA: |
| | | System.out.print(cell.getCellFormula() + "\t"); |
| | | break; |
| | | default: |
| | | System.out.print("NULL\t"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | if (biaoji) { |
| | | biaoji = false; |
| | | break; |
| | | } |
| | | } |
| | | |
| | | if (map1.size() != 0) { |
| | | list.add(map1); |
| | | } |
| | | if (pingjun.size() != 0) { |
| | | pingjunzhi.put(jiaodu, pingjun); |
| | | } |
| | | |
| | | if (count == lastRowNum + 1) { |
| | | map2.put(port, list); |
| | | datas1.put(jiaodu, map2); |
| | | } |
| | | System.out.println(); |
| | | } |
| | | exceldata.setProject(project); |
| | | exceldata.setDataRow(datas1); |
| | | System.out.println(exceldata); |
| | | |
| | | |
| | | HashMap<String, Object> map = new HashMap<>(); |
| | | for (String s : datas1.keySet()) { |
| | | Map<String, List<HashMap<String, Object>>> numbers = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); |
| | | for (String s1 : numbers.keySet()) { |
| | | List<HashMap<String, Object>> hashMaps = numbers.get(s1); |
| | | |
| | | List<Integer> floatList = new ArrayList<>(); |
| | | for (Map<String, Object> number : hashMaps) { |
| | | number.put("端口", s1); |
| | | Double o = (Double) number.get("测试频率(MHZ)"); |
| | | floatList.add(o.intValue()); |
| | | } |
| | | Integer maxValue = Collections.max(floatList); |
| | | Integer minValue = Collections.min(floatList); |
| | | |
| | | if (map.get(minValue + "-" + maxValue + "-" + s) == null) { |
| | | map.put(minValue + "-" + maxValue + "-" + s, s1); |
| | | } else { |
| | | Object o = map.get(minValue + "-" + maxValue + "-" + s); |
| | | map.put(minValue + "-" + maxValue + "-" + s, s1 + "," + o); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | System.out.println(map); |
| | | |
| | | |
| | | int size = map.size(); |
| | | for (String s1 : map.keySet()) { |
| | | String o = map.get(s1).toString(); |
| | | |
| | | List<String> collect = Arrays.stream(o.split(",")).collect(Collectors.toList()); |
| | | int size1 = -1; |
| | | |
| | | for (String s : datas1.keySet()) { |
| | | Map<String, List<HashMap<String, Object>>> o1 = (Map<String, List<HashMap<String, Object>>>) datas1.get(s); |
| | | for (String s3 : o1.keySet()) { |
| | | List<HashMap<String, Object>> numbers = o1.get(s3); |
| | | for (String s2 : collect) { |
| | | if (s3.equals(s2)) { |
| | | if (numbers.size() > size1) { |
| | | size1 = numbers.size(); |
| | | } |
| | | } |
| | | } |
| | | map.put(s1, o + "," + size1); |
| | | } |
| | | } |
| | | |
| | | } |
| | | System.out.println(map); |
| | | |
| | | createWord2(sonLaboratory, document, exceldata, map, pingjunzhi, biaozhun, insOrderFile); |
| | | |
| | | } |
| | | // 输出到文件 |
| | | InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId()); |
| | | String[] split = insOrderFile.getFileName().split("\\."); |
| | | String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); |
| | | String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx"; |
| | | url.replace("#", "&"); |
| | | FileOutputStream out = new FileOutputStream(wordUrl + "/" + url); |
| | | document.write(out); |
| | | out.close(); |
| | | document.close(); |
| | | InsOrderFile orderFile = new InsOrderFile(); |
| | | orderFile.setInsOrderId(insOrderFile.getInsOrderId()); |
| | | orderFile.setInsSampleId(insOrderFile.getInsSampleId()); |
| | | orderFile.setFileUrl(url); |
| | | orderFile.setType(2); |
| | | orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx"); |
| | | orderFile.setSonLaboratory(sonLaboratory); |
| | | insOrderFileMapper.insert(orderFile); |
| | | |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | } finally { |
| | | // 关闭资源 |
| | | try { |
| | | if (workbook != null) { |
| | | workbook.close(); |
| | | } |
| | | if (fileInputStream != null) { |
| | | fileInputStream.close(); |
| | | } |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | | |
| | |
| | | try { |
| | | InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId()); |
| | | String[] split = insOrderFile.getFileName().split("\\."); |
| | | String name = insOrderFile.getFileName().replace('#','&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); |
| | | String name = insOrderFile.getFileName().replace('#', '&').substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); |
| | | String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx"; |
| | | url.replace("#", "&"); |
| | | FileOutputStream out = new FileOutputStream(wordUrl + "/" + url); |
| | |
| | | |
| | | |
| | | List<String> collect = Arrays.stream(split).collect(Collectors.toList()); |
| | | collect.sort((o1, o21) -> Integer.parseInt(o1.substring((o1.length() - 1))) - Integer.parseInt(o21.substring(o21.length() - 1))); |
| | | |
| | | int size1 = 0; |
| | | |
| | |
| | | |
| | | XWPFParagraph paragraph3 = table.getRow(0).getCell(3).getParagraphArray(0); |
| | | XWPFRun run3 = paragraph3.createRun(); |
| | | run3.setText(bz.get(s2).toString()); |
| | | if (bz.get(s2) != null) { |
| | | run3.setText(bz.get(s2).toString()); |
| | | } |
| | | |
| | | |
| | | XWPFParagraph paragraph4 = table.getRow(0).getCell(4).getParagraphArray(0); |
| | | XWPFRun run4 = paragraph4.createRun(); |
| | |
| | | } |
| | | |
| | | Map<Integer, List<Map<String, Object>>> group = mapList.stream() |
| | | .collect(Collectors.groupingBy(item -> Integer.parseInt(item.get("测试频率(MHZ)").toString()))); |
| | | .collect(Collectors.groupingBy(item -> { |
| | | Double aDouble = (Double) item.get("测试频率(MHZ)"); |
| | | return aDouble.intValue(); |
| | | })); |
| | | |
| | | |
| | | int hang = 2; |
| | |
| | | size++; |
| | | } |
| | | } |
| | | // 输出到文件 |
| | | try { |
| | | InsSample insSample = insSampleMapper.selectById(insOrderFile.getInsSampleId()); |
| | | String[] split = insOrderFile.getFileName().split("\\."); |
| | | String name = insOrderFile.getFileName().replace("#", "&").substring(0, (insOrderFile.getFileName().length() - split[split.length - 1].length())); |
| | | String url = UUID.randomUUID() + "_" + insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx"; |
| | | url.replace("#", "&"); |
| | | FileOutputStream out = new FileOutputStream(wordUrl + "/" + url); |
| | | document.write(out); |
| | | out.close(); |
| | | document.close(); |
| | | InsOrderFile orderFile = new InsOrderFile(); |
| | | orderFile.setInsOrderId(insOrderFile.getInsOrderId()); |
| | | orderFile.setInsSampleId(insOrderFile.getInsSampleId()); |
| | | orderFile.setFileUrl(url); |
| | | orderFile.setType(2); |
| | | orderFile.setFileName(insSample.getSampleCode() + "&" + sonLaboratory + name + "解析的辐射站点报告.docx"); |
| | | orderFile.setSonLaboratory(sonLaboratory); |
| | | insOrderFileMapper.insert(orderFile); |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | |
| | | } |
| | | |