apache poi查找工作表中的行数

时间:2015-01-08 11:46:18

标签: java excel apache-poi

我一直在使用这些方法来计算工作表中的行数

getLastRowNum()

getPhysicalNumberOfRows()

他们在我的两张工作簿上工作正常。但是包含5行的第三张表格正在返回1个额外的两个函数。

Sheet NumberofRows getLastRowNum() getPhysicalNumberOfRows()
1     9            9               10
2     56           56              57
3     5            4               5

这两个功能的工作区别到底是什么,我能做些什么才能获得可靠的正确结果?

2 个答案:

答案 0 :(得分:4)

<强> getLastRowNum()

  • 此表格中包含的最后一行数从零开始
  

,就像数组一样,如果n是行数,则从0开始到n-1。

<强> getPhysicalNumberOfRows()

  • 此工作表中物理定义的行数。不包括空行

因此,对于行数10, getLastRowNum() 9 ,因为它从 0 开始。
这是getPhysicalNumberOfRows()应该使用getLastRowNum()而不是getLastRowNum()的原因之一,因为如果表格中的行数为1,0会返回0,如果不能区分有0行或唯一的行位于getPhysicalNumberOfRows()位置,而{{1}}将返回1。

答案 1 :(得分:1)

我发现内置方法不可靠(+/- 1不一致)所以我推出了自己的方法:

$scope.export = function() {
    $scope.gridOptions.data.push({
        "name": "Hello world",
        "gender": 1,
        "company": "test company"
    });
    $timeout(function() {//$timeout denote that you will wait for angular to complete their digest + render before call  the exportation = you give UI grid to prepare NEW data before export it.
        if ($scope.export_format == 'csv') {
            var myElement = angular.element(document.querySelectorAll(".custom-csv-link-location"));
            $scope.gridApi.exporter.csvExport($scope.export_row_type, $scope.export_column_type, myElement);
        } else if ($scope.export_format == 'pdf') {
            $scope.gridApi.exporter.pdfExport($scope.export_row_type, $scope.export_column_type);
        };
    })
};