企业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窗口);

    企业3步落地数字化档案制度建设 快速合规提升内部管理水平

    输入启动命令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,回车后即可看到上传进度。

AI咨询
热线电话

028-85154420

15388110056

全国售前咨询电话

扫码咨询
安答联动微信公众号二维码

微信扫码关注安答联动

申请试用
热线电话
申请试用

安答联动档案管理系统