qq群网站制作,做外贸必须有网站吗,seo外链推广,泰安网约车日常需要经常处理Word文档#xff0c;发现了一个新的Python包#xff1a;Python-docx#xff0c;处理docx十分方便。而且这个包和pandas包结合使用#xff0c;可以在word插入excel表格#xff0c;节省了很多复制、粘贴、调整表格样式的时间#xff0c;真的很方便#xf…日常需要经常处理Word文档发现了一个新的Python包Python-docx处理docx十分方便。而且这个包和pandas包结合使用可以在word插入excel表格节省了很多复制、粘贴、调整表格样式的时间真的很方便但是要注意Python-docx只能处理docx、docx、docx文件下面给大家介绍一下如何使用Python-docx吧抛砖引玉~0. 学习思路一、 基础安装Python-docx并对照”官方帮助说明“了解包的对象和基本函数这里建议在python交互模式下进行可以直观的看到返回值和报错。二、 出题自己定义一个问题并解决来加深对包的理解。题目”创建一个docx文件要求输入2个表格并且这个表格有填充的数字表格前有相应标题。“三、 进阶试试包的更多函数看会触发什么效果。结合pandas学习表格和字体、字号、颜色的处理一、 基础1.1 使用conda安装python-docxconda install -c conda-forge python-docx没有了解过conda的同学可以看看 Anaconda国内镜像停止后怎么办(已恢复)文中有简单介绍。1.2 简要了解Python-docx1 打开/读取文档第一步当然是创建文档并打开啦~from docx import Documentimport ospath a.docxos.system(touch %s %path) # 调用shell命令创建a.docx文件documentNew Document() # 不指定路径是创建文件documnet Document(path) # 指定路径是读取文件w(Д)w 发现报错 PackageNotFoundError docx.opc.exceptions.PackageNotFoundError: Package not found ...原来是因为a.docx中没有任何内容。打开a.docx之后输入几个字符再重试以上代码就不会报错了。2 插入标题使用 add_heading() 或add_paragraph()添加标题document.add_heading(Document Title, 0)# 方法1document.add_heading(Heading 1, level1) # 用level设置level为0-5对应不同级别的标题# 方法2document.add_paragraph(Heading 1, styleHeading 1) # 用style来设置不同级别的标题3. 插入段落段落是word文档中最基本的对象之一。插入段落主要使用的函数是add_paragraph() #添加段落add_run() #追加文字#插入段落 同时设置粗体和斜体~p document.add_paragraph(A plain paragraph having some )p.add_run(bold).bold True #粗体p.add_run( and some )p.add_run(italic.).italic True #斜体段落还可以使用style设置风格。# 圆点列表document.add_paragraph(first item in unordered list, styleList Bullet)# 序号列表document.add_paragraph(first item in ordered list, styleList Number)# 引用document.add_paragraph(Intense quote, styleIntense Quote)4 插入图片from docx.shared import Inchesdocument.add_picture(image-filename.png, widthInches(1.0))5 分页符document.add_page_break()6 插入表格主要使用的函数add_table() # 新建表格add_row() # 添加行add_col() # 添加列table.cell(i, j).text() # 往表格中添加内容table.rows() # 行数table.cols() # 列数records ((3, 101, Spam),(7, 422, Eggs),(4, 631, Spam, spam, eggs, and spam))# 新建1行3列的表table document.add_table(rows1, cols3) # row行, col列# 使用table 的rows()和columns()得到这个表格的行数和列数print(len(table.rows))print(len(table.columns))# 添加标题行hdr_cells table.rows[0].cells # 注意 table.rows(0)表示第1行hdr_cells[0].text Qtyhdr_cells[1].text Idhdr_cells[2].text Desc# 将records中的数据添加到新建的table中for qty, id, desc in records:row_cells table.add_row().cellsrow_cells[0].text str(qty)row_cells[1].text idrow_cells[2].text desc如果熟悉pandas那你肯定知道创建的dataframe默认会自带标题行。但是python-docx不同需要自行添加标题行。这里要注意一下不过别紧张不需要死记硬背出现问题多调试就行~7 保存文件document.save(path) # 指定路径二、 做题至此官方文档的示例学的差不多了基本上就是对标题、段落、表格和图片的处理。下面来做一个简单的题目创建一个docx文件要求输入2个三行七列的三线表。表格1标题栏为数字1到7。表格前有相应标题“1. 表格1”标题的字体为等线且为斜体。表格2标题栏为大写字母A到G。表格前有相应标题“2. 表格2”, 标题的字号为12且为粗体。希望你先自己写一下有问题多搜索。然后再来看看我的答案对比下思路的不同。这样学的更快有问题也可以互相交流学习~实现代码#!/bin/usr/env pythonfrom docx import Documentfrom docx.shared import Pt # 设置字号document Document()# 表格1# 标题1字体为等线且为斜体title1 document.add_heading(u1.表格1, level1)title1.style.font.name u等线 # 设置中文字体前面要有utitle1.italic Truetable1 document.add_table(rows3,cols7) # 3行7列# 设置表格标题栏for i in range(7):table1.cell(0,i).text str(i1)table1.styleLight Shading # 风格为三线表# 表格2# 标题2字号为12且为粗体title2 document.add_paragraph(u2.表格2,styleheading 1)title2.style.font.size Pt(12)title2.bold Truetable2 document.add_table(rows3,cols7) # 3行7列headLine [A,B,C,D,E,F,G]# 设置表格标题栏for i in range(7):table2.cell(0,i).text headLine[i]table2.styleLight Shading # 风格为三线表# 储存document.save(test.docx)最终结果↓ 三、进阶3.1 表格样式模板其中常用的有Light Shading(三线表)↓ Table Grid(网格型)↓ Light Grid(浅色网格)↓ Medium List 1(中等深浅列表1) ↓Medium List 2(中等深浅列表2) ↓ 可以点击查看 python---word表格样式设置. 蜗v牛. CSDN 查看更多样式示例。但是现在的Python-docx包代码有些更新样式和该链接中的图例部分有出入。使用时需要自行调试~3.2 自定义表格样式先试试下面的代码~from docx import Document # 输出docxfrom docx.shared import Pt # 设置字号from docx.shared import Cm # 设置宽度单位是cmfrom docx.shared import RGBColor # 设置字体颜色document Document()table document.add_table(6,2, styleNormal Table)colHeadLine [A,B,C,D,E,F]for i in range(6):# 给单元格赋值的同时修改样式不影响整个表格cell table.cell(i,0)cell.width Cm(2) # 设置单元格宽度为2cmrun cell.paragraphs[0].add_run(colHeadLine[i])run.font.color.rgb RGBColor(0,100,0)run.font.name u等线run.italic Truetable.columns[0].widthCm(3)# 修改整个表格的字体样式table.style.font.size Pt(10)# 保存document.save(test.docx)3.2.1 表格自动适应窗口大小table.autofit True3.2.2 自定义表格宽度或高度a. 方法1table.cell(row,col).width Cm(4) #table.cell(row,col).height Cm(4)b. 方法2特别需要注意的是column和row后面是有s的官方文档中有无s标注错误害得我还以为不能这样操作捂脸.jpg。table.columns[0].widthCm(2) # 不起效不知道为什么table.rows[0].heightCm(2) # 起效3.2.3 对齐a. 表格对齐table.alignment WD_TABLE_ALIGNMENT.CENTER #居中table.alignment WD_TABLE_ALIGNMENT.LEFT #靠左table.alignment WD_TABLE_ALIGNMENT.RIGHT #靠右b. 文字对齐# 水平方向table.cell(row,col).paragraphs[0].paragraph_format.alignment WD_ALIGN_PARAGRAPH.CENTERtable.cell(row,col).paragraphs[0].paragraph_format.alignment WD_ALIGN_PARAGRAPH.LEFTtable.cell(row,col).paragraphs[0].paragraph_format.alignment WD_ALIGN_PARAGRAPH.RIGHT# 垂直方向table.cell(row,col).vertical_alignment WD_ALIGN_VERTICAL.CENTERtable.cell(row,col).vertical_alignment WD_ALIGN_VERTICAL.TOPtable.cell(row,col).vertical_alignment WD_ALIGN_VERTICAL.BOTTOM3.3 add_run() 设置字体、字号和颜色from docx import Documentfrom docx.shared import Pt # 设置字号from docx.shared import RGBColor # 设置字体颜色document Document()p document.add_paragraph(A plain paragraph)run p.add_run( is plain) # 注意is之前的空格run.font.name u等线 #设置字体run.font.size Pt(10.5) # 设置字号run.font.color.rgb RGBColor(250,0,0) # 设置字体颜色# 保存document.save(test.docx)3.3 结果3.4 结合pandas的iloc函数将dataframe写入wordimport pandas as pdfrom docx import Document # 输出docxfrom docx.shared import Pt # 设置字号document Document()df pd.read_csv(a.csv, sep\t)rowNum df.shape[0] 1 # 行数加标题栏colNum df.shape[1] # 列数table document.add_table(rowsrowNum, colscolNum, style Light Grid)table.cell(0,0).text atable.cell(0,1).text btable.cell(0,2).text ctable.cell(0,3).text dfor i in range(1, rowNum):for j in range(colNum):cell table.cell(i,j)cell.text str(df.iloc[i-1,j])table.autofit Truetable.style.font.name u等线table.style.font.size Pt(12)document.save(outPutDocx)一个示例 ↓ 四、总结如何创建和读取文档插入标题、段落、图片、分页符和表格进阶学习表格和段落的字体、字号、颜色的处理后续如果发现更多有趣的用法也会更新本文~觉得有用别忘记点赞呀~感谢O(∩_∩)O~以上梨酱[论文写作 1] 如何用word批量制作三线表zhuanlan.zhihu.com梨酱[Linux 1] Shell“ 多线程”提高工作效率zhuanlan.zhihu.com梨酱[生信资料 3] 生物信息学常见数据格式汇总zhuanlan.zhihu.com参考