Как найти индекс столбца Excel По его значению с помощью Apache poi - PullRequest
0 голосов
/ 07 октября 2018

В настоящее время я использую apache poi для чтения данных из файла Excel.

У меня есть ситуация для получения columnIndex по значению.

Я имею в виду, файл Excel содержит 10000 строк.

Второй столбец содержит список имен emp, я хочу найти индекс столбца по значению.

Значит: имя Emp "Ra" в 10-м столбце, я должен получить индекс столбца при передаче значения.Мне нужно решение без использования foreach или итератора.

1 Ответ

0 голосов
/ 08 октября 2018

Попробуйте это:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.poi.xssf.model.SharedStringsTable;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Search {

    public static void main(String[] args) throws IOException {
        String path = "src/test.xlsx";
        String param = "Ra";
        try (FileInputStream in = new FileInputStream(path); 
                XSSFWorkbook w = new XSSFWorkbook(in)) {

            List<Integer> lstStringIndex = new ArrayList<>();
            SharedStringsTable stringsTable = w.getSharedStringSource();
            for (int i = 0; i < stringsTable.getCount(); i++) {
                if (stringsTable.getEntryAt(i).getT().contains(param)) {
                    lstStringIndex.add(i);
                }
            }

            XSSFSheet s = w.getSheetAt(0);
            String xml = s.getCTWorksheet().xmlText();
            for (Integer i : lstStringIndex) {
                Pattern p = Pattern.compile("(?<=<main:c r=\")[A-Z0-9]+(?=\" t=\"s\"><main:v>" + i + "</main:v>)");
                Matcher m = p.matcher(xml);
                if(m.find()) {
                    System.out.println(m.group());
                }
            }
        }
    }
}

Приведенный выше код распечатает адрес любой ячейки, содержащей "Ra".
Я использую apache poi 3.14 между прочим.

...