从Excel读取数值数据时POI附加.0

我正在使用POI HSSF读取excel数据,并且正在使用JUnit根据数据库proc RefCursor检查数据。

将来自Refcursor的数字数据(例如100)与excel工作表100中的数据进行比较时,Junit测试失败,但由于POI将其读取为100.0,因此Junit测试失败。

        InputStream fileInputStream = Testdb.class.getClassLoader().getResourceAsStream(fileName);

//retrieve number of columns and rows

int numRows=0, numCols=0, i, j, minColIndex=0, maxColIndex=0;

POIFSFileSystem fsFileSystem = new POIFSFileSystem(fileInputStream);

HSSFWorkbook workBook = new HSSFWorkbook(fsFileSystem);

HSSFSheet hssfSheet = workBook.getSheetAt(0);

Iterator rowIterator = hssfSheet.rowIterator();

while (rowIterator.hasNext())

{

numRows++;

HSSFRow hssfRow = (HSSFRow) rowIterator.next();

Iterator iterator = hssfRow.cellIterator();

List cellTempList = new ArrayList();

if (numRows == 1)

{

minColIndex = hssfRow.getFirstCellNum();

maxColIndex = hssfRow.getLastCellNum();

numCols = maxColIndex;

}

for(int colIndex = minColIndex; colIndex < maxColIndex; colIndex++)

{

HSSFCell hssfCell = hssfRow.getCell(colIndex);

cellTempList.add(hssfCell);

}

cellDataList.add(cellTempList);

}

String expected[][] = new String[numRows][numCols];

String[] tableColumns = new String[numCols];

System.out.println("Rows : " + numRows + "Columns : " + numCols);

System.out.println("Min Col Index : " +minColIndex + "Max Col Index : " + maxColIndex);

for (i=0; i<numRows; i++)

{

List cellTempList = (List) cellDataList.get(i);

for (j=0; j < numCols; j++)

{

HSSFCell hssfCell = (HSSFCell) cellTempList.get(j);

if (i == 0)

{

tableColumns[j] = hssfCell.toString();

System.out.print(tableColumns[j] + "\t");

}

else

{

if(hssfCell != null)

{

expected[i-1][j] = hssfCell.toString();

}

else

{

expected[i-1][j] = null;

}

System.out.print(expected[i-1][j] + "\t");

}

}

System.out.println();

}

这是我正在构建的通用框架程序,因此该框架应该足够智能以忽略“ .0”。关于如何解决这个问题的任何投入?

回答:

答案与我在这里给出的答案相同:

POI为您提供Excel已存储在文件中的确切值。通常,如果您在Excel单元格中写入数字,Excel会将其存储为带有格式的数字。POI为您提供了格式化所需的支持(大多数人不愿意-

他们希望数字为数字,以便他们可以使用它们)

您要查找的类是DataFormatter。您的代码将类似于

 DataFormatter fmt = new DataFormatter();

for (Row r : sheet) {

for (Cell c : r) {

CellReference cr = new CellRefence(c);

System.out.println("Cell " + cr.formatAsString() + " is " +

fmt.formatCellValue(c) );

}

}

以上是 从Excel读取数值数据时POI附加.0 的全部内容, 来源链接: utcz.com/qa/416045.html

回到顶部