无法在Excel中以数字格式插入数据

时间:2015-11-05 14:05:44

标签: 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

1 个答案:

答案 0 :(得分:1)

我认为你必须增加包含单元格的行的rowheight。

一开始:

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

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

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

这些行:

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

是你必须要做的事情(例如,在创作之后),因为style对于所有受影响的细胞是相同的。