- A1: SomeString
- A2: 2
所有字段均设置为字符串格式。
.toString()
.我能做些什么来读取值为字符串?
发布于 2010-08-17 23:54:18
我也有同样的问题。我在读取字符串值之前执行了cell.setCellType(Cell.CELL_TYPE_STRING);
,这解决了无论用户如何格式化单元格的问题。
发布于 2011-08-18 07:26:25
当你问这个问题的时候,我不认为我们有这门课,但是今天有一个简单的答案。
您想要做的是使用DataFormatter class。您将其传递给一个单元格,它会尽力返回一个字符串,其中包含Excel将为该单元格显示的内容。如果你向它传递一个字符串单元格,你将会得到字符串。如果您向它传递一个应用了格式规则的数字单元格,它将根据这些规则格式化数字并返回给您字符串。
对于您的例子,我假设数值单元格应用了整数格式规则。如果您要求DataFormatter对这些单元格进行格式化,它将返回一个包含整数字符串的字符串。
此外,请注意,许多人建议使用cell.setCellType(Cell.CELL_TYPE_STRING)
,但Apache POI JavaDocs quite clearly state that you shouldn't do this!执行setCellType
调用将丢失格式,因为javadocs explain转换为剩余格式的字符串的唯一方法是使用DataFormatter class。
使用这个类的一个简单示例:
DataFormatter dataFormatter = new DataFormatter();
String formattedCellStr = dataFormatter.formatCellValue(cell);
发布于 2014-07-02 22:37:47
下面的代码适用于任何类型的单元格。
InputStream inp =getClass().getResourceAsStream("filename.xls"));
Workbook wb = WorkbookFactory.create(inp);
DataFormatter objDefaultFormat = new DataFormatter();
FormulaEvaluator objFormulaEvaluator = new HSSFFormulaEvaluator((HSSFWorkbook) wb);
Sheet sheet= wb.getSheetAt(0);
Iterator<Row> objIterator = sheet.rowIterator();
while(objIterator.hasNext()){
Row row = objIterator.next();
Cell cellValue = row.getCell(0);
objFormulaEvaluator.evaluate(cellValue); // This will evaluate the cell, And any type of cell will return string value
String cellValueStr = objDefaultFormat.formatCellValue(cellValue,objFormulaEvaluator);
}
https://stackoverflow.com/questions/1072561
复制相似问题