我有一个 Excel 文件,其中包含两列数据,例如:
Operator ID MXS1268
Name ramesh
我需要在多个 Excel 文件中检查操作员 ID 具有相同值的重复项,并将其显示或放入某个日志文件中。
答案1
我发现了一位波兰人在 2013 年编写的一个很棒的工具。从那时起,该程序就转移到了 github。Makefile 已被删除(github 版本),而目前的维护者似乎正在使用 CMake。
然而,我们是精明的超级用户,所以我们知道如何编译东西:
$ link=https://github.com/vobys/xls2txt/archive/refs/heads/master.tar.gz
$ wget -nv "$link" \
&& tar xf master.tar.gz \
&& cd xls2txt-master \
&& gcc -O2 -lm cp.c ieee754.c ole.c ummap.c xls2txt.c -o xls2txt
提取数据。(既然你说了 grep,我假设你知道如何使用 shell)
$ 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
为了识别目的:
$ ./xls2txt ; echo; sed -n '/Copy/{ s/<.*//; p ; q; }' < xls2txt.c
usage: xls2txt [-C cs] [-n sheetnum|-A] [-f] file.xls [X:X]
xls2txt [-C cs] -l file.xls
X:X cell range (eg. A1:C5, D2:E)
-l list sheets
-n num select sheet
-A all sheets (\f separated)
-C cs output charset (utf8 asc iso1 iso2), utf8 is default
-f don't try to format numbers
-a ascii output (same as -C asc)
* Copyright (C) 2005-2011 Jan Bobrowski
更新 2022-05:看起来原作者不想再托管此内容,因为该证书已于 2021 年 11 月过期,并且旧 URL 产生 HTTP 403。
original (dead) link http://wizard.ae.krakow.pl/~jb/xls2txt/xls2txt-0.13.tar.gz
幸运的是,github 上有一个副本(链接到上面的 master.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
答案2
在 Linux 或 Cygwin 上:
$ xlsx2csv myfile.xlsx | grep MXS1268
答案3
如果您了解基本的 Python,您可以尝试使用 openpyxl 或任意数量的 Python 包。如果您坚持使用 grep,请将 excel 输出为文本并通过 grep 进行管道传输。或者只需编写一个 pygrep 脚本即可完成所有操作。
答案4
我刚刚遇到了类似的问题:我需要能够在大量 excel (xlsx) 文件中查找字符串。我能够使用名为“xlsxgrep”的工具解决此问题,该工具可在此处获得:https://pypi.org/project/xlsxgrep/。
概述
xlsxgrep 是一个 CLI 工具,用于在 XLSX、XLS、CSV、TSV 和 ODS 文件中搜索文本。其工作原理与 Unix/GNU Linux grep 类似。
特征
兼容 Grep:xlsxgrep 尝试与 Unix/Linux grep 兼容,只要有意义。支持某些 grep 选项(例如 -r、-i 或 -c)。
一次搜索多个 XLSX、XLS、CSV、TSV 和 ODS 文件,甚至在目录中递归搜索。
正则表达式:Python regex。
支持的文件类型:csv、ods、tsv、xls、xlsx