我的 Excel 文件有電話號碼和整數,如 0772354573 和 56674,但我的輸出就像 07723545E9 和 56674.0,相反,我需要我的輸出像在 Excel 中定義的那樣,如 0772354573 和 56674。下面是我從外部源下載的 Getcell 數據類。public String getCellData(String sheetName,String colName,int rowNum){ try{ if(rowNum <=0) return ""; int index = workbook.getSheetIndex(sheetName); int col_Num=-1; if(index==-1) return ""; sheet = workbook.getSheetAt(index); row=sheet.getRow(0); for(int i=0;i<row.getLastCellNum();i++){ //System.out.println(row.getCell(i).getStringCellValue().trim()); if(row.getCell(i).getStringCellValue().trim().equals(colName.trim())) col_Num=i; } if(col_Num==-1) return ""; sheet = workbook.getSheetAt(index); row = sheet.getRow(rowNum-1); if(row==null) return ""; cell = row.getCell(col_Num); if(cell==null) return ""; //System.out.println(cell.getCellType()); if(cell.getCellType()==CellType.STRING) return cell.getStringCellValue(); else if(cell.getCellType()==CellType.NUMERIC || cell.getCellType()==CellType.FORMULA ){ String cellText = String.valueOf(cell.getNumericCellValue()); if (HSSFDateUtil.isCellDateFormatted(cell)) { // format in form of M/D/YY double d = cell.getNumericCellValue(); Calendar cal =Calendar.getInstance(); cal.setTime(HSSFDateUtil.getJavaDate(d)); cellText = (String.valueOf(cal.get(Calendar.YEAR))).substring(2); cellText = cal.get(Calendar.DAY_OF_MONTH) + "/" + cal.get(Calendar.MONTH)+1 + "/" + cellText; //System.out.println(cellText); }
2 回答

皈依舞
TA貢獻1851條經驗 獲得超3個贊
如果您存儲長整數值,則 excel 將壓縮并存儲它們,因此您將看到如下值:
如果您不想將值存儲為整數,或者如果您想按原樣存儲/檢索值,并且如果您不想更改代碼,那么您可以執行以下操作:
在上面的數字前附加一個'
符號。例如,如果數字是118995099890796
那么你這樣做'118995099890796
。這意味著,它會將其視為字符串,您可以使用getStringCellValue()
方法讀取該值。
我希望它有幫助...

隔江千里
TA貢獻1906條經驗 獲得超10個贊
艱難并不理想,但我建議在讀取單元格值之前將數字單元格轉換為字符串單元格。然后將 value 解析為 int 值;
if(cell.getCellType()==CellType.NUMERIC) {
cell.setCellType(Cell.CELL_TYPE_STRING);
String cellValue=cell.getStringCellValue();
int numericValue=Integer.parseInt(cellValue);
}
添加回答
舉報
0/150
提交
取消