运维侠职场日记18:用DeepSeek三天通关详解新手必看!保姆级教学Python+Word批量生成房产中介的租赁合同黑科技!

一. 痛点

运维侠小白有下面烦恼,听说deepseek可以帮助提升学习python的效率,可是deepseek给的代码也报错,怎么办?

在这里插入图片描述

欢迎阅读:Python邮件自动化大全打工人逆袭

deepseek生成的代码也有可能报错,例如:
在这里插入图片描述

⏰执行报错:由提示得知,是少导入需要的模块,但是补全,还是报错,这就是deepseek的局限性。需要继续发问,才能解决。
在这里插入图片描述
完整解决报错后代码:
在这里插入图片描述

多尝试,困难才会被克服

学习就像追妹子,你只能看到背影,但只要坚持日积月累的付出,迟早她整个人属于你❤。
在这里插入图片描述

二.基础:准备工作

⚠️避免报错:

  1. 文件路径 没有写绝对路径默认是处理python代码所在路径的文件,因此需要把代码文件放到这个处理的文件同一文件夹里。

(1)安装 python-docx模块

💻 代码:在命令行终端执行

# 安装必要库(命令行执行)
# pip install python-docx

在这里插入图片描述

(2)基本构成:word文档的"四件套"结构

想象Excel就像一本老式账本:

📒 段落(paragraph):每个积木组合成的形状

📦表格(Cell):每个小格子

📚 图片(picture):账本里的照片

📄 样式(Sheet):衣服的种类,休闲服、婚礼正装等

结构示意图:
在这里插入图片描述

三.进阶:基础操作

⚠️避免报错:

  1. 文件路径 没有写绝对路径默认是处理python代码所在路径的文件,因此需要把代码文件放到这个处理的文件同一文件夹里。
  2. 修改部分代码 可以举一反三,这个也能生成合同第一页。

(1)创建单个Word 文档

💻 代码:

# ---------------------------
# 自动生成Word文档
# ---------------------------
from docx import Document

# 1. 创建一个空白Word文档对象
doc = Document()

# 2. 添加标题(级别0为最大标题)
doc.add_heading('我的第一个模板', 0)

# 3. 添加正文段落
doc.add_paragraph('客户姓名: ____________')
doc.add_paragraph('缴费金额: ____________')

# 4.保存

doc.save(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\创建单个通知单模板.docx')
print("✅ Word文档生成成功!")

如图:
在这里插入图片描述

(2)读取文档内容

💻 代码:

from docx import Document
def read_doc(file_path):
    try:
        doc = Document(file_path)
        for i, paragraph in enumerate(doc.paragraphs):
            print(f"第{i+1}段:{paragraph.text}")
    except FileNotFoundError:
        print(f"⚠️ 找不到文件:{file_path}")

read_doc(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\单个创建通知单模板.docx')

源文档:
在这里插入图片描述

如图:
在这里插入图片描述

(3)添加图片

💻 代码:

from docx import Document
from docx.shared import Inches  # ← 关键导入!

def add_image(doc, img_path):
    try:
        doc.add_picture(img_path, width=Inches(3))  # 控制照片大小
        print(f"✅ 已插入图片:{img_path}")
    except FileNotFoundError:
        print(f"⚠️ 图片不存在:{img_path}")

doc = Document()
add_image(doc, r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\图片\窗边水彩下午茶时光.jpg')
doc.save(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\带图文档.docx')

如图:
在这里插入图片描述

(4)添加表格

💻 代码:

from docx import Document

def create_table(data):
    doc = Document()
    table = doc.add_table(rows=3, cols=3)

    # 填数据防错机制
    try:
        for row in range(3):
            for col in range(3):
                table.cell(row, col).text = str(data[row][col])
    except IndexError:
        print("⚠️ 数据量超过表格容量!")

    doc.save(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\数据表.docx')


data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
create_table(data)

如图:
在这里插入图片描述

⏰提示:一种需求可以有多种类型代码实现,实际中,我们可以从中选择,最适合的。应用场景,如下:

企业合同管理系统基础模板

销售订单自动生成系统

财务报销单模板生成器

课程报名信息登记表

通过这个模板生成器,后续可以结合客户数据自动填充生成完整合同,实现办公自动化流程的完整闭环。

四.实战案例集锦:

(1)阶段一基础版:自动生成excel_房源数据模版文件

💻 代码:基础读取

from openpyxl import load_workbook

# 测试文件路径
wb = load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\客户数据.xlsx')
ws = wb.active
print(ws['A2'].value)  # 预期输出:客户A

如图:
在这里插入图片描述

💻 代码:1. 创建空模板

from openpyxl import Workbook
from openpyxl.styles import Font
import os


def create_template():
    # 创建新工作簿
    wb = Workbook()
    ws = wb.active  # 获取第一个工作表

    # 设置表头(后续步骤填充)

    # 创建输出目录
    output_path = r"C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档"
    if not os.path.exists(output_path):
        os.makedirs(output_path)

    # 保存文件
    wb.save(os.path.join(output_path, "合同模板.xlsx"))


if __name__ == "__main__":
    create_template()
    print("模板生成成功!")

如图:
在这里插入图片描述

💻 代码:2. 添加表头的模版

from openpyxl import Workbook
from openpyxl.styles import Font
import os


def create_template():
    # 创建新工作簿
    wb = Workbook()
    ws = wb.active  # 获取第一个工作表

    # 设置表头
    headers = ["客户名称", "产品名称", "金额", "签约日期"]
    ws.append(headers)  # 写入第一行

    # 设置标题格式
    for cell in ws[1]:  # 遍历第一行所有单元格
        cell.font = Font(bold=True, color="FF0000")  # 加粗+红色字体

    # 创建输出目录
    output_path = r"C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档"
    if not os.path.exists(output_path):
        os.makedirs(output_path)

    # 保存文件
    wb.save(os.path.join(output_path, "合同模板-数据.xlsx"))


if __name__ == "__main__":
    create_template()
    print("模板生成成功!")

如图:
在这里插入图片描述
💻 代码:3. 添加客户信息的模版

from openpyxl import Workbook
from openpyxl.styles import Font
import os


def create_template():
    # 创建新工作簿
    wb = Workbook()
    ws = wb.active  # 获取第一个工作表

    # 设置表头
    headers = ["客户名称", "产品名称", "金额", "签约日期"]
    ws.append(headers)  # 写入第一行

    # 在表头下方添加示例数据行
    sample_data = ["客户A", "笔记本电脑", "金额", "6500"]
    ws.append(sample_data)

    # 设置标题格式
    for cell in ws[1]:  # 遍历第一行所有单元格
        cell.font = Font(bold=True, color="FF0000")  # 加粗+红色字体

    # 创建输出目录
    output_path = r"C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档"
    if not os.path.exists(output_path):
        os.makedirs(output_path)

    # 保存文件
    wb.save(os.path.join(output_path, "合同模板-客户信息.xlsx"))


if __name__ == "__main__":
    create_template()
    print("模板生成成功!")

如图:
在这里插入图片描述
💻 代码:4. 创建excel_房源数据完整代码

# -*- coding: utf-8 -*-
from openpyxl import Workbook
from openpyxl.styles import Font
import os


def create_template():
    # 创建新工作簿
    wb = Workbook()
    ws = wb.active

    # ====== 设置表头 ======
    headers = ["房东姓名", "租客姓名", "房屋地址","租期", "月租"]
    ws.append(headers)

    # 表头格式设置
    header_font = Font(bold=True, color="000000")  # 黑色加粗
    for cell in ws[1]:
        cell.font = header_font

    # ====== 添加示例数据 ======
    sample_data = ["王业主", "张先生", "朝阳区xx路1号", "2","6500"]
    sample_data2 = ["王业主", "郑先生", "朝阳区xx路1号", "12","7500"]
    ws.append(sample_data)
    ws.append(sample_data2)

    # ====== 调整列宽 ======
    column_widths = {'A': 20, 'B': 25, 'C': 15, 'D': 12}
    for col, width in column_widths.items():
        ws.column_dimensions[col].width = width

    # ====== 保存文件 ======
    output_dir = r"C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档"
    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    file_path = os.path.join(output_dir, "房源数据.xlsx")

    # 处理文件已存在的情况
    if os.path.exists(file_path):
        overwrite = input("文件已存在,是否覆盖?(y/n): ")
        if overwrite.lower() != 'y':
            print("操作已取消")
            return

    wb.save(file_path)
    print(f"模板已生成至:{os.path.abspath(file_path)}")


if __name__ == "__main__":
    create_template()

如图:
在这里插入图片描述

自定义修改

修改表头(示例)
headers = [“客户名称”, “商品型号”, “单价”, “数量”, “总价”]

修改列宽(示例)
column_widths = {‘A’: 25, ‘B’: 30, ‘C’: 15, ‘D’: 10, ‘E’: 15}

#修改输出文件名
file_path = os.path.join(output_dir, “新版合同模板.xlsx”)

(2)阶段二高级版:批量生成房产租赁合同(Word版)

1、素材准备
租赁合同模板.docx 内容:
在这里插入图片描述

2、房源数据.xlsx
⚠️注意:格式可根据实际需要调整,但是列名称需要与代码保持一致。如果变更,代码列字段也要改。
在这里插入图片描述

💻 代码:

# -*- coding: utf-8 -*-
from docx import Document
from openpyxl import load_workbook
from datetime import datetime
from docx.text.paragraph import Paragraph  # 关键导入
from docx.table import Table  # 关键导入


def replace_text(paragraph, old_text, new_text):
    """精准替换段落文字"""
    if old_text in paragraph.text:
        inline = paragraph.runs
        for item in inline:
            if old_text in item.text:
                item.text = item.text.replace(old_text, new_text)


# 加载Excel数据
wb = load_workbook(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\房源数据.xlsx')
ws = wb.active

for row in ws.iter_rows(min_row=2, values_only=True):
    landlord, tenant, address, term, rent = row

    doc = Document(r'C:\Users\ZHAOY\PycharmProjects\1\整理后的文件\文档\租赁合同模板.docx')

    # 替换常规字段
    replacements = {
        '{房东姓名}': landlord,
        '{租客姓名}': tenant,
        '{房屋地址}': address,
        '{租期}': str(term),
        '{月租}': f"{rent}元"
    }

    # 替换特殊条款
    today = datetime.now().strftime("%Y年%m月%d日")
    replacements['{签约日期}'] = today

    # 遍历所有段落和表格
    for component in [*doc.paragraphs, *doc.tables]:
        if isinstance(component, Paragraph):  # 现在可以正确识别类
            for key, value in replacements.items():
                replace_text(component, key, value)
        elif isinstance(component, Table):
            for row in component.rows:
                for cell in row.cells:
                    for para in cell.paragraphs:
                        for key, value in replacements.items():
                            replace_text(para, key, value)

    doc.save(f"{address}_租赁合同.docx")

print("租赁合同生成完成!")

如图:
在这里插入图片描述

💡 扩展性:朋友们!可通过修改模板文件添加公司LOGO、联系方式等固定内容。
💡 调试技巧:先测试单个文档生成,再扩展为批量处理
💡在评论区告诉我,下期教你用Python搞定!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术职场教练

您的是我坚持原创免费作品的不懈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值