Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.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_Excel_Apache Poi_Eclipse Oxygen - Fatal编程技术网

Java代码未打印excel文件中的所有行

Java代码未打印excel文件中的所有行,java,excel,apache-poi,eclipse-oxygen,Java,Excel,Apache Poi,Eclipse Oxygen,我有一个包含6663行的excel文件。我想读取excel文件中的所有行和列,并在eclipse中的控制台上打印出来。以下是我努力实现的目标: public class ExcelReader { public static final String SAMPLE_XLSX_FILE_PATH = "K:\\Documents\\Project\\Netword_GUI\\Netword_GUI\\src\\libs\\cc2017.xlsx"; public static v

我有一个包含6663行的excel文件。我想读取excel文件中的所有行和列,并在eclipse中的控制台上打印出来。以下是我努力实现的目标:

public class ExcelReader {
    public static final String SAMPLE_XLSX_FILE_PATH = "K:\\Documents\\Project\\Netword_GUI\\Netword_GUI\\src\\libs\\cc2017.xlsx";

    public static void main(String[] args) throws IOException, InvalidFormatException {

        // Creating a Workbook from an Excel file (.xls or .xlsx)
        Workbook workbook = WorkbookFactory.create(new File(SAMPLE_XLSX_FILE_PATH));

        // Retrieving the number of sheets in the Workbook
        System.out.println("Workbook has " + workbook.getNumberOfSheets() + " Sheets : ");

        /*
           =============================================================
           Iterating over all the sheets in the workbook (Multiple ways)
           =============================================================
         */

        // You can obtain a sheetIterator and iterate over it
        Iterator<Sheet> sheetIterator = workbook.sheetIterator();
        System.out.println("Retrieving Sheets using Iterator");
        while (sheetIterator.hasNext()) {
            Sheet sheet = sheetIterator.next();
            //System.out.println(sheet.getRow(0));
            System.out.println("=> " + sheet.getSheetName());
        }
        // Getting the Sheet at index zero
        Sheet sheet = workbook.getSheetAt(0);

        // Create a DataFormatter to format and get each cell's value as String
        DataFormatter dataFormatter = new DataFormatter();

        // You can obtain a rowIterator and columnIterator and iterate over them
        System.out.println("\n\nIterating over Rows and Columns using Iterator\n");
        Iterator<Row> rowIterator = sheet.rowIterator();
        while (rowIterator.hasNext()) {
            Row row = rowIterator.next();

            // Now let's iterate over the columns of the current row
            Iterator<Cell> cellIterator = row.cellIterator();

            while (cellIterator.hasNext()) {
                Cell cell = cellIterator.next();
                String cellValue = dataFormatter.formatCellValue(cell);
                System.out.print(cellValue + "\t");
            }
            System.out.println();
        }
        if (sheet.getActiveCell() == null) {
            // Closing the workbook
            workbook.close();

        }
    }
}
公共类ExcelReader{
公共静态最终字符串示例\u XLSX\u FILE\u PATH=“K:\\Documents\\Project\\Netword\u GUI\\Netword\u GUI\\src\\libs\\cc2017.XLSX”;
公共静态void main(字符串[]args)引发IOException、InvalidFormatException{
//从Excel文件(.xls或.xlsx)创建工作簿
工作簿=WorkbookFactory.create(新文件(示例文件路径));
//检索工作簿中的工作表数
System.out.println(“工作簿有”+Workbook.getNumberOfSheets()+“Sheets:”);
/*
=============================================================
迭代工作簿中的所有工作表(多种方式)
=============================================================
*/
//您可以获取sheetIterator并对其进行迭代
迭代器sheetIterator=工作簿.sheetIterator();
System.out.println(“使用迭代器检索表单”);
while(sheetIterator.hasNext()){
Sheet Sheet=sheetIterator.next();
//System.out.println(sheet.getRow(0));
System.out.println(“=>”+sheet.getSheetName());
}
//在索引为零时获取工作表
工作表=工作簿。getSheetAt(0);
//创建一个DataFormatter,将每个单元格的值格式化并获取为字符串
DataFormatter DataFormatter=新的DataFormatter();
//您可以获取行迭代器和列迭代器并对其进行迭代
System.out.println(“\n\n使用迭代器对行和列进行操作”);
迭代器rowIterator=sheet.rowIterator();
while(roweiterator.hasNext()){
行=行迭代器。下一步();
//现在让我们遍历当前行的列
迭代器cellIterator=row.cellIterator();
while(cellIterator.hasNext()){
Cell=cellIterator.next();
字符串cellValue=dataFormatter.formatCellValue(单元格);
系统输出打印(cellValue+“\t”);
}
System.out.println();
}
if(sheet.getActiveCell()==null){
//关闭工作簿
workbook.close();
}
}
}

此代码的目的是显示所有行和列。目前,这段代码只显示大约200行,但这些行的所有列都按预期显示。它似乎也以随机顺序显示行,尽管每次我运行它时,相同的行都以相同的随机顺序显示。如果能够以正确的顺序显示所有6663行,包括标题(第一行),我将不胜感激。提前感谢您。

如果您在Eclipse中运行此程序,您可能已经达到了控制台输出大小的限制

您可以在“运行/调试>控制台”页面的首选项中更改限制。您可以更改最大字符数或完全关闭限制(但这可能会导致内存不足错误)。

我还查看了堆大小,但这并没有占用所有可用的堆空间。可能是重复的No I have 21 columns扫描您附加了文件,或者是显示相同问题的较小文件?如果@greg-449的答案不是解决方案,您是否希望
迭代器也有完全空的行?不会的。还有:Excel文件
cc2017.xlsx
来自哪里?是什么软件创造了它?使用的是什么版本的ApachePOI?以前的
apachepoi
版本只有在设置了行号时才读取行。如果是这样,XML看起来像
。但是属性
r
是可选的,某些第三方软件可能并不总是设置它。以前的
apachepoi
版本无法读取没有行号的行。这到底是怎么回事?我从未使用过IDE,但我认为IDE是用来支持程序员的。但我在这里读到的关于IDE问题的文章越多,我得出的结论是,事实恰恰相反。我的意思是,甚至有些stacktraces可能会达到这个限制。