示例#1
0
  public List<String> readExcel(String zh) throws IOException {
    List<String> values = new ArrayList<String>();
    FileInputStream fise = new FileInputStream(excelPath);
    HSSFWorkbook wb = new HSSFWorkbook(fise);
    Sheet sheet3 = wb.getSheetAt(1);
    Row r = null;
    int linenum = 0;
    Cell cell = null;
    for (int i = 8; i < sheet3.getPhysicalNumberOfRows(); i++) {
      r = sheet3.getRow(i);
      cell = r.getCell(3);
      if (cell.toString().contains(zh)) {
        linenum = i;
        break;
      }
    }

    r = sheet3.getRow(linenum);
    String value = null;
    for (int i = 15; i <= 21; i++) {
      cell = r.getCell(i);
      if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
        HSSFDataFormatter df = new HSSFDataFormatter();
        String cellf = df.formatCellValue(cell);
        value = cellf;
      } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
        value = cell.getStringCellValue();
      } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
        value = "0";
      }
      values.add(value);
    }

    cell = r.getCell(24);
    if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
      HSSFDataFormatter df = new HSSFDataFormatter();
      String cellf = df.formatCellValue(cell);
      value = cellf;
    } else if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
      value = cell.getStringCellValue();
    } else if (cell.getCellType() == HSSFCell.CELL_TYPE_BLANK) {
      value = "0";
    }
    values.add(value);
    // System.out.println(values);
    return values;
  }
 private String[] rowToStringArray(Row row) {
   stringCache.clear();
   for (Cell cell : CollectionUtils.asIterable(row.iterator())) {
     while (stringCache.size() < cell.getColumnIndex()) stringCache.add(""); // handle empty cells
     stringCache.add(formatter.formatCellValue(cell, evaluator));
   }
   return stringCache.toArray(new String[stringCache.size()]);
 }
  /**
   * Formats the given numeric of date Cell's contents as a String, in as close as we can to the way
   * that Excel would do so. Uses the various format records to manage this.
   *
   * <p>TODO - move this to a central class in such a way that hssf.usermodel can make use of it too
   */
  public String formatNumberDateCell(CellValueRecordInterface cell) {
    double value;
    if (cell instanceof NumberRecord) {
      value = ((NumberRecord) cell).getValue();
    } else if (cell instanceof FormulaRecord) {
      value = ((FormulaRecord) cell).getValue();
    } else {
      throw new IllegalArgumentException("Unsupported CellValue Record passed in " + cell);
    }

    // Get the built in format, if there is one
    int formatIndex = getFormatIndex(cell);
    String formatString = getFormatString(cell);

    if (formatString == null) {
      return _defaultFormat.format(value);
    }
    // Format, using the nice new
    // HSSFDataFormatter to do the work for us
    return _formatter.formatRawCellContents(value, formatIndex, formatString);
  }
  /** Retrieves the text contents of the file */
  public String getText() {
    StringBuffer text = new StringBuffer();

    // We don't care about the difference between
    //  null (missing) and blank cells
    _wb.setMissingCellPolicy(HSSFRow.RETURN_BLANK_AS_NULL);

    // Process each sheet in turn
    for (int i = 0; i < _wb.getNumberOfSheets(); i++) {
      HSSFSheet sheet = _wb.getSheetAt(i);
      if (sheet == null) {
        continue;
      }

      if (_includeSheetNames) {
        String name = _wb.getSheetName(i);
        if (name != null) {
          text.append(name);
          text.append("\n");
        }
      }

      // Header text, if there is any
      if (_includeHeadersFooters) {
        text.append(_extractHeaderFooter(sheet.getHeader()));
      }

      int firstRow = sheet.getFirstRowNum();
      int lastRow = sheet.getLastRowNum();
      for (int j = firstRow; j <= lastRow; j++) {
        HSSFRow row = sheet.getRow(j);
        if (row == null) {
          continue;
        }

        // Check each cell in turn
        int firstCell = row.getFirstCellNum();
        int lastCell = row.getLastCellNum();
        if (_includeBlankCells) {
          firstCell = 0;
        }

        for (int k = firstCell; k < lastCell; k++) {
          HSSFCell cell = row.getCell(k);
          boolean outputContents = true;

          if (cell == null) {
            // Only output if requested
            outputContents = _includeBlankCells;
          } else {
            switch (cell.getCellType()) {
              case HSSFCell.CELL_TYPE_STRING:
                text.append(cell.getRichStringCellValue().getString());
                break;
              case HSSFCell.CELL_TYPE_NUMERIC:
                text.append(_formatter.formatCellValue(cell));
                break;
              case HSSFCell.CELL_TYPE_BOOLEAN:
                text.append(cell.getBooleanCellValue());
                break;
              case HSSFCell.CELL_TYPE_ERROR:
                text.append(ErrorEval.getText(cell.getErrorCellValue()));
                break;
              case HSSFCell.CELL_TYPE_FORMULA:
                if (!_shouldEvaluateFormulas) {
                  text.append(cell.getCellFormula());
                } else {
                  switch (cell.getCachedFormulaResultType()) {
                    case HSSFCell.CELL_TYPE_STRING:
                      HSSFRichTextString str = cell.getRichStringCellValue();
                      if (str != null && str.length() > 0) {
                        text.append(str.toString());
                      }
                      break;
                    case HSSFCell.CELL_TYPE_NUMERIC:
                      HSSFCellStyle style = cell.getCellStyle();
                      if (style == null) {
                        text.append(cell.getNumericCellValue());
                      } else {
                        text.append(
                            _formatter.formatRawCellContents(
                                cell.getNumericCellValue(),
                                style.getDataFormat(),
                                style.getDataFormatString()));
                      }
                      break;
                    case HSSFCell.CELL_TYPE_BOOLEAN:
                      text.append(cell.getBooleanCellValue());
                      break;
                    case HSSFCell.CELL_TYPE_ERROR:
                      text.append(ErrorEval.getText(cell.getErrorCellValue()));
                      break;
                  }
                }
                break;
              default:
                throw new RuntimeException("Unexpected cell type (" + cell.getCellType() + ")");
            }

            // Output the comment, if requested and exists
            HSSFComment comment = cell.getCellComment();
            if (_includeCellComments && comment != null) {
              // Replace any newlines with spaces, otherwise it
              //  breaks the output
              String commentText = comment.getString().getString().replace('\n', ' ');
              text.append(" Comment by " + comment.getAuthor() + ": " + commentText);
            }
          }

          // Output a tab if we're not on the last cell
          if (outputContents && k < (lastCell - 1)) {
            text.append("\t");
          }
        }

        // Finish off the row
        text.append("\n");
      }

      // Finally Footer text, if there is any
      if (_includeHeadersFooters) {
        text.append(_extractHeaderFooter(sheet.getFooter()));
      }
    }

    return text.toString();
  }