| | |
| | | import org.apache.poi.hssf.usermodel.HSSFWorkbook; |
| | | import org.apache.poi.ooxml.POIXMLDocument; |
| | | import org.apache.poi.ooxml.POIXMLDocumentPart; |
| | | import org.apache.poi.ss.usermodel.Cell; |
| | | import org.apache.poi.ss.usermodel.CellType; |
| | | import org.apache.poi.xssf.usermodel.XSSFCell; |
| | | import org.apache.poi.xssf.usermodel.XSSFRow; |
| | |
| | | OutputStream os = new FileOutputStream("C:\\Users\\大头\\Desktop\\MAQ组别报告\\林_PAQ_IA_CN2.docx"); |
| | | XWPFDocument document = new XWPFDocument(POIXMLDocument.openPackage("C:\\Users\\大头\\Desktop\\MAQ组别报告\\终稿【0607中文版】MAQ组别对比报告(1).docx")); |
| | | |
| | | String fileName = "C:\\Users\\大头\\Desktop\\MAQ组别报告\\MAQ组别导入数据模板 (2).xlsx"; |
| | | String fileName = "C:\\Users\\大头\\Desktop\\MAQ组别报告\\MAQ组别导入数据模板 -3组(1).xlsx"; |
| | | //变更图表数据 |
| | | changeMAQTRChart(document,fileName); |
| | | document.write(os); |
| | |
| | | */ |
| | | public static Map<String,Map<Integer,Double>> replaceContent(String fileName){ |
| | | //平均值集合 |
| | | Map<String,Map<Integer,Double>> averageMap = new HashMap<>(); |
| | | Map<String,Map<Integer,Double>> averageMap = new TreeMap<>(); |
| | | try { |
| | | XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(fileName)); |
| | | Map<String,Map<Integer,List<Double>>> dataMap = new HashMap<>(); |
| | | Map<String,Map<Integer,List<Double>>> dataMap = new TreeMap<>(); |
| | | for (int i = 0; i < wb.getNumberOfSheets(); i++) { |
| | | XSSFSheet sheet = wb.getSheetAt(i); |
| | | String companyName = sheet.getRow(1).getCell(0).getStringCellValue(); |
| | | Map<Integer,List<Double>> map = new HashMap<>(); |
| | | //统计人数 |
| | | int person = 0; |
| | | //行 |
| | | for (int j = 1; j <= sheet.getLastRowNum(); j++) { |
| | | XSSFRow row = sheet.getRow(j); |
| | | if(row == null){ |
| | | continue; |
| | | if(isEmptyRow(row)){ |
| | | break; |
| | | } |
| | | //列 |
| | | for (int k = 1; k < row.getLastCellNum(); k++) { |
| | | XSSFCell cell = row.getCell(k); |
| | | if(cell == null){ |
| | | continue; |
| | | break; |
| | | } |
| | | /* |
| | | if (CellType.NUMERIC == cell.getCellType()) { |
| | | System.out.println(cell.getNumericCellValue()); |
| | | } else if (CellType.STRING == cell.getCellType()) { |
| | | System.out.println(cell.getStringCellValue()); |
| | | //不是分数 忽略 |
| | | Double cellValue = null; |
| | | try { |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | cellValue = Double.valueOf(cell.getStringCellValue()); |
| | | break; |
| | | case NUMERIC: |
| | | cellValue = cell.getNumericCellValue(); |
| | | break; |
| | | } |
| | | }catch (Exception e){ |
| | | log.error("获取分数失败,{}"+e.getMessage()); |
| | | e.printStackTrace(); |
| | | } |
| | | */ |
| | | switch (cell.getCellType()) { |
| | | case STRING: |
| | | continue; |
| | | } |
| | | //table1 多个答题结果处理 |
| | | |
| | | //归类个性 |
| | | if(map.get(k) != null){ |
| | | map.get(k).add(cell.getNumericCellValue()); |
| | | map.get(k).add(cellValue); |
| | | }else { |
| | | List<Double> list = new ArrayList<>(); |
| | | list.add(cell.getNumericCellValue()); |
| | | list.add(cellValue); |
| | | map.put(k,list); |
| | | } |
| | | } |
| | | person++; |
| | | } |
| | | |
| | | //设置人数 |
| | | List<Double> list = new ArrayList<>(); |
| | | list.add(Double.valueOf(person)); |
| | | map.put(999,list); |
| | | |
| | | //设置不同团队的数据 |
| | | dataMap.put(companyName,map); |
| | | } |
| | | //平均值集合 |
| | |
| | | //动态值 |
| | | for (Map.Entry<String,Map<Integer,Double>> map : dataMap.entrySet()) { |
| | | SeriesData valSeriesData = new SeriesData(); |
| | | valSeriesData.setName(map.getKey()); |
| | | Map<Integer,Double> valMap = map.getValue(); |
| | | valSeriesData.setName(map.getKey()+"(n="+ valMap.get(999).intValue() +")"); |
| | | List<RowData> valRowDataList = new ArrayList<>(); |
| | | for (int i = oneIndex; i > 0; i--) { |
| | | RowData rowData = new RowData(); |
| | |
| | | //动态值 |
| | | for (Map.Entry<String,Map<Integer,Double>> map : dataMap.entrySet()) { |
| | | SeriesData valSeriesData = new SeriesData(); |
| | | valSeriesData.setName(map.getKey()); |
| | | Map<Integer,Double> valMap = map.getValue(); |
| | | valSeriesData.setName(map.getKey()+"(n="+valMap.get(999).intValue()+")"); |
| | | List<RowData> valRowDataList = new ArrayList<>(); |
| | | for (int i = twoIndex; i > oneIndex; i--) { |
| | | RowData rowData = new RowData(); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 空行判断 |
| | | * @param row |
| | | * @return |
| | | */ |
| | | public static boolean isEmptyRow(XSSFRow row){ |
| | | if(row == null || row.toString().isEmpty()){ |
| | | return true; |
| | | }else{ |
| | | Iterator<Cell> it = row.iterator(); |
| | | boolean isEmpty = true; |
| | | while (it.hasNext()){ |
| | | Cell cell = it.next(); |
| | | if(cell.getCellType() != CellType.BLANK){ |
| | | isEmpty = false; |
| | | break; |
| | | } |
| | | } |
| | | return isEmpty; |
| | | } |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 更新图表的关联 excel |
| | | * |
| | | * @param seriesDatas |
| | |
| | | } |
| | | //删除多余行数 |
| | | int lastRowNum = sheet.getLastRowNum(); |
| | | log.error("lastRowNum:{},size:{}",lastRowNum,size); |
| | | //log.error("lastRowNum:{},size:{}",lastRowNum,size); |
| | | if (lastRowNum > size) { |
| | | for (int idx = lastRowNum; idx > size; idx--) { |
| | | if(sheet.getRow(idx) == null){ |