JAVA ODFDOM: Как получить целочисленные значения из листа ODF

Я использую этот код, чтобы получить максимальное количество строк из листа в ODF

public int getRowCount(String sheetName) throws XPathExpressionException, Exception

{

//reset rowCount to zero

        rowCount=0;

//xpath to reach Nodes of cell in first row

        int parameterCount=getColumnCount(sheetName);
        //System.out.println("Debug:ParameterCount="+parameterCount);
        for (int i=1;i<=parameterCount;i++)
        {
            String xpathStr="//table:table[@table:name='"+sheetName+"']/table:table-row/table:table-cell["+i+"][@office:value-type='void']";
            DTMNodeList nodeList = (DTMNodeList) xpath.evaluate(xpathStr, spreadSheet.getContentDom(), XPathConstants.NODESET);
            //System.out.println("Debug:RowsFoundWithData="+nodeList.getLength());
            System.out.println(nodeList.getLength());
            for(int j=0 ; j<nodeList.getLength();j++)
            {
                System.out.println("Debug:RowValue="+nodeList.item(j).getTextContent());
            }
            if(nodeList.getLength()-1>rowCount)
            {
                rowCount=nodeList.getLength()-1;
            }

    }

return rowCount;

    }

Но этот код возвращает мне не целочисленное значение, если какая-либо строка столбца на листе содержит целочисленное значение, то он пропускает его, а число строк, возвращаемое этой функцией, недопустимо

Он считает только буквенно-цифровые значения строк

Есть ли способ, которым я могу получить правильное количество строк

JAR использовал odfdom-java-0.8.7-jar-with-dependencies

1 ответ

Хотя я думаю, что вы нашли свой ответ самостоятельно, я боролся с подобной проблемой. Трудно найти достойные примеры для этого отличного инструмента. Это то, что вы должны ожидать в электронной таблице:

OdfSpreadsheetDocument ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
OdfTable table = SpreadsheetHandling.setNewTable(ods, "names");
System.out.println("Number of rows: " + table.getRowCount());

К сожалению, ситуация несколько сложнее. Когда вы находитесь в электронной таблице и просматриваете код, добавляющий строки на лист, этот метод возвращает точное количество строк. Однако, когда он загружает документ и затем читает количество строк, он вернет максимально возможное количество строк, следовательно: 1048576.

Однако возможно использование количества узлов типа row в таблице.

OdfSpreadsheetDocument ods = OdfSpreadsheetDocument.newSpreadsheetDocument();
OdfTable table = SpreadsheetHandling.setNewTable(ods, "rowCount");
TableTableElement tte = table.getOdfElement();
NodeList nl = tte.getElementsByTagName("table:table-row");
System.out.println("Number of nodeelements: " + nl.getLength());

С наилучшими пожеланиями,

Loek

Другие вопросы по тегам