Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何获取读取excel文件的最后一列索引?_Java_Apache Poi_Xssf - Fatal编程技术网

Java 如何获取读取excel文件的最后一列索引?

Java 如何获取读取excel文件的最后一列索引?,java,apache-poi,xssf,Java,Apache Poi,Xssf,使用ApachePOIAPI读取xlsx文件时,如何获取最后一列的索引 有一个getLastRowNum方法,但我找不到与列数相关的任何内容 编辑: 我正在处理XLSX文件我认为您必须遍历行并检查每一行。检查每一行并调用Row.getLastCellNum()最大单元格编号是最后一列编号 Row r = sheet.getRow(rowNum); int maxCell= r.getLastCellNum(); 要了解具有任何行的值的最后一列,首先需要获取该行,然后才能找到具有值的最后一列

使用ApachePOIAPI读取
xlsx
文件时,如何获取最后一列的索引

有一个
getLastRowNum
方法,但我找不到与列数相关的任何内容


编辑:
我正在处理
XLSX
文件

我认为您必须遍历行并检查每一行。

检查每一行并调用
Row.getLastCellNum()
最大单元格编号是最后一列编号

Row r = sheet.getRow(rowNum);
int maxCell=  r.getLastCellNum();

要了解具有任何行的值的最后一列,首先需要获取该行,然后才能找到具有值的最后一列

语法:

sheet.getrow(RowNumber).getLastCellNum();
RowNumber
-->是要知道最后一列有值的行号

请尝试以下功能:

private void maxExcelrowcol() {
    int row, col, maxrow, maxcol;

    //Put file name here for example filename.xls
    String filename = "filename.xls";
    static String TAG = "ExelLog";

    //you can use 'this' in place of context if you want
    Context context = getApplicationContext();

    try {
        // Creating Input Stream
        File file = new File(context.getExternalFilesDir(null), filename);
        FileInputStream myInput = new FileInputStream(file);

        // Create a POIFSFileSystem object
        POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);

        // Create a workbook using the File System
        HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);

        // Get the first sheet from workbook
        HSSFSheet mySheet = myWorkBook.getSheetAt(0);

        //Row iterator 
        Iterator rowIter = mySheet.rowIterator();

        while (rowIter.hasNext()) {
            HSSFRow myRow = (HSSFRow) rowIter.next();
            //Cell iterator for iterating from cell to next cell of a row
            Iterator cellIter = myRow.cellIterator();
            while (cellIter.hasNext()) {
                HSSFCell myCell = (HSSFCell) cellIter.next();

                row = myCell.getRowIndex();
                col = myCell.getColumnIndex();

                if (maxrow < row) {
                    maxrow = row;
                }
                if (maxcol < col) {
                    maxcol = col;
                }
            }
        }
    } catch(FileNotFoundException e) {
        e.printStackTrace();
    } catch(IOException e) {
        e.printStackTrace();
    }
}
private void maxExcelrowcol(){
int row,col,maxrow,maxcol;
//在此处输入文件名,例如filename.xls
字符串filename=“filename.xls”;
静态字符串TAG=“ExelLog”;
//如果需要,可以使用“this”代替上下文
Context=getApplicationContext();
试一试{
//创建输入流
File File=新文件(context.getExternalFilesDir(null),文件名);
FileInputStream myInput=新的FileInputStream(文件);
//创建一个POIFSSystem对象
POIFSFileSystem myFileSystem=新的POIFSFileSystem(myInput);
//使用文件系统创建工作簿
HSSFWorkbook myWorkBook=新的HSSFWorkbook(myFileSystem);
//从工作簿中获取第一张工作表
HSSFSheet mySheet=myWorkBook.getSheetAt(0);
//行迭代器
迭代器rowIter=mySheet.rowitter();
while(rowIter.hasNext()){
HSSFRow myRow=(HSSFRow)rowIter.next();
//单元格迭代器,用于从一行的单元格迭代到下一个单元格
迭代器cellIter=myRow.cellIterator();
while(cellIter.hasNext()){
HSSFCell myCell=(HSSFCell)cellIter.next();
row=myCell.getRowIndex();
col=myCell.getColumnIndex();
如果(maxrow
对于XLSX文件,唯一需要更改的是HSSF到XSSF。感谢您的回答。如果您还可以在代码中添加一些注释,那就太好了。这有助于人们更好地理解你的答案。