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

时间:2017-02-01 13:51:26

标签: java excel

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

但是,在上传错误上传的“日期值”后,始终显示 '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();

注意:手动插入数据和上传时,工作正常。只有当Automation脚本将数据插入 excel 表并上传时才会出现问题。

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

2 个答案:

答案 0 :(得分:1)

得到解决方案: -

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

最后,通过将日期转换为数字来解决此问题,要打开Excel工作表并在单元格中输入所需日期,然后选择相同的单元格,请单击Ctrl + 1打开“单元格格式”窗口并切换到“常规”选项卡,在那里你可以找到参考excel中给出的日期的数字。

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

以下是示例代码 -

//创建单元格

cell = row.createCell(j);

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

cell.setCellValue( “28856”);

答案 1 :(得分:0)

我相信您必须将您的变量转换为日期:

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