如何写在特定的列上

如何写在特定的列上

我有3列的Excel文件。我已经将“ B”列存储到数组列表中,并检查该值是否重复。现在我有问题将“ Duplicate”值写入“ C”列。如何写在特定的列上?

java - 如何写在特定的列上?-LMLPHP

这是我的代码

FileInputStream file = new FileInputStream(new File(
            "file name"));

    XSSFWorkbook workbook = new XSSFWorkbook(file);
    XSSFSheet sheet = workbook.getSheetAt(0);
    Iterator<Row> rowIterator = sheet.iterator();
    ArrayList<String> col = new ArrayList<String>();
    while (rowIterator.hasNext()) {
        Row row = rowIterator.next();
        System.out.println(row.getRowNum());
        Iterator<Cell> cellIterator = row.cellIterator();

        while (cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            if(cell.getColumnIndex()==1) {
                col.add(cell.getStringCellValue());
                System.out.print(cell.toString());
            }
        }
        System.out.println();
    }
    for(int a = 0; a < 14; a++) {
        if(col.get(a).equals("Order ID")) {
            if(col.get(a).equals(col.get(a+1))) {
                System.out.println("ROW no "+a+"Double Order");
                }
        } else {
            if(col.get(a).equals(col.get(a+1)) || col.get(a).equals(col.get(a-1))) {
                if(col.get(a).trim().length()>0) {
                    System.out.println("ROW no "+a+"Double Order");
                col.add("Double");
                }
            }
        }
    }

    FileOutputStream fileOut = new FileOutputStream("file name");
    workbook.write(fileOut);
    fileOut.close();

最佳答案

您无需重复两次即可分别识别和写入重复的行。您可以按照以下步骤进行操作:

private static void identifyDuplicateOrders() throws IOException {
        FileInputStream file = new FileInputStream(new File("D:\\home\\test_in.xlsx"));
        final FileOutputStream fileOut = new FileOutputStream("D:\\home\\test_out.xlsx");
        XSSFWorkbook workbook = null;
        try {
            workbook = new XSSFWorkbook(file);
            final XSSFSheet sheet = workbook.getSheetAt(0);
            final Iterator<Row> rowIterator = sheet.iterator();
            final Set<String> orderIds = new HashSet<String>();
            while (rowIterator.hasNext()) {
                final Row row = rowIterator.next();
                final int rowNumber = row.getRowNum();
                // SKIP HEADER
                if (rowNumber == 0) {
                    continue;
                }
                System.out.print("Row " + rowNumber);
                // GET ORDER ID CELL
                final Cell cell = row.getCell(1);
                if (!orderIds.add(cell.getStringCellValue())) {
                    // CREATE DOUBLE ORDER CELL
                    row.createCell(2).setCellValue("Duplicate");
                    System.out.println(" " + cell.toString() + " is Duplicate.");
                } else {
                    System.out.println(" Order is Unique");
                }
            }
            workbook.write(fileOut);
        } finally {
            workbook.close();
            file.close();
            fileOut.close();
        }

    }

07-24 13:29