Как ограничить чтение строк из файла Excel через Apache POI - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь читать и отображать информацию из файла Excel, используя Apache POI через Android Studio. Я хорошо справляюсь со «ограничением» столбцов, но по какой-то причине не знаю, как работать со строками.

Через SharedPreferences я выбираю значение и использую простые логические выражения, чтобы «ограничить» то, что приложение должно отображать, оно просто показывает мне все строки в выбранном столбце.

public void readExcelFileFromAssets() {

    //getting shared preferences
    SharedPreferences pref = getSharedPreferences("MyPref", 0);
    String x = pref.getString("key_str", "notext");
    String y = pref.getString("key_day", "notext");

    try {

        InputStream myInput;
        AssetManager assetManager = getAssets();
        myInput = assetManager.open("III_Kursas.xls");
        POIFSFileSystem myFileSystem = new POIFSFileSystem(myInput);
        HSSFWorkbook myWorkBook = new HSSFWorkbook(myFileSystem);
        HSSFSheet mySheet = myWorkBook.getSheetAt(0);

        Iterator<Row> rowIter = mySheet.rowIterator();
        int rowno;
        int limit;

        if (y.equals("mon")){
            rowno = 0;
            limit = 8;
        }
        else if (y.equals("tue")){
            textView.append("FUCKO");
            rowno = 8;
            limit = 16;
        }
        else if (y.equals("wed")){
            textView.append("BUCKO");
            rowno = 16;
            limit = 24;
        }
        else if (y.equals("thr")){
            rowno = 24;
            limit = 32;
        }
        else {
            rowno = 32;
            limit = 40;
        }

        while (rowIter.hasNext()
                //rowno < limit
        ){
            //Log.e(TAG, " row no " + rowno);
            HSSFRow myRow = (HSSFRow) rowIter.next();

            if (rowno != 0){
                Iterator<Cell> cellIter = myRow.cellIterator();
                int colno = 0;

                String[] column = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11"};

                while (cellIter.hasNext()){
                    HSSFCell myCell = (HSSFCell) cellIter.next();

                    column[colno] = myCell.toString();

                    //Log.e(TAG, " Index :" + myCell.getColumnIndex() + " -- " + myCell.toString());

                    colno++;
                }

                if (x.equals("i16")){
                    textView.append(column[2] + "\n");
                }
                else if (x.equals("v16")){
                    textView.append(column[3] + "\n");
                }
                else if (x.equals("p16")){
                    textView.append(column[4] + "\n");
                }
                else if (x.equals("s16")){
                    textView.append(column[5] + "\n");
                }
                else {
                    textView.append("Failed");
                }
            }
            rowno++;
        }

    } catch (Exception e){
        Log.e(TAG, "error" + e.toString());
    }
}

Нет сообщений об ошибках, просто хотите, чтобы приложение отображало выбранные строки на основе переменной.

...