Apache POI读取xls文件时遇到问题。
test.xls包含一般类型的单元格:123,56。
测试代码:
FileInputStream myxls = new FileInputStream(path);
HSSF myworkbook = new HSSFWorkbook(myxls);
HSSF mysheet = myworkbook.getSheetAt(0);
HSSF myrow = mysheet.getRow(1);
HSSF mycell = myrow.getCell(0);
System.out.Println(mycell.toString());
输出:123.56。逗号转换为点,但我想得到结果为123,56
我尝试使用不同的方法:
mycell.getNumericCellValue(); returns 123.56
mycell.toString(); returns 123.56
mycell.getRichStringCellValue(); returns an exception
mycell.getStringCellValue(); returns an exception
我试图使用它:
static DataFormatter dataFormatter = new DataFormatter();
static String getStringValue(Cell cell) {
return dataFormatter.formatCellValue(cell);
}
但结果相同:123.56
答案 0 :(得分:2)
值保存为数字,java中的toString转换遵循程序员用点表示法。
Locale locale = new Locale(...);
String repr = String.format(locale, "%.2f", mycell.getNumericCellValue());
喜欢NumberFormat:
NumberFormat format = NumberFormat.getInstance(locale);
String repr = format.format(mycell.getNumericCellValue());
答案 1 :(得分:0)
如果你只需要输出,那么试试这个:
mycell.toString().replace(".",",")
或者您可以为您的单元格设置特定样式: Write Double value in numeric cell with specific format in Apache Poi 3.7