我用pl/sql将数据库中的数据先导出到了cvs文件中,
然后用excel打开另存为一个.xls的excel文件。
问题就出现了,导出数据中的身份证号等excel就会转成指数形式,这样就造成了身份证号后几位的值丢失。
cvs文件用记事本打开的时候里面的数据还是正确的,另存为excel就出错了。
有没有什么办法取到完整的数据?
- Java code
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Cell;import org.apache.poi.ss.usermodel.DateUtil;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.ss.usermodel.WorkbookFactory;import org.apache.poi.xssf.usermodel.XSSFCell;import org.apache.poi.xssf.usermodel.XSSFRow;import org.apache.poi.xssf.usermodel.XSSFSheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;
- Java code
if (file.getName().endsWith(".xls")) { FileInputStream fis = null; try { fis = new FileInputStream(file); Workbook wb = WorkbookFactory.create(fis); int numberOfSheets = wb.getNumberOfSheets(); for (int i = 0; i < numberOfSheets; i++) { Sheet sheet = wb.getSheetAt(i); if(sheet == null){ continue; } Row firstRow = sheet.getRow(0); int lastRowNum = sheet.getLastRowNum(); for (int j = 0; j <= lastRowNum; j++) { if(j == 0){ continue; } Map<String, String> rowData = new HashMap<String, String>(); Row row = sheet.getRow(j); short lastCellNum = row.getLastCellNum(); for (int k = 0; k < lastCellNum; k++) { Cell cell = row.getCell(k); if(cell == null){ continue; } String value= null; int cellType = cell.getCellType(); switch(cellType){ case Cell.CELL_TYPE_BLANK: break; case Cell.CELL_TYPE_BOOLEAN: value = String.valueOf(cell.getBooleanCellValue()); break; case Cell.CELL_TYPE_ERROR: value = String.valueOf(cell.getErrorCellValue()); break; case Cell.CELL_TYPE_NUMERIC: if(DateUtil.isCellDateFormatted(cell)){ value = format.format(cell.getDateCellValue()); }else{ value = String.valueOf(cell.getNumericCellValue()); } break; case Cell.CELL_TYPE_STRING: value = cell.getStringCellValue(); break; default:break; } Cell cellOfFirstRow = firstRow.getCell(k); if(cellOfFirstRow != null){ rowData.put(cellOfFirstRow.getStringCellValue(), value); } } rowData.put("rowNum", String.valueOf(j)); rowData.put("reortTaskfileid", String.valueOf(reortTaskfileid)); data.add(rowData); } } } catch (Exception e) { e.printStackTrace(); } return data;