如何在Java中使用POI从首次读到最后一行在Excel中? [英] How to read from first to last row in excel using poi in java?

查看:838
本文介绍了如何在Java中使用POI从首次读到最后一行在Excel中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的Apache POI读取Excel表格文件时,code也工作没有任何问题,但在code从中间读取数据并不会从文件的第一行读取。

I am using apache poi to read form excel file, the code also works without any problem but the code reads data from middle and it does not read from first row of the file.

在code是:

package org.sample;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.ArrayList;

public class Main {

    @SuppressWarnings("unchecked")
    public static void main(String[] args) throws Exception {
//
// An excel file name. You can create a file name with a full
// path information.
//
        String fileName = "D:/workspace/ReadExlsx/xlsx/SampleData.xls";


// Create an ArrayList to store the data read from excel sheet.
//
        List sheetData = new ArrayList();

        FileInputStream fis = null;
        try {
//
// Create a FileInputStream that will be use to read the
// excel file.
//
            fis = new FileInputStream(fileName);

//
// Create an excel workbook from the file system.
//
            HSSFWorkbook workbook = new HSSFWorkbook(fis);
//
// Get the first sheet on the workbook.
//
            HSSFSheet sheet = workbook.getSheetAt(0);

//
// When we have a sheet object in hand we can iterator on
// each sheet's rows and on each row's cells. We store the
// data read on an ArrayList so that we can printed the
// content of the excel to the console.
//
            Iterator rows = sheet.rowIterator();
            while (rows.hasNext()) {
                HSSFRow row = (HSSFRow) rows.next();
                Iterator cells = row.cellIterator();

                List data = new ArrayList();
                while (cells.hasNext()) {
                    HSSFCell cell = (HSSFCell) cells.next();
                    data.add(cell);
                }

                sheetData.add(data);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (fis != null) {
                fis.close();
            }
        }

        showExelData(sheetData);
    }

    private static void showExelData(List sheetData) {
//
// Iterates the data and print it out to the console.
//
        for (int i = 0; i < sheetData.size(); i++) {
            List list = (List) sheetData.get(i);
            //for (int j = 0; j < list.size(); j++) {
                HSSFCell employeeid = (HSSFCell) list.get(0);
                HSSFCell department = (HSSFCell) list.get(3);
                HSSFCell date = (HSSFCell) list.get(5);
                System.out.print(employeeid.getRichStringCellValue().getString()+" , ");
                System.out.print(department.getRichStringCellValue().getString()+" , ");
                System.out.print(date.getRichStringCellValue().getString());
                //if (j < list.size() - 1) {
                   // System.out.print(", ");
                //}
           // }
            System.out.println("");
        }
    }
}

请帮忙解决这个问题。

推荐答案

如果您的数据诠释我行和j列,你应该尝试code是这样的:

If you have data int I rows and J columns you should try code like this:

   for (int i = 0; i < sheetData.size(); i++) {
        List list = (List) sheetData.get(i);
        for (int j = 0; j < list.size(); j++) {
            HSSFCell employeeid = (HSSFCell) list.get(j);
            System.out.print(employeeid.getRichStringCellValue().getString());
            if (j < list.size() - 1) {
                System.out.print(", ");
            }
        }
        System.out.println("");
    }

对我来说非常完美。我的POI的版本是POI-3.8-20120306。

for me it worked perfectly. My version of poi is poi-3.8-20120306.

这篇关于如何在Java中使用POI从首次读到最后一行在Excel中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆