我使用 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 表并上传时才会出现问题。
请建议插入日期单元格所需的方法。
答案 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]));