使用Apache POI从单列中访问excel数据

时间:2017-05-29 07:38:02

标签: java excel

My input data

  1. 我附上了几行的Excel列
  2. 本栏中重复编号445.04三次。
  3. 我必须在java中编写一个逻辑,它将帮助我遍历这个包含200多行的列,并添加这些类型的值将导致零。
  4. 数字可以不同,占用任何值,操作时它们的可能性会导致零。
  5. Here's another picture with different scenerio
  6. 在上文中,添加时的10和-3-7可以为零,并且5和-5也可以为零。 7.如何编写可以访问此类场景的单个列的代码?如果需要任何附加内容,请发表评论。
  7. 这就是我想要实现的......输出可以打印在IDE的控制台上而不是excel本身

    Expected result

        Iterator<Row> iterator = firstSheet.iterator();
        List<Double> posValue = new ArrayList<Double>();
        List<Double> negValue = new ArrayList<Double>();
        while(iterator.hasNext())//goes down the row, until there is nothing
        {    
            Row nexRow = iterator.next();
            if(nexRow.getRowNum()!=0){
                value = nexRow.getCell(3).getNumericCellValue();
    
                if(value>0){
                    posValue.add(value);
                }
                else if(value <0){
                    //System.out.println("ehre");
                    negValue.add(value);
                }
            }
            Iterator<Double> pIterator = posValue.iterator();
            Iterator<Double> nIterator = negValue.iterator();
    
            for(int i = 0; i<posValue.size();i++){
                for(int j=0; j<negValue.size(); j++){
                    //System.out.println(negValue.get(j));
                    result= posValue.get(i)+negValue.get(j);
                }
            }
            if(result==0){
                System.out.println(result+"    "+nexRow.getRowNum());
            }
            workbook.close();
            inputStream.close();
        }
    

    我想到了这一点,因为我必须根据他们的标志来计算价值并使其为零。

2 个答案:

答案 0 :(得分:0)

您需要使用某种循环迭代行。这应该对你有帮助。

public static void main(String[] args) throws IOException {
    String excelFilePath = "Book1.xlsx";
    FileInputStream inputStream = new FileInputStream(new File(excelFilePath));

    Workbook workbook = new XSSFWorkbook(inputStream);
    XSSFSheet firstSheet = (XSSFSheet) workbook.getSheetAt(0);
    Iterator<Row> iterator = firstSheet.iterator();
    iterator.next();// skip the header row
    Double result = 0.0;

    while (iterator.hasNext()) {
        Row nextRow = iterator.next();
        result += nextRow.getCell(0).getNumericCellValue();
    }
    System.out.println(result);

    workbook.close();
    inputStream.close();
}

Excel doc。

enter image description here

答案 1 :(得分:0)

TextBlock

}

这是我想要实现的目标。它将使行为零,可以操作值。 @Piyush