Java Selenium将Web表与Excel数据进行比较
我需要将Web表与下载的excel文件进行比较。 Excel数据具有Excel格式的数值(例如523010735055.256,格式为Excel$523011)。 我需要用UI值验证$523011。 我怎样才能使这两张桌子相等呢。 参考图像[1]:“图像” 我已经使用了DataFormatter,正如大多数其他帖子针对类似问题所建议的那样。但它不起作用 我已经找到了解决这个问题的其他方法,而不必担心Java Selenium将Web表与Excel数据进行比较,java,selenium,selenium-webdriver,apache-poi,Java,Selenium,Selenium Webdriver,Apache Poi,我需要将Web表与下载的excel文件进行比较。 Excel数据具有Excel格式的数值(例如523010735055.256,格式为Excel$523011)。 我需要用UI值验证$523011。 我怎样才能使这两张桌子相等呢。 参考图像[1]:“图像” 我已经使用了DataFormatter,正如大多数其他帖子针对类似问题所建议的那样。但它不起作用 我已经找到了解决这个问题的其他方法,而不必担心 switch (cell.getCellType()) {
switch (cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
cell.getNumericCellValue();
String value = formatter.formatCellValue(cell);
System.out.print(value + " ");
break;
我如何以下面的方式更改上述代码
String val1 = null;
Double numvalue1 = cell.getNumericCellValue();
Long longValue1 = numvalue1.longValue();
val1 = new String(longValue1.toString());
BigDecimal convertres1 = new BigDecimal(val1);
String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
代码waitForElementPresent(驱动程序,30,mstrframe) POI更改为4.1.0
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
// Check the cell type and format accordingly
switch (cell.getCellType()) {
case NUMERIC:
cell.getNumericCellValue();
String value =formatter.formatCellValue(cell);
System.out.print(value + " ");
break;
case STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
default:
break;
}
}
System.out.println("");
}
感谢@AxcelRicher提供的所有反馈。 在这种情况下,Dataformatter不起作用 我将使用下面的代码来解决这个问题
switch (cell.getCellType()) {
case NUMERIC:
//cell.getNumericCellValue();
Double value= cell.getNumericCellValue();
Long longValue1 = value.longValue();
String val1 = new String(longValue1.toString());
BigDecimal convertres1 = new BigDecimal(val1);
String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
System.out.print(aarwavalue1 + "\t ");
break;
case STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
default:
break;
感谢@AxcelRicher提供的所有反馈。 在这种情况下,Dataformatter不起作用 我将使用下面的代码来解决这个问题
switch (cell.getCellType()) {
case NUMERIC:
//cell.getNumericCellValue();
Double value= cell.getNumericCellValue();
Long longValue1 = value.longValue();
String val1 = new String(longValue1.toString());
BigDecimal convertres1 = new BigDecimal(val1);
String aarwavalue1 = (convertres1.divide(new BigDecimal("1000000")).setScale(0, RoundingMode.FLOOR) + "");
System.out.print(aarwavalue1 + "\t ");
break;
case STRING:
System.out.print(cell.getStringCellValue() + " ");
break;
default:
break;
如果使用了正数、负数、零和/或文本的多个模式,并且没有给出所有四个子模式,则数据格式化程序在最后一个子模式后似乎需要一个分号 示例:
正数格式;负数格式;零格式;文本格式
有效,但正数格式;负数格式
无效,需要是正数格式;负数格式;
。请注意负数模式后的分号卢比
这与Excel
不同,因为这里不需要最后一个分号
如果我们知道这一点,我们可以做到以下几点:
图纸示例:
Excel
中的数字格式模式是“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、”)
代码:
结果:
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat
Data Grouping Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M)
Credit Risk $ 772.314 $ 913.546 $ 812.453
Available For Sale ($ 685.104) $ 800.603 $ 830.131
Contingent $ 509.480 $ 524.524 ($ 629.797)
Total $ 596.689 $ 2.238.674 $ 1.012.786
如果使用了正数、负数、零和/或文本的多个模式,并且没有给出所有四个子模式,则数据格式化程序在最后一个子模式后似乎需要一个分号 示例:
正数格式;负数格式;零格式;文本格式
有效,但正数格式;负数格式
无效,需要是正数格式;负数格式;
。请注意负数模式后的分号卢比
这与Excel
不同,因为这里不需要最后一个分号
如果我们知道这一点,我们可以做到以下几点:
图纸示例:
Excel
中的数字格式模式是“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、“$”、”)
代码:
结果:
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat
Data Grouping Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M)
Credit Risk $ 772.314 $ 913.546 $ 812.453
Available For Sale ($ 685.104) $ 800.603 $ 830.131
Contingent $ 509.480 $ 524.524 ($ 629.797)
Total $ 596.689 $ 2.238.674 $ 1.012.786
刚刚测试。
apache-poi的DataFormatter
版本4.1.0
支持formatCode=“\$\\\\\\\\\\\\\\\”0,“
。所以这个问题对我来说是不可复制的。@Axel Richer请使用DataFormatter
阅读编辑过的代码是正确的方法。正如我所说的那样,DataFormatter
适用于数字523010735055.256,在excel中使用$#,##0,
格式模式,显示为$523011。然后formatter.FormatterValue(单元格)
为该单元格精确生成“$523011”。@AxelRichter当我更改为poi 4.1.0时,我正在使用poi 3.17,如果(cell.getCellType()==HSSFCell.cell\u TYPE\u STRING)“单元格\u TYPE\u STRING无法重新绘制”,我的框架中会出现错误我怎么能过来this@AxelRichter我已经解决了更改为4.1.0的所有问题,但数据格式化程序仍不能使用刚刚测试过的4.1.0版本。apachepoi的DataFormatter
version4.1.0
支持formatCode=“\$\\\\\\\,”
。所以这个问题对我来说是不可复制的。@Axel Richer请使用DataFormatter
阅读编辑过的代码是正确的方法。正如我所说的那样,DataFormatter
适用于数字523010735055.256,在excel中使用$#,##0,
格式模式,显示为$523011。然后formatter.FormatterValue(单元格)
为该单元格精确生成“$523011”。@AxelRichter当我更改为poi 4.1.0时,我正在使用poi 3.17,如果(cell.getCellType()==HSSFCell.cell\u TYPE\u STRING)“单元格\u TYPE\u STRING无法重新绘制”,我的框架中会出现错误我怎么能过来this@AxelRichter我已经克服了4.1.0版本的所有问题,但数据格式化程序仍然不能使用4.1.0版本
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ javac -Xlint:deprecation -Xlint:unchecked -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat.java
axel@arichter:~/Dokumente/JAVA/poi/poi-4.1.0$ java -cp .:./*:./lib/*:./ooxml-lib/* ReadExcelSpecialNumberFormat
Data Grouping Amount 1 ($ M) Amount 2 ($ M) Amount 3 ($ M)
Credit Risk $ 772.314 $ 913.546 $ 812.453
Available For Sale ($ 685.104) $ 800.603 $ 830.131
Contingent $ 509.480 $ 524.524 ($ 629.797)
Total $ 596.689 $ 2.238.674 $ 1.012.786