Java中的XSSFWorkbook

时间:2019-08-09 03:08:59

标签: java apache-poi xssf

我正在使用XSSFWorkbook读取Excel工作表数据。当我输入10位数字后有空格的数字时,要在保存之前删除数字后的空格。但是trim(),replaceAll()-所有这些都不能删除空格。使用currentCell.getStringCellValue()提取后,如何从字符串“ 99999999”中删除空格。

尝试使用trim(),replaceAll()方法以及stringUtils.trim()

phoneNumber = currentCell.getStringCellValue()。replaceAll(“”,“”);                             System.out.println(phoneNumber);

预期是:要删除字符串“ 99999”后的空格为“ 99999”

没有错误消息,但我期望使用所有提到的方法后得到“ 99999”,但得到“ 99999”。

3 个答案:

答案 0 :(得分:2)

也许99999后面的字符不是默认的空格,而是其他水平的空白字符,例如不间断空格。

您可以按照此答案https://stackoverflow.com/a/28295733/3915431中所述修剪所有这样的水平空白字符。

使用apache poi来读取Excel的完整示例:

import java.io.FileInputStream;
import org.apache.poi.ss.usermodel.*;

class ReadExcel {

 public static void main(String[] args) throws Exception {

  Workbook workbook  = WorkbookFactory.create(new FileInputStream("SAMPLE.xlsx"));
  DataFormatter dataFormatter = new DataFormatter();
  CreationHelper creationHelper = workbook.getCreationHelper();
  FormulaEvaluator formulaEvaluator = creationHelper.createFormulaEvaluator();

  Sheet sheet = workbook.getSheetAt(0);

  for (Row row : sheet) {
   for (Cell cell : row) {
    String cellContent = dataFormatter.formatCellValue(cell, formulaEvaluator);
    System.out.println("|"+cellContent+"|");
    cellContent = cellContent.trim(); // trims only default white-space
    System.out.println("|"+cellContent+"|");
    cellContent = cellContent.replaceAll("(^\\h*)|(\\h*$)",""); // trims all horizontal white-space characters
    System.out.println("|"+cellContent+"|");
   }
  }

  workbook.close();

 }
}

答案 1 :(得分:1)

我尝试使用简单的Java类重现您的问题,但失败了。 字符串的trim()方法工作正常。我相信您的代码中还有其他内容。这是我的简单测试。

class Scratch {
    public static void main(String[] args) {
        String phoneNumber = "99999999999 ";
        System.out.println("before trim = " + phoneNumber.length());

        phoneNumber = phoneNumber.trim();
        System.out.println("after trim = " + phoneNumber.length());
    }
}

结果

before trim = 12
after trim = 11

答案 2 :(得分:0)

尝试使用tostring,然后尝试下面的代码。

Cell currentCell;

if(currentCell.getCellTypeEnum() == CellType.STRING) {
    String phoneNumber = currentCell.toString().trim();
    System.out.println(phoneNumber);
}