如何在 Excel 中 grep 数据?

如何在 Excel 中 grep 数据?

我有一个 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

相关内容