继续从excel而不是1979年1月1日上传date12/30/1899

我已经使用selenium将数据插入xlsx Excel文件 – Java自动化脚本。 使用“ apache poi ”并将相同的file upload到应用程序中。

但是在上传错误地上传了“ date值 ”之后,总是在Excel工作表中显示“ 12/30/1899 ”而不是原始值。 来自工作表的所有剩余数据上传正确。

这里是代码,我用来将数据插入到xlsx excel文件中:

try{ File myFile = new File("C:\\Users\\8024_Dependent_Export(4).xlsx"); FileInputStream fis = new FileInputStream(myFile); XSSFWorkbook myWorkBook = new XSSFWorkbook (fis); XSSFSheet mySheet = myWorkBook.getSheetAt(0); int rownum = mySheet.getLastRowNum(); int noOfColumns = mySheet.getRow(0).getLastCellNum(); int rowcount=0; for (int i = 0; i < rownum; i++) { rowcount++; Row row1 = mySheet.getRow(i); if(row1!=null) { Cell cell1 = row1.getCell(1); if(cell1!=null) if(cell1.getStringCellValue().equalsIgnoreCase("EE Ref")) { break; } } } for (int i = 0; i<3; i++) { Cell cell; int temp = 0; Row row = mySheet.createRow(rowcount+i); String[]arr=strings[i]; for(int j=0;j<14-3;j++){ if(j==0||j==3||j==7) continue; for (int j2 = temp; j2 < arr.length; j2++) { if(j==10){ CellStyle cellStyle = myWorkBook.createCellStyle(); CreationHelper createHelper = myWorkBook.getCreationHelper(); cellStyle.setDataFormat(createHelper.createDataFormat().getFormat("m/d/yyyy")); cell = row.createCell(j); cell.setCellValue(arr[j2]); cell.setCellStyle(cellStyle); }else{ cell = row.createCell(j); cell.setCellValue(arr[j2].toString()); } temp++; break; } } } FileOutputStream os = new FileOutputStream("C:\\Users\\8024_Dependent_Export(4).xlsx"); myWorkBook.write(os); os.close(); 

注意 :手动插入数据和上传时,它工作正常。 只有自动化脚本插入数据到excel表单和上传时出现问题。

请build议插入date单元格的方法。

得到的解决scheme: –

黑翼,感谢您的build议,但没有运气

最后,通过将date转换为数字来解决这个问题,为此打开excel工作表并将所需dateinput到单元格中,然后select相同的单元格,单击Ctrl + 1打开“格式单元格”窗口并切换到常规选项卡,您可以在其中find在Excel中给定的date。

最后,我的自动化脚本在excel和上传的文件中input了“28856”这个数字,然后'28856'数字代表'01/01/01'

这里是示例代码 –

//创build单元格

cell = row.createCell(j);

//设置代表'01 / 01/1979'date的值'28856',就像给你的
所需号码(从date转换为号码后)

cell.setCellValue( “28856”);

我相信你必须将你的variables转换为Date:

 cell.setCellValue(new Date(arr[j2]));