企业3步落地数字化档案制度建设 快速合规提升内部管理水平
第一步:梳理适配规则 用Excel搭建基础元数据映射表
前置准备
准备一份空白Excel(WPS、Google Sheets也可,推荐用2019及以上版本Excel),提前列出本单位所有需归档的核心业务场景,比如行政类、财务类、项目类、人事类。
实操步骤
- 提取核心业务的法定/内部必填归档项:
- 行政类(参考《机关档案管理规定》简化版企业版):文件编号、文件标题、密级(如有)、成文日期、主送/抄送部门、拟稿人、归档人、归档日期、保管期限(永久/30年/10年/临时)
- 财务类(参考《会计档案管理办法》2020版):凭证编号、凭证类型、摘要、附件张数、金额、会计期间、记账人、审核人、归档人、归档日期、保管期限
- 人事类(参考《干部人事档案工作条例》企业通用简化):员工工号、姓名、档案类型(入职/转正/离职/奖惩/培训)、形成日期、归档人、归档日期、保管期限(退休/离职后至少5年)
- 建立Excel元数据映射表:
新建Sheet1,表头设置为:元数据ID、业务分类、必填项名称、字段类型、字段长度、默认值、备注。
以下是可直接复制的样例(仅列核心字段):
- 元数据ID:A001
- 业务分类:行政
- 必填项名称:文件编号
- 字段类型:文本
- 字段长度:50
- 默认值:无
- 备注:行政-XXXX-XXX格式(XXXX为年份,XXX为流水号)
- 设置必填项约束和格式校验:
新建Sheet2作为业务归档录入表,列名对应元数据映射表的“必填项名称”;
强制必填约束:选中所有数据录入行(从第2行开始),点击「数据」→「数据验证」→「设置」→「允许」选「自定义」→「公式」栏输入
=COUNTA(A2:G2)=7(假设A-G是必填项列,数字7是必填项总数,根据实际修改)→「出错警告」设置为「停止」,提示内容输入「请填写所有必填项」;文件编号自动生成:在文件编号列(假设A列)第2行输入
=IF(ISBLANK(B2),"","行政-"&TEXT(TODAY(),"yyyy")&"-"&TEXT(COUNTIF($A$1:A1,"行政-"&TEXT(TODAY(),"yyyy")&"")+1,"000")),下拉填充即可,仅当标题列(B列)有内容时才生成编号。
第二步:用免费开源软件Teedy搭建轻量级数字化档案库
前置准备
电脑需安装Java 11+(推荐OpenJDK 17 LTS版),下载地址:https://adoptium.net/zh-CN/temurin/releases/?version=17&os=windows&arch=x64&package=jre
下载Teedy最新稳定版jar包,下载地址:https://github.com/sismics/docs/releases(选择docs-x.y.z.jar,x.y.z为版本号,当前最新2.11.0)
实操步骤
- 安装并启动Java环境:
下载后双击OpenJDK安装包,默认安装路径即可,安装完成后打开CMD(Windows按Win+R,输入cmd回车),输入
java -version,回车后显示“openjdk version "17.0.x"”即成功。 - 启动Teedy档案库:
将docs-x.y.z.jar放在非中文路径的文件夹(比如D:\teedy),在该文件夹空白处按住Shift+右键,选择「在此处打开PowerShell窗口」(或CMD窗口);

输入启动命令
java -jar docs-x.y.z.jar(x.y.z替换为实际版本号),回车后等待30-60秒,看到“Server started”字样即启动成功。 - 初始化Teedy并配置元数据:
打开浏览器,输入http://localhost:8080,首次登录账号密码都是admin;
修改初始密码:点击右上角头像→「Profile」→「Password」,输入旧密码、设置新密码并保存;
配置业务分类:点击左侧「Admin」→「Tags」→「Create tag」,依次输入行政、财务、项目、人事,颜色可选,保存;
配置元数据模板:点击左侧「Admin」→「Metadata schemas」→「Create schema」,名称输入「企业通用归档元数据」,点击「Add field」,对照第一步的元数据映射表依次添加,字段类型可选Text、Number、Date、Select(密级、保管期限用Select),保存后点击「Assign tags」,勾选行政、财务、项目、人事,绑定成功。
第三步:打通Excel-Teedy 用Python脚本实现批量自动归档
前置准备
电脑需安装Python 3.8+,下载地址:https://www.python.org/downloads/(安装时勾选「Add Python to PATH」);
安装第三方库:打开CMD,输入pip install openpyxl requests,回车等待安装完成。
实操步骤
- 编写Python批量归档脚本:
在D:\teedy文件夹新建一个文本文档,重命名为「batch_upload.py」,右键用记事本打开,复制以下完整代码并保存:
import openpyxl import requests import os 配置区域(请根据实际修改) TEEDY_URL = "http://localhost:8080" USERNAME = "admin" PASSWORD = "你的新密码" EXCEL_PATH = "D:\\teedy\\业务归档录入表.xlsx" ATTACHMENT_FOLDER = "D:\\teedy\\待归档附件" 附件放在这里,命名规则:文件编号_标题.pdf(或docx等) 登录获取token def get_token(): login_url = f"{TEEDY_URL}/api/user/login" response = requests.post(login_url, json={"username": USERNAME, "password": PASSWORD}) response.raise_for_status() return response.json()["token"] 批量上传 def batch_upload(): token = get_token() headers = {"Authorization": f"Bearer {token}"} 读取Excel wb = openpyxl.load_workbook(EXCEL_PATH, data_only=True) ws = wb.active 默认读取第一个Sheet header = [cell.value for cell in ws[1]] rows = ws.iter_rows(min_row=2, values_only=True) for row in rows: 如果文件编号为空,跳过 file_id = row[header.index("文件编号")] if not file_id: continue 构建元数据 metadata = {} for i, field in enumerate(header): value = row[i] if value: Date类型转换为ISO格式(YYYY-MM-DD) if isinstance(value, (datetime.datetime, datetime.date)): value = value.strftime("%Y-%m-%d") metadata[field] = value 获取业务分类标签ID tag_name = row[header.index("业务分类")] tag_url = f"{TEEDY_URL}/api/tag" tag_response = requests.get(tag_url, headers=headers) tag_response.raise_for_status() tag_id = next((t["id"] for t in tag_response.json() if t["name"] == tag_name), None) if not tag_id: print(f"未找到标签:{tag_name},跳过文件:{file_id}") continue 查找附件 attachment_path = None for filename in os.listdir(ATTACHMENT_FOLDER): if filename.startswith(file_id): attachment_path = os.path.join(ATTACHMENT_FOLDER, filename) break if not attachment_path: print(f"未找到附件:{file_id},跳过") continue 上传档案 upload_url = f"{TEEDY_URL}/api/document" with open(attachment_path, "rb") as f: files = {"file": f} data = {"metadata": str(metadata), "tags": str([tag_id])} upload_response = requests.post(upload_url, headers=headers, files=files, data=data) upload_response.raise_for_status() print(f"成功上传档案:{file_id}") if __name__ == "__main__": import datetime batch_upload()注意:代码开头的配置区域必须替换为自己的内容,待归档附件命名严格按规则。
- 执行批量归档:
在D:\teedy文件夹按住Shift+右键,打开PowerShell/CMD,输入
python batch_upload.py,回车后即可看到上传进度。