java实现简单的读取excel中的每一行数据

参考: https://www.cnblogs.com/cbzg/p/5747739.html

需要的jar包

网盘下载链接
提取码:qw23
在这里插入图片描述

读取excle文件代码

public class ReadExcel {
    public static List<List<String>> readExcel(String path){
        List<List<String>> list=new ArrayList<List<String>>();
        try {
            Workbook wb;
            InputStream is=null;
            try{
                is=new FileInputStream(path);
                //读取2007版Excel
                wb=new XSSFWorkbook(is);
            }catch(Exception e){
                //防止异常导致输入流关闭
                is=new FileInputStream(path);
                //读取2003版Excel
                wb=new HSSFWorkbook(is);
            }
            for (int i = 0; i < wb.getNumberOfSheets(); i++) {
                //读取Sheet
                Sheet sheet=wb.getSheetAt(i);
                if(sheet==null){
                    continue;
                }
                //处理当前页,循环每一行
                for (int j = 0; j < sheet.getPhysicalNumberOfRows(); j++) {
                    //得到当前行
                    Row row=sheet.getRow(j);
                    //当前行第一个单元格
                    int minCells=row.getFirstCellNum();
                    //当前行最后一个单元格
                    int maxCells=row.getLastCellNum();
                    List<String> sl=new ArrayList<String>();
                    for (int k = minCells; k < maxCells; k++) {
                        //每一个单元格
                        Cell cell=row.getCell(k);
                        if(cell==null){
                            continue;
                        }
                        sl.add(cell.toString());
                    }
                    list.add(sl);
                }
            }
            if(is!=null){
                is.close();
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return list;
    }
}
  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好,要进行每一行数据的比较,可以在读取 Excel 表格数据时,将每一行数据存储在一个对象,然后对比两个表格对应的对象是否相等。下面是一个简单的示例代码: ```java import java.io.FileInputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExcelReader { public static void main(String[] args) throws IOException { // 读取第一个 Excel 表格 FileInputStream fis1 = new FileInputStream("excel1.xlsx"); Workbook workbook1 = WorkbookFactory.create(fis1); Sheet sheet1 = workbook1.getSheetAt(0); Iterator<Row> rowIterator1 = sheet1.iterator(); // 读取第二个 Excel 表格 FileInputStream fis2 = new FileInputStream("excel2.xlsx"); Workbook workbook2 = WorkbookFactory.create(fis2); Sheet sheet2 = workbook2.getSheetAt(0); Iterator<Row> rowIterator2 = sheet2.iterator(); List<RowData> rowDataList1 = new ArrayList<>(); List<RowData> rowDataList2 = new ArrayList<>(); // 将两个表格数据存储到对象列表 while (rowIterator1.hasNext()) { Row row = rowIterator1.next(); Iterator<Cell> cellIterator = row.cellIterator(); RowData rowData = new RowData(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); rowData.addData(cell.toString()); } rowDataList1.add(rowData); } while (rowIterator2.hasNext()) { Row row = rowIterator2.next(); Iterator<Cell> cellIterator = row.cellIterator(); RowData rowData = new RowData(); while (cellIterator.hasNext()) { Cell cell = cellIterator.next(); rowData.addData(cell.toString()); } rowDataList2.add(rowData); } // 比较两个表格一行数据 for (int i = 0; i < rowDataList1.size(); i++) { RowData rowData1 = rowDataList1.get(i); RowData rowData2 = rowDataList2.get(i); if (!rowData1.equals(rowData2)) { System.out.println("第 " + (i + 1) + " 行数据不相等:"); System.out.println("表格1:" + rowData1); System.out.println("表格2:" + rowData2); } } // 关闭 Excel 文件 workbook1.close(); fis1.close(); workbook2.close(); fis2.close(); } /** * 表格数据对象 */ private static class RowData { private List<String> data = new ArrayList<>(); /** * 添加一列数据 */ public void addData(String value) { data.add(value); } /** * 判断两个行数据是否相等 */ @Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } RowData rowData = (RowData) o; return data.equals(rowData.data); } @Override public String toString() { return "RowData{" + "data=" + data + '}'; } } } ``` 上述代码,我们定义了一个 `RowData` 类来存储每一行数据,通过 `addData()` 方法将每一列的数据添加到列表,然后通过重写 `equals()` 方法来比较两个行数据是否相等。在读取 Excel 数据时,将每一行数据存储在 `RowData` 对象,然后将对象存储在列表。最后,遍历两个列表,比较每一行数据是否相等。如果不相等,则输出不相等的行数据。 需要注意的是,本示例代码只是一个简单实现,实际应用可能需要针对具体需求进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值