سؤال

ضع في اعتبارك أن لدي ورقة Excel بالتنسيق أدناه:

شخص عمر
فو 29
شريط 27

الآن أريد قراءة هذه القيم (باستخدام POI HSSF) ويجب علي معالجتها.ما هي أفضل طريقة للقيام بذلك؟

لاحظ أنه ليس لدي كائن كائن في طلبي، لأن القيم التي قد تأتي في ورقة Excel هي عشوائية (على سبيل المثال.قد لا يكون اسم الشخص وعمره).لذا، أحتاج إلى استخدام نوع من HashMap لتخزين هذه القيم.في حالة وجود صفوف متعددة، هل من الجيد أن يكون لديك قائمة!؟

هل كانت مفيدة؟

المحلول

public class Grid {
    private Row headerColumns;
    private List<Row> dataRows;

    public Grid() {
        dataRows = new LinkedList<Row>();
    }

    public Grid(int rowCount) {
        dataRows = new ArrayList<Row>(rowCount);
    }

    public void addHeaderRow(List<String> headers) {
        this.headerColumns = new Row(headers);
    }

    public void addDataRow(List<String> data) {
        this.dataRows.add( new Row(data) );
    }

    public List<Row> getAllData() {
        List<Row> data = new ArrayList<Row>(1+dataRows.size());
        data.add(this.headerColumns);
        data.addAll(dataRows);
        return data;
    }

    public Row getHeaderColumns() {
        return headerColumns;
    }

    public List<Row> getDataRows() {
        return dataRows;
    }
}

class Row {
    private List<String> data;

    public Row(List<String> data) {
        this.data = data;
    }

    public void addColumn(String columnData) {
        data.add(columnData);
    }

    public List<String> getData() {
        return data;
    }
}

نصائح أخرى

إذا تم تعريف التنسيق، فقم بإنشاء فصل يستوعب كل تلك الحقول.

إذا لم يتم تعريف التنسيق، فقم بتمرير الصفوف أو القوائم أو حتى DOM من التحويل من Excel إلى dom.ليس لديك خيار.أوصي بالالتزام فقط بكائنات الصفوف والخلية الأصلية لـ POI.

نعم، لا يمكنك استخدام الخريطة إذا كان لديك قيم رئيسية متعددة.ولم أجد بعض الفصول الدراسية المضمنة لهذه المشكلة.يمكنك محاولة كتابة نوع من الغلاف.إذا كنت لا تهتم بالسرعة، فاستخدم مصفوفة ثنائية الأبعاد بسيطة مثل هذا:

String[][] filter = new String[initial width][initial height];

يمكن أن يكون كائنًا بدلاً من سلسلة؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top