From 60883147218577a3aa81127f628616d623402699 Mon Sep 17 00:00:00 2001 From: fwq <582742538@qq.com> Date: 星期四, 27 十月 2022 15:09:32 +0800 Subject: [PATCH] RSA私钥格式转换 --- src/main/java/com/hx/util/ExcelUtil.java | 210 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 204 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/hx/util/ExcelUtil.java b/src/main/java/com/hx/util/ExcelUtil.java index 9bd0712..5cbea70 100644 --- a/src/main/java/com/hx/util/ExcelUtil.java +++ b/src/main/java/com/hx/util/ExcelUtil.java @@ -15,6 +15,8 @@ import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.web.multipart.MultipartFile; +import javax.imageio.ImageIO; +import java.awt.image.BufferedImage; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; @@ -370,7 +372,11 @@ arrayString.add(""); //arrayString[i] = ""; } else { // 濡傛灉EXCEL琛ㄦ牸涓殑鏁版嵁绫诲瀷涓哄瓧绗︿覆鍨� - arrayString.add(cell.getStringCellValue().trim()); + if(cell.getCellType() != Cell.CELL_TYPE_BOOLEAN){ + arrayString.add(cell.getStringCellValue().trim()); + }else{ + arrayString.add(cell.getBooleanCellValue() ? "TRUE" : "FALSE"); + } //arrayString[i] = cell.getStringCellValue().trim(); } } @@ -424,7 +430,7 @@ arrayString.add(""); } else if (cell.getCellType() == 0) { // arrayString[i] = new Double(cell.getNumericCellValue()).toString(); - if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()) { + if (XSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()) { short format = cell.getCellStyle().getDataFormat(); if(format == 14 || format == 31 || format == 57 || format == 58){ //鏃ユ湡锛堜腑鏂囨椂闂存牸寮忕殑锛� @@ -440,13 +446,13 @@ arrayString.add(formater.format(d)); //arrayString[i] = formater.format(d); } else { - if(HSSFCell.CELL_TYPE_STRING == cell.getCellType()){ + if(XSSFCell.CELL_TYPE_STRING == cell.getCellType()){ arrayString.add(cell.getStringCellValue()); //arrayString[i] =cell.getStringCellValue(); - }else if(HSSFCell.CELL_TYPE_FORMULA==cell.getCellType()){ + }else if(XSSFCell.CELL_TYPE_FORMULA==cell.getCellType()){ arrayString.add(cell.getCellFormula()); //arrayString[i] =cell.getCellFormula(); - }else if(HSSFCell.CELL_TYPE_NUMERIC== cell.getCellType()){ + }else if(XSSFCell.CELL_TYPE_NUMERIC== cell.getCellType()){ HSSFDataFormatter dataFormatter = new HSSFDataFormatter(); arrayString.add(dataFormatter.formatCellValue(cell)); //arrayString[i] =dataFormatter.formatCellValue(cell); @@ -457,7 +463,13 @@ arrayString.add(""); //arrayString[i] = ""; } else { // 濡傛灉EXCEL琛ㄦ牸涓殑鏁版嵁绫诲瀷涓哄瓧绗︿覆鍨� - arrayString.add(cell.getStringCellValue().trim()); + if(cell.getCellType() != Cell.CELL_TYPE_BOOLEAN){ + arrayString.add(cell.getStringCellValue().trim()); + }else{ + arrayString.add(cell.getBooleanCellValue() ? "TRUE" : "FALSE"); + } + + //arrayString[i] = cell.getStringCellValue().trim(); } } @@ -482,6 +494,97 @@ } throw new IllegalArgumentException("浣犵殑excel鐗堟湰鐩墠poi瑙f瀽涓嶄簡"); } + + /**璇诲彇excel鏂囦欢锛屽吋瀹�2003鍜�2007 + * 閫氳繃娴佽鍙朎xcel鏂囦欢 + * @return + * @throws Exception + */ + public static List<List<String>> getExcelDataCompatible(File file,boolean header) throws Exception { + try { + + String fileName = file.getName(); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + throw new TipsException("涓婁紶鏂囦欢鏍煎紡涓嶆纭�"); + } + + // 缁撴灉闆� + List<List<String>> list = new ArrayList<>(); + Workbook book = create(new BufferedInputStream(new FileInputStream(file))); + + // 閬嶅巻璇ヨ〃鏍间腑鎵�鏈夌殑宸ヤ綔琛紝i琛ㄧず宸ヤ綔琛ㄧ殑鏁伴噺 getNumberOfSheets琛ㄧず宸ヤ綔琛ㄧ殑鎬绘暟 + for(int s=0;s<book.getNumberOfSheets();s++) { + Sheet hssfsheet = book.getSheetAt(s); + int col = 0; + // 閬嶅巻璇ヨ鎵�鏈夌殑琛�,j琛ㄧず琛屾暟 getPhysicalNumberOfRows琛岀殑鎬绘暟 鍘婚櫎鏍囬 + for (int j = 0; j < hssfsheet.getPhysicalNumberOfRows(); j++) { + Row hssfrow = hssfsheet.getRow(j); + if(hssfrow!=null){ + if(j == 0) { + col = hssfrow.getPhysicalNumberOfCells(); + if(!header) { + //涓嶅寘鎷〃澶� + continue; + } + } + // 鍗曡鏁版嵁 + List<String> arrayString = new ArrayList<>(); + for (int i = 0; i < col; i++) { + Cell cell = hssfrow.getCell(i); + if (cell == null) { + arrayString.add(""); + } else if (cell.getCellType() == 0) { + // arrayString[i] = new Double(cell.getNumericCellValue()).toString(); + if (HSSFCell.CELL_TYPE_NUMERIC == cell.getCellType()) { + short format = cell.getCellStyle().getDataFormat(); + if(format == 14 || format == 31 || format == 57 || format == 58){ + //鏃ユ湡锛堜腑鏂囨椂闂存牸寮忕殑锛� + Date d = cell.getDateCellValue(); + DateFormat formater = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + // DateFormat formater = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + arrayString.add(formater.format(d)); + //arrayString[i] = formater.format(d); + }else if (HSSFDateUtil.isCellDateFormatted(cell)) { + Date d = cell.getDateCellValue(); + //DateFormat formater = new SimpleDateFormat("yyyy骞碝M鏈坉d鏃� HH鏃秏m鍒唖s绉�"); + DateFormat formater = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + arrayString.add(formater.format(d)); + //arrayString[i] = formater.format(d); + } else { + if(HSSFCell.CELL_TYPE_STRING == cell.getCellType()){ + arrayString.add(cell.getStringCellValue()); + //arrayString[i] =cell.getStringCellValue(); + }else if(HSSFCell.CELL_TYPE_FORMULA==cell.getCellType()){ + arrayString.add(cell.getCellFormula()); + //arrayString[i] =cell.getCellFormula(); + }else if(HSSFCell.CELL_TYPE_NUMERIC== cell.getCellType()){ + HSSFDataFormatter dataFormatter = new HSSFDataFormatter(); + arrayString.add(dataFormatter.formatCellValue(cell)); + //arrayString[i] =dataFormatter.formatCellValue(cell); + } + } + } + } else if(cell.getCellType() == Cell.CELL_TYPE_BLANK){ + arrayString.add(""); + //arrayString[i] = ""; + } else { // 濡傛灉EXCEL琛ㄦ牸涓殑鏁版嵁绫诲瀷涓哄瓧绗︿覆鍨� + arrayString.add(cell.getStringCellValue().trim()); + //arrayString[i] = cell.getStringCellValue().trim(); + } + } + list.add(arrayString); + } + } + } + return list; + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + + /**璇诲彇excel鏂囦欢锛屽吋瀹�2003鍜�2007 * 閫氳繃娴佽鍙朎xcel鏂囦欢 @@ -604,4 +707,99 @@ return ""; } + /** + * p鍒ゆ柇鏄惁excel鏂囦欢 + * @param file + * @return + */ + public static boolean isExcel(MultipartFile file){ + String fileName = file.getOriginalFilename(); + if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) { + return false; + } + return true; + } + + + + + + public static File createExcelByImg(String[] headList, String[] fieldList, List<Map<String, Object>> dataList, Integer height, Integer width) throws Exception { + File file = File.createTempFile("temp", ".xls"); + FileOutputStream fileOut = null; + BufferedImage bufferImg = null; + + try { + ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream(); + if (height == null) { + height = 450; + } + + if (width == null) { + width = 1000; + } + + HSSFWorkbook workbook = new HSSFWorkbook(); + HSSFCellStyle boderStyle = workbook.createCellStyle(); + boderStyle.setVerticalAlignment((short)1); + boderStyle.setAlignment((short)2); + HSSFSheet sheet = workbook.createSheet(); + HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); + HSSFRow row = sheet.createRow(0); + + HSSFCell anchor; + for(int i = 0; i < headList.length; ++i) { + row.setHeight(height.shortValue()); + sheet.setColumnWidth(i, width); + anchor = row.createCell(i); + anchor.setCellType(1); + anchor.setCellValue(headList[i]); + anchor.setCellStyle(boderStyle); + } + + HSSFRow row_value = null; + anchor = null; + HSSFCell cell = null; + if (dataList != null) { + for(int n = 0; n < dataList.size(); ++n) { + row_value = sheet.createRow(n + 1); + row_value.setHeight(height.shortValue()); + Map<String, Object> dataMap = (Map)dataList.get(n); + + for(int i = 0; i < fieldList.length; ++i) { + sheet.setColumnWidth(i, width); + cell = row_value.createCell(i); + cell.setCellType(1); + Object value = dataMap.get(fieldList[i]); + if (value != null && "class java.io.File".equals(value.getClass().toString())) { + File file2 = (File)value; + if (file2 == null) { + cell.setCellValue(""); + } else { + bufferImg = ImageIO.read(file2); + ImageIO.write(bufferImg, "jpg", byteArrayOut); + HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 1023, 255, (short)i, n + 1, (short)i, n + 1); + anchor1.setAnchorType(0); + patriarch.createPicture(anchor1, workbook.addPicture(byteArrayOut.toByteArray(), 5)); + } + } else { + cell.setCellValue(objToString(dataMap.get(fieldList[i]))); + cell.setCellStyle(boderStyle); + } + } + } + } + + FileOutputStream fOut = new FileOutputStream(file); + workbook.write(fOut); + fOut.flush(); + fOut.close(); + } catch (Exception var25) { + var25.printStackTrace(); + } finally { + file.deleteOnExit(); + } + + return file; + } } \ No newline at end of file -- Gitblit v1.8.0