java - 无法在Excel中插入数字格式的数据

标签 java excel

我有下面的 Java (Selenium) 方法可以将数据插入 Excel 工作表:

private static void getPaceNumber(WebDriver chromeDriver, String dBName, XSSFSheet paceSheet, String pubName, int i,
        XSSFCell cell, XSSFWorkbook workbook) throws Exception {
    CellStyle style = workbook.createCellStyle();
    cell = paceSheet.getRow(i).createCell(1);
    if (dBName == "" || dBName.equals("null")) {
        cell.setCellValue("N/A");
    } else {
        chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[2]/td[2]/textarea"))
                .sendKeys("\"" + dBName + "\"");
        chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[4]/td[2]/input[1]")).click();
        List<WebElement> pace = chromeDriver
                .findElements(By.xpath("html/body/form[2]/table[1]/tbody/tr[2]/td[2]/input[1]"));
        int paceSize = pace.size();
        if (paceSize >= 1) {
            int dbPaceNumber = Integer.parseInt(
                    chromeDriver.findElement(By.xpath("html/body/form[2]/table[1]/tbody/tr[2]/td[2]/input[1]"))
                            .getAttribute("value"));
            chromeDriver.findElement(By.xpath(".//*[@id='searchPublication']")).click();
            chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[2]/td[2]/textarea"))
                    .sendKeys("\"" + pubName + "\"");
            chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[4]/td[2]/input[1]")).click();
            int pubPaceNumber = Integer.parseInt(
                    chromeDriver.findElement(By.xpath("html/body/form[2]/table[1]/tbody/tr[2]/td[2]/input[1]"))
                            .getAttribute("value"));
            if (dbPaceNumber == pubPaceNumber) {
                cell.setCellValue(dbPaceNumber);
            } else {

                cell.setCellValue(dbPaceNumber + "\n" + pubPaceNumber);
                style.setWrapText(true);
                cell.setCellStyle(style);
            }

        } else {
            List<WebElement> table = chromeDriver
                    .findElements(By.xpath("html/body/form[2]/table[1]/tbody/tr[4]/td/b"));
            int tabSize = table.size();
            if (tabSize == 1) {
                chromeDriver.findElement(By.xpath(".//*[@id='searchPublication']")).click();
                chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[2]/td[2]/textarea"))
                        .sendKeys("\"" + pubName + "\"");
                chromeDriver.findElement(By.xpath("html/body/form[2]/b/b/table/tbody/tr[4]/td[2]/input[1]"))
                        .click();
                List<WebElement> paceWithFPN = chromeDriver
                        .findElements(By.xpath("html/body/form[2]/table[1]/tbody/tr[2]/td[2]/input[1]"));
                int paceWithFPNSize = paceWithFPN.size();
                if (paceWithFPNSize >= 1) {
                    int paceSubNumber = Integer.parseInt(chromeDriver
                            .findElement(By.xpath("html/body/form[2]/table[1]/tbody/tr[2]/td[2]/input[1]"))
                            .getAttribute("value"));

                    cell.setCellType(Cell.CELL_TYPE_NUMERIC);
                    cell.setCellValue(paceSubNumber);
                } else {
                    cell.setCellValue("N/A");
                }

            } else {
                cell.setCellValue("N/A");
            }
        }
    }
}

我想用两个不同的条件检查值,如果它们相同,则将值插入 Excel 单元格,否则将两个值插入一个单元格。基本上检索到的值是整数类型。我能够正确插入值,但如果有两个值,它们将作为单行插入(一个延续另一个)。单个值在 Excel 单元格中自动右对齐(一般数字格式)。 在有两个值的地方,我需要双击单元格,然后它们以两行格式显示,并且它们显示为字符串(左对齐)。

我知道当我使用 +"XXX"+ 时,结果是一个字符串,但是我怎样才能把它变成一个整数呢?

与单值一样,它必须右对齐,还有什么方法可以让我在单元格内自动换行?

**Current output:**                      **Expected Output:** 

enter image description here enter image description here

最佳答案

我认为您必须增加包含该单元格的行的行高。

一开始:

int defaultHeight = paceSheet.getRow(0).getHeight();

以后,当您创建这样一个单元格时:

paceSheet.getRow(i).setHeight(defaultHeight*2);

那些行:

style.setWrapText(true);
style.setAlignment(CellStyle.ALIGN_RIGHT);

是您只需要做一次的事情(例如,在创建之后),因为所有受影响的单元格的 style 都是相同的。

关于java - 无法在Excel中插入数字格式的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33546638/

相关文章:

java - JdbcTemplate 不支持Parameterized Query 'IN' case?一定要通过NamedParameterJdbcTemplate吗?

java - 如何用 Direct Spark Cassandra 表数据操作替换 JAVA 循环

java - 如何使用servlet验证HTML表单中不存在的隐藏表单字段名称

excel - Power Query 仅加载前 20 列

java - NLP 从给定文本中发现城市、州和名称

java - Spring Boot @OneToMany 映射

Excel VBA Dir()默认路径?

Excel如何提取不在第二列中的不同值

vba - 如何使用VBA仅打印Word文档中的第一页?

vba - 更改 Excel ActiveX 列表框的名称