首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >继续从excel上传日期为1899年12月30日,而不是1979年1月1日。

继续从excel上传日期为1899年12月30日,而不是1979年1月1日。
EN

Stack Overflow用户
提问于 2017-02-01 13:51:25
回答 2查看 143关注 0票数 1

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

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

下面是我用来将数据插入xlsx文件的代码:

代码语言:javascript
运行
复制
    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表格并上传时才会出现问题。

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

EN

回答 2

Stack Overflow用户

发布于 2017-02-02 11:11:23

找到了解决办法:-

黑翼,谢谢你的建议,但没有运气

最后,通过将日期转换为数字、打开excel工作表并将所需日期输入单元格来解决此问题,然后选择相同的单元格单击Ctrl+1打开“格式单元格”窗口并切换到“常规”选项卡,在该选项卡中可以找到重新分配到excel中指定日期的数字。

最后,我的自动化脚本输入'28856‘这个数字到excel并上传文件,然后'28856’号代表日期'01/01/1979‘在应用程序中显示。

这是样本代码-

//创建单元

细胞= row.createCell(j);

//设置值“28856”,表示“01/01/1979”日期,如

代码语言:javascript
运行
复制
  required number (after converting from date to number)

cell.setCellValue("28856");

票数 1
EN

Stack Overflow用户

发布于 2017-02-01 14:14:28

我相信你必须转换你的变量到目前为止:

代码语言:javascript
运行
复制
cell.setCellValue(new Date(arr[j2]));                 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41981470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档