[excel] zaawansowana wyszukiwarka na wielu plikach


(troiP) #1

Witam

Mam 5 plików różnych rozszerzeń otwieranych przez excela ( csv, xls).

W każdy pliku jest po około 1000 wierszy

Chciałby aby w nowo utworzonym pliku xls pobierał mi dane z tamtych pięciu ale po określonych cechach.

Poszukuje slowa abcd. Załóżmy że jest ono w każdym z tych 5 plików. Jeżeli znajdzie takie słowo to ma mi je skopiować do nowego pliku i jego cały wiersz.

Czy jest to możliwe?


(Krystian Rosinski) #2

Da się to pewnie zrealizować przy pomocy VBA. W przypadku plików CSV można skorzystać również z Pythona. Python posiada wbudowane moduły do obsługi plików oraz moduł csv, który umożliwia m.in. wybór separatora (w polskiej wersji Excela komórki rozdzielane są średnikiem) oraz określenie "dialektu".

Użycie modułu csv może wyglądać mniej więcej tak:

with open(filename, 'r') as f:

    reader = csv.reader(f, delimiter=';', dialect='excel')


    for row in reader:

        for item in row:

            if item == 'abcd':

                print('Here you are!')

Obsługa plików jest równie prosta. Zaawansowaną wyszukiwarkę można zrealizować przy pomocy wbudowanego modułu re (regular expression).

Poza tym można skorzystać z zewnętrznych bibliotek xlrd i xlwt, które obsługują pliki xls (zdaje się, że xlsx nie jest nadal wspierany przez te biblioteki).