我使用selenium - Java自动化脚本将数据插入到xlsx Excel文件中。使用“apache”并将相同的文件上传到应用程序中。
但是在上传错误上传的“date values ”之后,总是显示'12/30/1899‘而不是Excel工作表中的原始值。所有剩余的数据从工作表上传是正确的。
下面是我用来将数据插入xlsx文件的代码:
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表格并上传时才会出现问题。
请建议插入日期单元格所需的方式。
发布于 2017-02-02 11:11:23
找到了解决办法:-
黑翼,谢谢你的建议,但没有运气
最后,通过将日期转换为数字、打开excel工作表并将所需日期输入单元格来解决此问题,然后选择相同的单元格单击Ctrl+1打开“格式单元格”窗口并切换到“常规”选项卡,在该选项卡中可以找到重新分配到excel中指定日期的数字。
最后,我的自动化脚本输入'28856‘这个数字到excel并上传文件,然后'28856’号代表日期'01/01/1979‘在应用程序中显示。
这是样本代码-
//创建单元
细胞= row.createCell(j);
//设置值“28856”,表示“01/01/1979”日期,如
required number (after converting from date to number)
cell.setCellValue("28856");
发布于 2017-02-01 14:14:28
我相信你必须转换你的变量到目前为止:
cell.setCellValue(new Date(arr[j2]));
https://stackoverflow.com/questions/41981470
复制相似问题