首页/文章/ 详情

Python生成计算书

2月前浏览189

 

以编程方式创建(编辑)Word、Excel文档是实现任务自动化、生成报告或制作专业文档的一种强大方法。在Python中自动化操作Word文档,最常用的模块是python-docx。python-docx是一个Python库,用于创建、修改Word (.docx)文件。

以计算分层土的自重应力并绘图为例,Python代码如下

  from  docx import Document
from docx.oxml.ns import qn  # 实际构建Font对象时需要使用qn来指定字体属性
from docx.oxml import OxmlElement
from docx.shared import Pt  # 用于设置字体大小
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import RGBColor  # 设置字体颜色,需导入rgb颜色模块

import matplotlib.pyplot as plt
import numpy as np


defcompute(gamma, dh):
    sigma = gamma * dh

    plot_h = dh.cumsum()
    plot_sigma = sigma.cumsum()


    plt.rcParams['font.sans-serif'] = ['MiSans']    # 这个字体能够支持中英文字符
    plt.rcParams['axes.unicode_minus'] = False      # 正常显示负号


    fig, ax = plt.subplots(nrows=1, ncols=1, figsize=(5,3.6),
                           facecolor='#f1f1f1', sharex=True)
    
    plt.plot(plot_sigma, plot_h, color='g', linewidth=2)
    plt.grid(True)

    plt.title('土的自重应力', fontsize=15)  # 设置标题和字体大小
    

    ax.set_xlabel("σ_z(kPa)", fontsize = 12)
    ax.set_ylabel("h(m)", fontsize = 12)
    # 设置x轴和y轴的范围
    ax.set_xlim(0135)  # x轴范围
    ax.set_ylim(09# y轴范围

    plt.gca().invert_yaxis()

    ax.xaxis.set_ticks_position('top')
    ax.xaxis.set_label_position('top')

    ax.fill_between(plot_sigma, plot_h, sum(plot_h),
                    color=plt.cm.magma(0.85),alpha=0.66)
    
    for idx,item inenumerate(plot_sigma):
        if idx > 0:
            ax.annotate(f'{plot_sigma[idx]:<3.1f}kPa',
                    xy=(item,plot_h[idx]),
                    xytext=(item,plot_h[idx]-0.1) )
                    

    fig.savefig("土中自重应力.png", dpi=300)

"""
python-docx直接设置字体名称可能不总是有效,特别是在处理中文字体时。
一种常见的做法是通过修改段落中每个run的字体属性来实现。以下是一个示例函数,
它演示了如何为文档中的某个段落设置宋体字体、字体大小、加粗等样式:
"""

defset_font(obj, font_name, font_size, bold, italic, color,loc):
    r = obj.add_run() ifnot obj.runs else obj.runs[0# 获取或创建run
    r.font.name = font_name 
    r._element.rPr.rFonts.set(qn('w:eastAsia'), font_name)  # 为中文字符设置特定的字体(关键步骤)
    r.font.size = Pt(font_size) 
    r.bold = bold  # 设置加粗
    r.italic = italic  # 设置斜体
    r.font.color.rgb = color  # 设置字体颜色(颜色代码为RGB)WD_PARAGRAPH_ALIGNMENT.CENTER
    obj.alignment = loc






defmain():
    gamma = np.array( [018.610.619.3] )
    dh = np.array( [01.563.72.8] )
    #  gamma和dh分别为土层的重度(kN/m3)和厚度(m)的数值。
    compute(gamma, dh)

    doc1 = Document()  # 创建计算书文档 
    h0 = doc1.add_heading('土应力计算书',0)   # 文档标题
    set_font(h0,'宋体'22,TrueFalse,  RGBColor(0,0,0), WD_PARAGRAPH_ALIGNMENT.CENTER)

    # 创建段落对象p1
    p1 = doc1.add_paragraph(r'本计算程序可以计算分层土的自重应力并绘图,'
                            r'函数清单中函数compute为采用线性代数点积法得到自重应力数值,'
                            r'并且通过数组累积求和得到自重应力数值,'
                            r'compute函数参数为输入土层的重度和厚度的数值。'
                            r'main函数生成计算书文档。'
                            ) 
    
    p1.add_run('')  # 修改p1(增加内容)
    # 使用上述函数设置中文字体
    set_font(p1,'宋体'12,TrueFalse,  RGBColor(0,0,0), WD_PARAGRAPH_ALIGNMENT.LEFT)

    # 创建段落对象p2
    p2 = doc1.add_paragraph()
    r = p2.add_run()  
    r.add_picture('D:/czuo/土中自重应力.png'# 插入图片
    p2.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER   # 图片位置居中
    doc1.save('D:/czuo/文档5.docx')       # 保存文档



if __name__ == "__main__":
    main()

生成的Word文档效果


来源:数值分析与有限元编程
pythonUM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-06-27
最近编辑:2月前
太白金星
本科 慢慢来
获赞 12粉丝 26文章 358课程 0
点赞
收藏
作者推荐

好书推荐-《DeepSeek源码深度解析》

本书是一本系统讲解DeepSeek源码及其核心实现原理的技术指南,内容覆盖了从基础概念到高级应用的全流程知识。全书共7章,结构层层递进。第1章对DeepSeek进行了全面概述,帮助读者构建对DeepSeek系统的整体认知。第2章聚焦于环境搭建、代码获取与模型部署接入,为后续深入研究提供基础。第3章深入探讨了MoE(混合专家模型)的基本原理、功能模块与优化技术。第4章详细解析了DeepSeek-V3模型的架构知识,并通过测试验证展示了系统的实际效果。第5章围绕统一多模态大模型展开,介绍了Janus系列架构、核心技术及工具模块。第6章针对高分辨率图像场景,探讨了结合MoE、细粒度特征提取与视觉/语言适配器的多模态模型的知识。第7章聚焦DeepSeek-R1推理大模型,展示了DeepSeek在推理性能与自我进化方面的探索。 本书适合人工智能工程师、深度学习研究者、AI产品开发人员及高校师生阅读。无论您是希望夯实开源模型基础,还是寻找前沿实战案例,本书都将为您提供全面而深入的参考与指导。目录第1章DeepSeek概述1.1 DeepSeek简介21.1.1 DeepSeek介绍21.1.2 DeepSeek的背景与目标21.1.3 DeepSeek的产品31.1.4 DeepSeek的应用场景51.1.5 DeepSeek的核心功能61.2 DeepSeek的架构概览71.2.1 DeepSeek的整体架构设计81.2.2 DeepSeek的模块划分81.2.3 DeepSeek与其他模型的技术对比9第2章环境搭建、代码获取与模型部署接入2.1 环境准备142.1.1 硬件环境要求142.1.2 软件环境配置152.2 源码获取与管理162.2.1 开源项目简介162.2.2 获取源码182.2.3 代码分支管理192.2.4 代码 新与同步202.3 DeepSeek模型的本地部署与接入212.3.1 安装Ollama 212.3.2 部署DeepSeek模型222.3.3 Chatbox部署可视化232.3.4 DeepSeek接入整合25第3章混合专家模型(MoE)初探3.1 项目介绍283.2 功能模块303.3 ZeRO配置303.4 模型微调343.4.1 微调原理343.4.2 生成提示文本353.4.3 配置模型微调参数363.4.4 设置训练数据373.4.5 配置超参数373.4.6 保存模型383.4.7 获取 检查点393.4.8 安全保存模型393.4.9 分词处理403.4.10 文本预处理403.4.11 数据收集器413.4.12 训练数据的分词和预处理423.4.13 构建和配置模型423.4.14 训练模型443.4.15 微调模型473.5 调用模型483.5.1 下载模型483.5.2 调用模型50第4章基于DeepSeekMoE架构的DeepSeek-V34.1 项目介绍544.1.1 核心特点544.1.2 训练流程544.1.3 与DeepSeekMoE项目的区别564.2 开源信息介绍574.3 模型权重584.3.1 权重结构584.3.2 加载规则594.3.3 FP8权重604.4 超参数配置614.4.1 小规模版本(16B)的配置614.4.2 中规模版本(236B)的配置634.4.3 大规模版本(671B)的配置644.5 模型架构644.5.1 DeepSeek-V3模型架构介绍654.5.2 配置信息664.5.3 并行嵌入684.5.4 线性变换694.5.5 线性层704.5.6 RMSNorm(均方根层归一化)734.5.7 RoPE计算744.5.8 多头注意力层774.5.9 多层感知器804.5.10 DeepSeek-V3中的MoE架构实现814.5.11 Transformer模型864.5.12 验证和测试884.6 量化计算884.6.1 输入张量进行量化处理894.6.2 块级量化处理894.6.3 权重矩阵的反量化904.6.4 对激活值和权重的量化与反量化914.6.5 调优参数924.6.6 FP8矩阵乘法内核924.6.7 FP8矩阵乘法实现944.7 权重转换954.8 测试模型1024.9 DeepSeek-V3模型总结108第5章统一多模态大模型?5.1 项目介绍1125.2 架构原理与核心技术1125.3 开源信息介绍1185.4 工具模块1195.4.1 对话管理1205.4.2 数据加载1295.5 构建多模态模型1315.6 JanusFlow模型架构1855.6.3 U-ViT模型1905.7 模型推理2125.8 Web交互测试219第6章适用于高分辨率图像的多模态模型6.1 项目介绍2286.2 开源模型2336.3 开源信息介绍2346.4 配置文件2356.5 模型架构2376.6 模型部署和在线服务3596.7 图文对话推理3846.8 Web测试387第7章DeepSeek-R1推理大模型7.1 背景介绍4067.2 项目介绍4067.3 DeepSeek-R1-Zero训练方案4117.4 DeepSeek-R1训练方案4167.5 蒸馏处理419来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈