datasToWorkbook

	public static Workbook datasToWorkbook(String path, String sheetName, List<List<String>> datas, int startRow,
			int startCol) {
		Workbook wb = readExcel(path);
		if (wb == null) {
			wb = createWorkbook(false);
		}
		CellStyle cellStyle1 = wb.createCellStyle();
		cellStyle1.setBorderTop((short) 1);
		cellStyle1.setBorderBottom((short) 1);
		cellStyle1.setBorderLeft((short) 1);
		cellStyle1.setBorderRight((short) 1);
		cellStyle1.setAlignment((short) 2);

		cellStyle1.setFillForegroundColor(IndexedColors.WHITE.getIndex());
		cellStyle1.setFillPattern((short) 1);
		cellStyle1.setVerticalAlignment((short) 1);

		CellStyle cellStyle2 = wb.createCellStyle();
		cellStyle2.setBorderTop((short) 1);
		cellStyle2.setBorderBottom((short) 1);
		cellStyle2.setBorderLeft((short) 1);
		cellStyle2.setBorderRight((short) 1);
		cellStyle2.setAlignment((short) 2);
		cellStyle2.setFillForegroundColor(IndexedColors.RED.getIndex());
		cellStyle2.setFillPattern((short) 1);
		cellStyle2.setVerticalAlignment((short) 1);
		cellStyle2.setWrapText(true);

		HSSFFont font = (HSSFFont) wb.createFont();
		font.setBoldweight((short) 700);

		CellStyle cellStyle3 = wb.createCellStyle();
		cellStyle3.setBorderTop((short) 1);
		cellStyle3.setBorderBottom((short) 1);
		cellStyle3.setBorderLeft((short) 1);
		cellStyle3.setBorderRight((short) 1);
		cellStyle3.setAlignment((short) 2);
		cellStyle3.setFillForegroundColor(IndexedColors.WHITE.getIndex());
		cellStyle3.setFillPattern((short) 1);
		cellStyle3.setVerticalAlignment((short) 1);
		cellStyle3.setFont(font);
		Sheet sheet = wb.getSheet(sheetName);
		if (sheet != null) {
			int index = wb.getSheetIndex(sheetName);
			wb.removeSheetAt(index);
		}
		sheet = wb.createSheet(sheetName);
		int colNums = 0;
		for (int i = startRow; i < datas.size() + startRow; i++) {
			Row row = sheet.createRow(i);
			List<String> rowData = datas.get(i-startRow);
//			if (colNums != rowData.size()) {
//				throw new RuntimeException(
//						"row#" + i + " wrong col number!expected " + colNums + " but actually " + rowData.size());
//			}
			for (int j = startCol; j < rowData.size() + startCol; j++) {
				Cell cell = row.createCell(j);
				String val = (rowData.get(j)).trim();
				val = val == null ? "" : val;
				if (val.length() > 1000) {
					val = val.substring(0, 1000) + "\r\n......";
				}
				if ("N".equals(val))
					cell.setCellStyle(cellStyle2);
				else {
					cell.setCellStyle(cellStyle1);
				}

				cell.setCellValue(val);
			}
		}

		for (int j = 0; j < datas.get(0).size(); j++) {
	          sheet.setColumnWidth(j, 6000);
	    }

		return wb;
	}

 public static Workbook createWorkbook(boolean isExcel2007)
   {
     Workbook wb = null;
     wb = isExcel2007 ? new XSSFWorkbook() : new HSSFWorkbook();
     return wb;
   }

 public static Workbook readExcel(String filePath)
   {
     InputStream is = null;
     Workbook wb = null;
     try {
       is = new FileInputStream(filePath);
       wb = WorkbookFactory.create(is);
     } catch (RuntimeException e) {
       throw e;
     }
     catch (Exception localException)
     {
       try {
         if (is != null)
           is.close();
       }
       catch (IOException e) {
         throw new RuntimeException("Failed to close InputStream", e);
       }
     }
     finally
     {
       try
       {
         if (is != null)
           is.close();
       }
       catch (IOException e) {
         throw new RuntimeException("Failed to close InputStream", e);
       }
     }

     return wb;
   }
时间: 2024-10-01 07:29:57

datasToWorkbook的相关文章