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


11

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

Operator ID           MXS1268
Name                  ramesh    

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


В зависимости от того, что вы хотите сделать, есть разные способы сделать это в 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 

Черт. Это было слишком хорошо, чтобы быть правдой. Я установил его, но все, что я получил, - это ошибка: ===> "ValueError: недопустимый литерал для int () с основанием 10: '1023 1025'"
Кен Ингрэм

Попробуйте оба с python2 и python3
golimar

Эх. Что вы имеете в виду? Попробуйте оба, что?
Кен Ингрэм

У меня есть список из 10 файлов xlsx, и я хочу grep для одного куска данных.
Кен Ингрэм

1

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.