首页 文章

继续从excel而不是1/1/1979上传日期12/30/1899

提问于
浏览
1

我使用selenium - Java自动化脚本将数据插入到xlsx Excel文件中 . 使用'apache poi'并将相同的文件上传到应用程序中 .

但上传错误上传的' date values '后,始终显示 '12/30/1899 '而不是Excel工作表中的原始值 . 工作表中的所有剩余数据都已正确上传 .

这是代码,我用来将数据插入到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();

Note :手动插入数据和上传时,工作正常 . 自动化脚本将数据插入Excel工作表并上传时才出现问题 .

请建议插入日期单元格所需的方法 .

2 回答

  • 0

    得到了解决方案: -

    Darkwing,谢谢你的建议,但没有运气

    最后,通过将日期转换为数字来解决此问题,执行此打开的Excel工作表并在单元格中输入所需的日期,然后选择相同的单元格单击Ctrl 1打开“单元格格式”窗口并切换到“常规”选项卡,您可以在其中找到这个数字是指excel中给出的日期 .

    最后,我的自动化脚本将此数字输入'28856'到excel和上传文件中,然后'28856'数字表示日期'01 / 01/1979'在应用程序中显示正确

    以下是示例代码 -

    //创建单元格

    cell = row.createCell(j);

    //设置值'28856'表示'01/01/1979' date,就像给你的一样
    所需数量(从日期转换为数字后)

    cell.setCellValue( “28856”);

  • 1

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

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

相关问题