Как я могу grep данных в Excel?

11

У меня есть файл Excel, который содержит данные в двух столбцах, таких как:

Operator ID           MXS1268
Name                  ramesh    

Мне нужно проверить наличие дубликатов в нескольких файлах Excel, которые имеют одинаковое значение для идентификатора оператора, и отобразить или поместить его в какой-нибудь файл журнала.

Munish
источник
В зависимости от того, что вы хотите сделать, есть разные способы сделать это в Excel. Если вы хотите выполнить поиск, то можете сделать это с помощью Ctrl + F, вызывая диалог поиска. Если есть несколько критериев, возможно, фильтры помогут вам. Для удаления дубликатов есть несколько способов. Вы должны быть немного яснее в том, что вам нужно. Скорее всего, хотя, если вы будете искать этот сайт, вы найдете то, что вам нужно, поскольку ваши требования кажутся достаточно простыми.
Амер
1
Все ли файлы Excel имеют одинаковый формат с двумя столбцами? Это файлы .xlsxили .csv? У файлов есть несколько листов? Добавление дополнительной информации к вашему вопросу поможет вам получить ответы.
Excellll
преобразовать в текст и grep.
Ярослав Рахматуллин

Ответы:

5

Все еще нет приличных ответов? Так как вы сказали grep, я предполагаю, что вы знаете, как использовать оболочку;

$ link=http://wizard.ae.krakow.pl/~jb/xls2txt/xls2txt-0.13.tar.gz
$ wget -nv "$link" && \
  tar xf `basename "$link"` && \
  cd $(basename "$link" .tar.gz) &&\
   make
2013-07-24 URL:(...)/xls2txt-0.13.tar.gz [12419/12419] -> "xls2txt-0.13.tar.gz"
cc -O2 -g -DVERSION=0.13 -c xls2txt.c -o xls2txt.o
cc -O2 -g   -c -o ole.o ole.c
cc -O2 -g   -c -o cp.o cp.c
cc -O2 -g   -c -o ummap.o ummap.c
cc -O2 -g   -c -o ieee754.o ieee754.c
cc -lm  xls2txt.o ole.o cp.o ummap.o ieee754.o   -o xls2txt

$ awkf() { awk -F\\t '{ printf "%20s | %-20s\n", $1, $2 }' ; }
$ x2t() { ./xls2txt $1 C4:D5 | awkf > `basename "$1" .xls`.txt ; }
$ x2t ramesh2.xls ; x2t ramesh.xls

И отчет:

$ grep MXS1268 ramesh*txt
ramesh.txt:         Operator ID | MXS1268
ramesh2.txt:         Operator ID | MXS1268
Ярослав Рахматуллин
источник
Вы можете получить копию входного файла с помощью wget http://sprunge.us/MbhE -q -O- | base64.exe -d > ram.xls.
Ярослав Рахматуллин
Я хочу опробовать ваше решение, но ваша ссылка "Запрещено"
Кен Ингрэм,
просто посмотрите на файл, прежде чем запускать его, не будь глупым.
Ярослав Рахматуллин
Слушать. Не переходи на личности. Я получаю ошибку 403 с этой ссылкой. "2019-02-08 09:38:13 ОШИБКА 403: запрещено."
Кен Ингрэм
1
Хорошо. Я думал, ты имел в виду что-то еще. просто погуглите пакет xls2txt
Ярослав Рахматуллин
2

В Linux или Cygwin:

$ xlsx2csv myfile.xlsx | grep MXS1268 
golimar
источник
Черт. Это было слишком хорошо, чтобы быть правдой. Я установил его, но все, что я получил, - это ошибка: ===> "ValueError: недопустимый литерал для int () с основанием 10: '1023 1025'"
Кен Ингрэм
Попробуйте оба с python2 и python3
golimar
Эх. Что вы имеете в виду? Попробуйте оба, что?
Кен Ингрэм
У меня есть список из 10 файлов xlsx, и я хочу grep для одного куска данных.
Кен Ингрэм
1

Вы можете попробовать использовать openpyxl - или любое количество пакетов Python - если вы знаете базовый Python. Если у вас не получается использовать grep, выведите excel в текст и передайте его через grep. Или просто напишите скрипт pygrep, чтобы сделать все это.

blackappy
источник