By · Last updated 2026-06-05

返回博客GDPR 与合规

Excel与GDPR:如何匿名化数百列个人信息

Excel是企业运营中个人信息密度最高的文件类型之一。了解为何标准文本分析在电子表格上会失效,以及列上下文感知分析如何破解这一难题。

June 5, 20268 分钟阅读
Excel GDPRspreadsheet anonymizationXLSX complianceHR datadata minimization

为何Excel是您风险最高的文件类型

Excel文件是大多数企业面临的最大GDPR风险之一。医疗记录单行数据的敏感程度可能更高,但电子表格中个人信息的积累速度极快——合规团队往往对此估计不足。

Excel文件难以管理的原因有三点。

数量庞大: 一个XLSX文件可包含50,000行和100列,即500万个单元格,任何人工审查都无法覆盖所有内容。

网格布局: 普通文本单向流动,而Excel将数据分布在行和列之间,个人数据可能隐藏在网格的任意位置。

内容混杂: 薪资区间、部门代码、职级与社会安全号码和电子邮件地址存储在同一文件中,若全部删除则文件失去价值。

保留时间长: 员工名单和客户记录在Excel中存放多年。GDPR第5(1)(e)条规定数据保留时间「不得超过必要期限」,而「可能有用」的文件往往留存远超这一时限。

为何标准文本扫描在电子表格上会失效

文本分析工具为文档处理而设计,在电子表格上会以几种常见方式出现故障。

社会安全号码被存为数字

Excel将无破折号的社会安全号码(如123456789)保存为普通数字,而非文本。专为识别###-##-####格式而构建的扫描工具会遗漏这些数字。有效的工具必须能够识别:「SSN」列中的9位数字就是社会安全号码。

日期被存为序列数字

Excel将日期存储为序列号,2024年2月6日被存储为45329。CSV导出文件在「出生日期」列中会显示「45329」。扫描工具必须先将该数字转换为真实日期,才能标记该值。

部分社会安全号码

某些系统仅显示社会安全号码的后四位(如***-**-1234),完整号码存储在受保护的列中。这个局部值仍需匿名化——即使它看起来不像完整的社会安全号码。

公式生成的个人信息

某些单元格从其他单元格构建个人信息,例如含有=CONCATENATE(B2," ",C2)的单元格会显示全名。如果清除了B列和C列,公式单元格中的全名仍然可见。仅读取存储值而不分析公式链接的工具会遗留个人信息。

多工作表问题

大型工作簿可能包含五个工作表:客户列表、订单、支持工单、账单和分析。客户姓名出现在所有五个工作表中。某一工作表中的「张三」必须与其他工作表中使用相同的标记——如「PERSON_0047」。使用两个不同标记会破坏记录关联。

列标题作为检测信号

电子表格个人信息检测中最有价值的改进,是列标题分析。

标题为「SSN」的列告诉工具:该列中的所有值都是社会安全号码,即使这些值不完整、格式特殊或以数字形式存储,这一判断依然成立。

列标题信号含义
SSN / Social Security / Tax ID将9位数字视为社会安全号码
Email / E-mail / Email Address标记即使不完整的电子邮件模式
Phone / Telephone / Mobile / Cell接受任何电话号码格式
DOB / Date of Birth / Birthday将序列数字转换为日期
First Name / Last Name / Full Name降低姓名检测阈值
Address / Street / City / ZIP合并相邻地址字段
Patient ID / MRN / Record Number应用医疗ID识别模式

列上下文不是对内容扫描的替代,而是补充。以「SSN」列中的100个值为例:内容扫描能捕获99个格式规范的值,而列上下文能捕获那一个格式异常的值。

保留结构,删除个人信息

大多数Excel GDPR合规案例的目标,不是销毁文件,而是在去除个人数据的同时保留使文件有价值的部分。

对于一份15,000行员工记录文件,合规专员需要:

删除:

  • 员工姓名 → PERSON_XXXX标记
  • 社会安全号码 → REDACTED(已删除)
  • 电子邮件地址 → REDACTED
  • 电话号码 → REDACTED
  • 家庭住址 → REDACTED

保留:

  • 部门代码
  • 职位(仅通用角色描述)
  • 薪资区间(宽泛类别)
  • 绩效评分(分组数据)
  • 入职日期(用于工龄统计)
  • 经理代码(如已假名化)

能够区分「识别个人身份的数据」和「描述职务的数据」的工具,可以输出一份既满足HR分析需求、又符合GDPR数据最小化规则的文件。

真实案例:并购中的人力资源数据传输

一家收购方获得目标公司的员工记录:一份包含40列、15,000行的XLSX文件。该文件需发送给外部人力资源公司用于福利规划。GDPR规定只能共享该任务所需的数据。

处理前: 40列,含完整姓名、社会安全号码、电子邮件、家庭住址、紧急联系人和银行信息。

经列上下文处理后:

  • 直接识别个人身份的12列(姓名、社会安全号码、电子邮件、电话、地址、银行数据):替换为一致的标记
  • 间接识别个人身份的3列(员工编号、经理代码、职务代码):替换为文件内一致的假名标记
  • 汇总数据的25列(薪资区间、部门、工龄、职级):保持不变

处理时间: 处理600,000个单元格耗时8分钟

输出: 保持40列的相同XLSX布局,其中15列已匿名化,25列不变

审计日志: 每项操作的单元格级记录,包含实体类型、置信度评分和使用的列信号

人力资源公司获得了完整的数据集,却不含任何姓名或身份标识。合规记录证明只共享了必要的数据。

这一挑战并非Excel独有,每种文件格式都有各自的缺陷。请参阅格式碎片化如何影响个人信息检测,了解跨文件类型的全面分析。

三条GDPR第5条规则,一个处理流程

结构化的电子表格匿名化处理可同时满足三条规则。

数据最小化(第5(1)(c)条): 只有接收方任务所需的列发送给接收方,识别身份的列已清除。

存储限制(第5(1)(e)条): 原始文件按法律规定保留,仅供共享的干净副本已创建,其保留期限更短或无需保留。

完整性与保密性(第5(1)(f)条): 任何识别性数据均不离开受控区域,仅共享干净副本。

处理过程中产生的审计日志也是您的第5(2)条证明文件,它显示了每条规则如何在每个文件上得到满足。

如果您的团队处理DSAR或大型数据导出,同样的逻辑在API层面同样适用。请参阅GDPR数据最小化如何在实时API中运作

对于在紧迫时间限制下处理大量工作的团队,请参阅GDPR DSAR规模化批处理了解同样适用的工作流程模式。

参考资料

准备好保护您的数据了吗?

开始使用 285 种实体类型在 48 种语言中匿名化 PII。

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

Related reading

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our servers live in Falkenstein, Germany.

We use Hetzner. They hold ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.