Java code zum vergleichen von excel-sheets funktioniert nicht für größere Dateien

Ich habe unlängst ein Projekt in java zu vergleichen, excel-sheets, in 2 verschiedene Ordner und erzeugt das Ergebnis in einer Zusammenfassung Ordner in den source-Ordner (Verzeichnisse). Wurde der code funktioniert gut, außer für Dateien, die mehr als 10000 Zeilen. seine einfach erstellen Sie ein leeres Blatt anstelle des im Vergleich Missverhältnis für größere Dateien. hier ist der code, den ich verwendet, Bitte helfen Sie mir.

    package com.validation.comparators;
    import java.util.ArrayList;
    import java.util.List;
    import org.apache.commons.lang3.StringUtils;
    import org.bson.Document;
    /**
      * The utility class SheetComparator
   */
    public class SheetComparator {
    private SheetComparator() {
    // The utility class
}

/**
 * Compares the document equivalent of two sheets
 * 
 * @param document1
 *            The document 1
 * @param document2
 *            The document 2
 * @return The compared output
 */
@SuppressWarnings("unchecked")
public static Document compare(Document document1, Document document2) {

    List<String> headers = (List<String>) document1.get("headers");
    List<Document> sheet1Rows = (List<Document>) document1.get("data");
    List<Document> sheet2Rows = (List<Document>) document2.get("data");
    List<Document> temp;
    List<Document> comparedOutput = new ArrayList<>();

    if (sheet1Rows.size() < sheet2Rows.size()) {
        temp = sheet1Rows;
        sheet1Rows = sheet2Rows;
        sheet2Rows = temp;
    }

    int length = sheet1Rows.size();
    int length2 = sheet2Rows.size();

    for (int i = 0; i < length2; i++) {
        Document sheet1Row = sheet1Rows.get(i);
        Document sheet2Row = sheet2Rows.get(i);
        Document comparedRow = new Document("row number",
                new Document("value", sheet1Row.getString("row number")).append("color", "WHITE"));
        Boolean completeMatch = true;

        for (String header : headers) {
            Boolean isNull = false;
            String value1 = sheet1Row.getString(header).trim();
            String value2 = sheet2Row.getString(header).trim();

            if (StringUtils.isAnyBlank(value1, value2)) {
                completeMatch = false;
                isNull = true;
            } else if (!StringUtils.equals(value1, value2)) {
                completeMatch = false;
            }

            if (isNull) {
                comparedRow.append(header, new Document("value", StringUtils.isBlank(value1) ? value2 : value1)
                        .append("color", "RED"));
            } else {
                comparedRow.append(header, new Document("value", value1).append("color", "WHITE"));
            }
        }

        if (!completeMatch) {
            comparedOutput.add(comparedRow);
        }
    }

    for (int i = length2; i < length; i++) {
        Document row = sheet1Rows.get(i);
        Document comparedRow = new Document();

        for (String header : headers) {
            String value = row.getString(header);
            comparedRow.put(header, new Document("value", value).append("color", "RED"));
        }

        comparedRow.append("row number",
                new Document("value", row.getString("row number")).append("color", "WHITE"));
        comparedOutput.add(comparedRow);
    }

    headers.add(0, "row number");
    return new Document("data", comparedOutput).append("headers", headers);
}
}
0
2019-09-19 08:54:00
Quelle
0 Antworten

Sehen Sie sich andere Fragen zu Tags an