首页/文章/ 详情

Python生成计算书

1年前浏览524

 

以编程方式创建(编辑)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
最近编辑:1年前
太白金星
本科 慢慢来
获赞 14粉丝 32文章 397课程 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.1DeepSeek简介21.1.1DeepSeek介绍21.1.2DeepSeek的背景与目标21.1.3DeepSeek的产品31.1.4DeepSeek的应用场景51.1.5DeepSeek的核心功能61.2DeepSeek的架构概览71.2.1DeepSeek的整体架构设计81.2.2DeepSeek的模块划分81.2.3DeepSeek与其他模型的技术对比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.3DeepSeek模型的本地部署与接入212.3.1安装Ollama212.3.2部署DeepSeek模型222.3.3Chatbox部署可视化232.3.4DeepSeek接入整合25第3章混合专家模型(MoE)初探3.1项目介绍283.2功能模块303.3ZeRO配置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.3FP8权重604.4超参数配置614.4.1小规模版本(16B)的配置614.4.2中规模版本(236B)的配置634.4.3大规模版本(671B)的配置644.5模型架构644.5.1DeepSeek-V3模型架构介绍654.5.2配置信息664.5.3并行嵌入684.5.4线性变换694.5.5线性层704.5.6RMSNorm(均方根层归一化)734.5.7RoPE计算744.5.8多头注意力层774.5.9多层感知器804.5.10DeepSeek-V3中的MoE架构实现814.5.11Transformer模型864.5.12验证和测试884.6量化计算884.6.1输入张量进行量化处理894.6.2块级量化处理894.6.3权重矩阵的反量化904.6.4对激活值和权重的量化与反量化914.6.5调优参数924.6.6FP8矩阵乘法内核924.6.7FP8矩阵乘法实现944.7权重转换954.8测试模型1024.9DeepSeek-V3模型总结108第5章统一多模态大模型?5.1项目介绍1125.2架构原理与核心技术1125.3开源信息介绍1185.4工具模块1195.4.1对话管理1205.4.2数据加载1295.5构建多模态模型1315.6JanusFlow模型架构1855.6.3U-ViT模型1905.7模型推理2125.8Web交互测试219第6章适用于高分辨率图像的多模态模型6.1项目介绍2286.2开源模型2336.3开源信息介绍2346.4配置文件2356.5模型架构2376.6模型部署和在线服务3596.7图文对话推理3846.8Web测试387第7章DeepSeek-R1推理大模型7.1背景介绍4067.2项目介绍4067.3DeepSeek-R1-Zero训练方案4117.4DeepSeek-R1训练方案4167.5蒸馏处理419来源:数值分析与有限元编程

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