POI读取Excel到数据库
扫描二维码
随时随地手机看文章
新入职后,接手的第一个任务是将excel中的数据录入数据库,这里总结一下。
public String excelInput() throws Exception { InputStream is = new FileInputStream("D://model.xlsx"); XSSFWorkbook hssfWorkbook = new XSSFWorkbook(is); DeviceInfo deviceInfo; Listlist = new ArrayList(); // 循环工作表Sheet for (int numSheet = 0; numSheet < hssfWorkbook.getNumberOfSheets(); numSheet++) { XSSFSheet xssfSheet = hssfWorkbook.getSheetAt(numSheet); if (xssfSheet == null) { continue; } // 循环行Row for (int rowNum = 1; rowNum <= xssfSheet.getLastRowNum(); rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); if (xssfRow != null) { deviceInfo = new DeviceInfo(); XSSFCell did = xssfRow.getCell(0); XSSFCell didSn = xssfRow.getCell(1); deviceInfo.setDid(String.valueOf(did)); deviceInfo.setDidSn(String.valueOf(didSn)); //将数据以对象形式插入数据库 deviceDao.insertDeviceSelective(deviceInfo); } } } }
1, 对于类似电话号码或手机一类的大数值读取问题
// 取值后会带一个E的问题 double cellValue = row.getCell(k).getNumericCellValue(); fieldValues[k] = new DecimalFormat("#").format(cellValue);
2, 对于数值型单元的纯数值和日期型的处理
case HSSFCell.CELL_TYPE_NUMERIC: // 数值型 if (HSSFDateUtil.isCellDateFormatted(cell)) { // 如果是date类型则 ,获取该cell的date值 value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); } else { // 纯数字 value = String.valueOf(cell.getNumericCellValue()); }