Пример #1
0
 /** 从Excel导入到TableBean */
 public void doImport() {
   int rowNum = sheet.getLastRowNum() + 1;
   int columnNum = 0;
   for (int i = 0; i < rowNum; i++) {
     if (sheet.getRow(i) != null) {
       int last = sheet.getRow(i).getLastCellNum();
       columnNum = last > columnNum ? last : columnNum;
     }
   }
   tableBean = new TableBean(rowNum, columnNum);
   Collection<CellBean> cellBeans = new ArrayList<CellBean>();
   for (int r = startRow; r < rowNum; r++) {
     Row row = sheet.getRow(r);
     if (row != null) {
       for (int c = 0; c < row.getLastCellNum(); c++) {
         Cell cell = row.getCell(c);
         if (cell != null) {
           cell.setCellType(Cell.CELL_TYPE_STRING);
           Integer type = forceCellType.get(c);
           if (type != null) {
             cell.setCellType(type);
           }
           String cellValue = null;
           if (Cell.CELL_TYPE_BOOLEAN == cell.getCellType()) {
             cellValue = cell.getBooleanCellValue() + "";
           } else if (Cell.CELL_TYPE_FORMULA == cell.getCellType()) {
             try {
               cellValue = String.valueOf(cell.getNumericCellValue());
             } catch (IllegalStateException e) {
               cellValue = String.valueOf(cell.getRichStringCellValue()).trim();
             }
           } else if (Cell.CELL_TYPE_NUMERIC == cell.getCellType()) {
             if (DateUtil.isCellDateFormatted(cell)) {
               Date date2 = cell.getDateCellValue();
               SimpleDateFormat dff = new SimpleDateFormat(dateFormat);
               cellValue = dff.format(date2); // 日期转化
             } else cellValue = String.valueOf(cell.getNumericCellValue());
           } else if (Cell.CELL_TYPE_STRING == cell.getCellType()) {
             cellValue = cell.getStringCellValue();
           }
           if (cellValue != null && cellValue instanceof String) {
             cellValue = cellValue.toString().trim();
           }
           CellBean cellBean = new CellBean(cellValue, r, c);
           cellBean.setCell(cell);
           cellBeans.add(cellBean);
         }
       }
     }
   }
   tableBean.setCellBeans(cellBeans);
 }
Пример #2
0
 /**
  * 读取内容到List,可以是List<Map>也可以是List<Object>
  *
  * @param sortedColumns 从第0列开始,数组中每个元素对应type中的一个字段,元素为空则忽略
  * @param type 读取数据存放的类型
  * @param <T> 泛型
  * @return
  */
 public <T> List<T> read(String[] sortedColumns, Class<? extends T> type) {
   List<T> list = new ArrayList();
   for (int i = startRow; i < tableBean.getRowCount(); i++) {
     Object bean =
         Map.class.isAssignableFrom(type) ? new HashMap() : Reflections.instance(type.getName());
     for (int j = 0; j < sortedColumns.length; j++) {
       String column = sortedColumns[j];
       if (ObjectHelper.isNotEmpty(column)) {
         CellBean cellBean = tableBean.getCellBean(i, j);
         if (cellBean != null) {
           Cell cell = cellBean.getCell();
           if (cell == null) {
             cell = sheet.getRow(i).createCell(j);
           }
           if (bean instanceof Map) {
             FieldUtils.setFieldValue(bean, "cell" + column, cell);
             if (ObjectHelper.isNotEmpty(cellBean.getContent())) {
               FieldUtils.setFieldValue(bean, column, cellBean.getContent());
             }
           } else {
             if (bean instanceof BaseExcelVo) {
               BaseExcelVo baseExcelVo = ((BaseExcelVo) bean);
               baseExcelVo.setCell(column, cell);
               baseExcelVo.setRow(i);
               baseExcelVo.setCol(j);
             }
             Field accessibleField = Reflections.getAccessibleField(bean, column);
             Class<?> fieldType = accessibleField.getType();
             Object value = cellBean.getContent();
             if (!fieldType.equals(String.class)) {
               value = ConverString.asType(fieldType, cellBean.getContent());
             }
             if (ObjectHelper.isNotEmpty(cellBean.getContent())) {
               FieldUtils.setFieldValue(bean, column, value);
             }
           }
         }
       }
     }
     list.add((T) bean);
   }
   return list;
 }