我使用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 回答
得到了解决方案: -
Darkwing,谢谢你的建议,但没有运气
最后,通过将日期转换为数字来解决此问题,执行此打开的Excel工作表并在单元格中输入所需的日期,然后选择相同的单元格单击Ctrl 1打开“单元格格式”窗口并切换到“常规”选项卡,您可以在其中找到这个数字是指excel中给出的日期 .
最后,我的自动化脚本将此数字输入'28856'到excel和上传文件中,然后'28856'数字表示日期'01 / 01/1979'在应用程序中显示正确
以下是示例代码 -
//创建单元格
cell = row.createCell(j);
//设置值'28856'表示'01/01/1979' date,就像给你的一样
所需数量(从日期转换为数字后)
cell.setCellValue( “28856”);
我相信你必须将你的变量转换为Date: