从Excel中读取列值作为string返回为十进制?
我有一个要求读取Excel文件特定的列值。
我无法读取它们的单元格值。
我的代码是
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.usermodel.Workbook; public class ExcelSheetColumn { public static void main(String[] args) throws InvalidFormatException, FileNotFoundException, IOException { Workbook wb = WorkbookFactory.create(new FileInputStream("C:/Users/Pradeep.HALCYONTEKDC/Desktop/My Data/ExcelFiles/XLS1.xls")); Sheet sheet = wb.getSheet("Retail - All"); Row row=null; Cell cell ; for (int j=0; j< sheet.getLastRowNum()+1; j++) { row = sheet.getRow(j); cell = row.getCell(0); if(cell!=null) { int type = cell.getCellType(); if (type == HSSFCell.CELL_TYPE_STRING) System.out.println(cell.getRichStringCellValue().toString()); else if (type == HSSFCell.CELL_TYPE_NUMERIC) System.out.println(cell.getNumericCellValue()); else if (type == HSSFCell.CELL_TYPE_BOOLEAN) System.out.println( cell.getBooleanCellValue()); else if (type == HSSFCell.CELL_TYPE_BLANK) System.out.println(cell.getColumnIndex() + "] = BLANK CELL"); } } } }
Excel列的值是
79 999861 999861 https://staging.adpcreditsolutions.com /index/contract_decision 9200278 2011/01/17 79 5032944200 IL4-PCC@TEST.COM 1979/12/31 0.00 0.00
但是我得到的输出是
79.0 999861.0 999861.0 https://staging.adpcreditsolutions.com /index/contract_decision 9200278.0 17-Jan-2011 79.0 5.0329442E9 IL4-PCC@TEST.COM 31-Dec-1979 0.0 0.0
如何阅读代码我上面的程序读取excel列值,因为它们是? 请帮帮我!!
if (type == HSSFCell.CELL_TYPE_NUMERIC) { String stringValue=""+cell.getNumericCellValue(); String[] splitValue=stringValue.split(".0"); System.out.println(splitValue[0]); }
System.out.println(cell.toString());//here is the problem
toString()方法返回object
的string表示forms。 通常,toString方法返回一个“ 文本表示 ”这个object
的string。
使用cell.getStringCellValue()
代替
cell.toString()
propor使用需要。
对于数字值你必须使用
getNumericCellValue()并在那里放置一个条件
if(cell!=null) { int type = cell.getCellType(); if (type == HSSFCell.CELL_TYPE_STRING) System.out.println(cell.getRichStringCellValue().toString()); else if (type == HSSFCell.CELL_TYPE_NUMERIC) String[] splits = String.valueOf(cell.getNumericCellValue()).split("."); System.out.println(splits[0]); else if (type == HSSFCell.CELL_TYPE_BOOLEAN) System.out.println( cell.getBooleanCellValue()); else if (type == HSSFCell.CELL_TYPE_BLANK) System.out.println(cell.getColumnIndex() + "] = BLANK CELL"); }
您不能从数字字段中读取string值。 它抛出exception。