用Apache POI读取xls文件后,逗号转换为dot

时间:2014-12-12 08:46:41

标签: java apache-poi

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

2 个答案:

答案 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