本指南介绍如何使用 excel-cli 的数据过滤和列选择功能,让您在导出前精确控制需要的数据。
数据过滤功能让您可以:
- 选择特定列 - 只导出需要的列
- 排除敏感列 - 移除不需要或敏感的列
- 过滤数据行 - 根据条件筛选符合要求的数据
- 组合使用 - 同时应用多个过滤条件
所有过滤操作都在内存中完成,不会修改原始 Excel 文件。
使用 --select 参数选择需要的列。
excel-cli convert -i <输入文件> -o <输出文件> --select "<列名1>,<列名2>,<列名3>"假设有如下 Excel 数据:
| ID | Name | Age | City | Salary | Password |
|---|---|---|---|---|---|
| 1 | 张三 | 28 | 北京 | 15000 | secret1 |
| 2 | 李四 | 35 | 上海 | 22000 | secret2 |
只导出 Name, Age, City 三列:
excel-cli convert -i users.xlsx -o users.json --select "Name,Age,City"输出:
[
{
"Name": "张三",
"Age": 28,
"City": "北京"
},
{
"Name": "李四",
"Age": 35,
"City": "上海"
}
]- 列名区分大小写,必须与 Excel 中的列名完全一致
- 多个列名用逗号分隔
- 列名顺序会影响输出顺序
- 如果指定的列名不存在,会报错
使用 --exclude 参数排除不需要的列。
excel-cli convert -i <输入文件> -o <输出文件> --exclude "<列名1>,<列名2>"排除 Password 和 Salary 列:
excel-cli convert -i users.xlsx -o users.json --exclude "Password,Salary"输出:
[
{
"ID": 1,
"Name": "张三",
"Age": 28,
"City": "北京"
},
{
"ID": 2,
"Name": "李四",
"Age": 35,
"City": "上海"
}
]- 移除敏感信息(如密码、身份证号)
- 排除内部使用的列
- 减少输出文件大小
使用 --filter 参数根据条件筛选数据行。
excel-cli convert -i <输入文件> -o <输出文件> --filter "<条件>"| 操作符 | 说明 | 示例 |
|---|---|---|
== |
等于 | City == 北京 |
!= |
不等于 | Status != 已删除 |
> |
大于 | Age > 30 |
< |
小于 | Price < 100 |
>= |
大于等于 | Score >= 60 |
<= |
小于等于 | Quantity <= 10 |
contains |
包含(字符串) | Name contains 张 |
not_contains |
不包含(字符串) | Email not_contains test |
is_empty |
为空 | Phone is_empty |
is_not_empty |
不为空 | Address is_not_empty |
1. 简单数值比较
筛选年龄大于 30 的用户:
excel-cli convert -i users.xlsx -o adults.json --filter "Age > 30"2. 字符串相等
筛选北京的用户:
excel-cli convert -i users.xlsx -o beijing_users.json --filter "City == 北京"3. 字符串包含
筛选名字中包含"张"的用户:
excel-cli convert -i users.xlsx -o zhang_users.json --filter "Name contains 张"4. 多个条件(AND 关系)
筛选年龄大于 30 且工资高于 20000 的用户:
excel-cli convert -i users.xlsx -o senior_high_paid.json \
--filter "Age > 30" \
--filter "Salary > 20000"5. 检查空值
筛选有手机号的用户:
excel-cli convert -i users.xlsx -o with_phone.json --filter "Phone is_not_empty"- 格式:
<列名> <操作符> <值> - 空格是必须的
- 值可以是数字、字符串或布尔值
- 字符串值不需要引号(除非包含空格)
- 多个条件之间是 AND 关系(所有条件都必须满足)
您可以同时使用列选择、列排除和行过滤。
只导出 Name, Age, Salary,且只包含工资高于 15000 的员工:
excel-cli convert -i employees.xlsx -o high_paid.json \
--select "Name,Age,Salary" \
--filter "Salary > 15000"排除敏感列,只保留活跃用户:
excel-cli convert -i users.xlsx -o active_users.json \
--exclude "Password,InternalId,CreatedBy" \
--filter "Active == true"选择特定列,应用多个过滤条件:
excel-cli convert -i sales.xlsx -o q4_high_value.csv -f csv \
--select "Date,Customer,Amount,Region" \
--filter "Date >= 2023-10-01" \
--filter "Amount > 10000" \
--filter "Region == 华东"excel-cli convert -i users.xlsx -o active_users.sql -f sql \
--sql-dialect postgresql \
--sql-table active_users \
--select "Name,Email,Age,City" \
--filter "Active == true" \
--filter "Age >= 18"输出:
-- Generated by excel-cli
-- Dialect: PostgreSQL
-- Table: active_users
-- Rows: 5
INSERT INTO "active_users" ("Name", "Email", "Age", "City") VALUES
('张三', 'zhang@example.com', 28, '北京'),
('李四', 'li@example.com', 35, '上海'),
...从用户数据中移除敏感信息:
excel-cli convert -i users_full.xlsx -o users_public.json \
--exclude "Password,BankAccount,IDNumber,Phone"筛选特定地区的高价值客户:
excel-cli convert -i customers.xlsx -o high_value_customers.csv -f csv \
--select "Name,Company,Revenue,Industry,Region" \
--filter "Revenue > 1000000" \
--filter "Region contains 华东"找出数据不完整的记录:
excel-cli convert -i contacts.xlsx -o incomplete.json \
--filter "Email is_empty"生成特定时期的销售报表:
excel-cli convert -i sales_2023.xlsx -o q4_report.csv -f csv \
--select "Date,Product,Quantity,Amount,Salesperson" \
--filter "Date >= 2023-10-01" \
--filter "Amount > 0"从生产数据中生成测试数据(移除真实信息):
excel-cli convert -i prod_orders.xlsx -o test_orders.sql -f sql \
--sql-dialect mysql \
--sql-table test_orders \
--exclude "CustomerPhone,CustomerAddress,PaymentInfo" \
--filter "Status == 已完成" \
--filter "Amount < 1000"- 先过滤行,后选择列 - 系统会自动优化,但建议在命令行中按此顺序
- 使用列选择代替排除 - 当需要的列较少时,
--select比--exclude更高效 - 组合多个条件 - 多个
--filter参数会依次应用,尽早排除不需要的数据 - 大文件处理 - 对于超大 Excel 文件,考虑先用 Excel 自带的筛选功能预处理
A: 当前版本只支持 AND 条件。如需 OR 逻辑,请分多次运行命令,然后合并结果。
A: 在命令行中用引号括起整个条件:
--filter "City == San Francisco"A: 当前版本不支持正则表达式,但支持 contains 操作符进行简单的子串匹配。
A: 工具会显示警告但仍会创建输出文件(空数组或无数据行)。检查:
- 列名是否正确(区分大小写)
- 条件值是否正确
- 操作符是否合适
A: 可以,但不推荐。如果同时使用,会先应用 --select,再应用 --exclude。
数据过滤功能让 excel-cli 不仅仅是一个格式转换工具,更是一个强大的数据预处理工具。通过灵活组合列选择、列排除和行过滤,您可以:
- 🔒 保护敏感数据
- 📊 快速生成报表
- 🎯 精确提取所需数据
- ⚡ 提高后续处理效率
结合 SQL 导出和 Schema 生成功能,excel-cli 可以成为您数据处理工作流中的得力助手。