这章我们快速入门python-docx,让大家很快能在工作里用起来。
打开文件
您需要的第一件事是要处理的文档。最简单的方法是:
from docx import Document document = Document()
这将打开一个基于默认“模板”的空白文档,几乎是您使用内置默认值在Word中启动新文档时获得的文档。您可以使用打开和处理现有Word文档python-docx,但我们暂时保持简单。
添加段落
段落是Word中的基础。它们用于正文,但也用于标题和列表项目。
这是添加一个最简单的方法:
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
此方法返回对文档末尾新添加的段落的引用。paragraph 在这种情况下,新的段落引用被分配给了,但除非需要,否则将在以下示例中将其留下。在代码中,通常在添加它之后就不会对项目做任何事情,所以在保持对它的引用时没有多少意义。
也可以使用一个段落作为“游标”并在其正上方插入一个新段落:
prior_paragraph = paragraph.insert_paragraph_before('Lorem ipsum')
这允许将段落插入文档的中间,这在修改现有文档时通常很重要,而不是从头开始生成。
添加标题
除了最短的文档之外,正文文本被分成几个部分,每个部分都以标题开头。以下是添加一个的方法:
document.add_heading('The REAL meaning of the universe')
默认情况下,这会添加一个顶级标题,Word中显示的标题为“标题1”。如果需要子节的标题,只需将所需级别指定为1到9之间的整数:
document.add_heading('The role of dolphins', level=2)
如果指定级别0,则添加“标题”段落。这可以很方便地启动一个没有单独标题页的相对较短的文档。
添加分页
每隔一段时间,您希望旁边的文本在单独的页面上进行,即使您所在的文本未满。“硬”分页符可以完成:
document.add_page_break()
如果你发现常使用它,这代表您更好地理解了段落样式。可以设置的一个段落样式属性是在具有该样式的每个段落之前立即中断页面。因此,可以将某个级别的标题设置为始终开始新页面。更多关于款式的信息。这点对于真正充分利用Word来说至关重要。
添加表
一个经常遇到的内容有助于表格呈现,排列整齐的行和列。Word在这方面做得很好。以下是添加表格的方法:
table = document.add_table(rows=2, cols=2)
表有几个属性和方法,您可以填充它们。访问单个细胞可能是一个很好的起点。作为基线,您始终可以通过其行和列指示访问单元格:
cell = table.cell(0, 1)
这为您提供了我们刚刚创建的表格顶行中的右侧单元格。请注意,行和列指示从零开始,就像在列表访问中一样。
一旦你有一个单元格,你可以在其中放入一些东西:
cell.text = 'parrot, possibly dead'
通常,一次访问一行单元格更容易,例如从数据源填充可变长度的表时。.rows 表的属性提供对各行的访问,每个行都有一个.cells属性。.cells两者上的属性Row并Column 支持索引访问,如列表:
row = table.rows[1] row.cells[0].text = 'Foo bar to you.' row.cells[1].text = 'And a hearty foo bar to you too sir!'
表上的.rows和.columns集合是可迭代的,因此您可以直接在for循环中使用它们。与.cells行或列上的序列相同:
for row in table.rows: for cell in row.cells: print(cell.text)
如果要计算表中的行数或列数,只需使用len()序列:
row_count = len(table.rows) col_count = len(table.columns)
您还可以逐步向表中添加行,如下所示:
row = table.add_row()
这对于我们上面提到的可变长度表场景非常方便:
# get table data ------------- items = ( (7, '1024', 'Plush kittens'), (3, '2042', 'Furbees'), (1, '1288', 'French Poodle Collars, Deluxe'), ) # add table ------------------ table = document.add_table(1, 3) # populate header row -------- heading_cells = table.rows[0].cells heading_cells[0].text = 'Qty' heading_cells[1].text = 'SKU' heading_cells[2].text = 'Description' # add a data row for each item for item in items: cells = table.add_row().cells cells[0].text = str(item.qty) cells[1].text = item.sku cells[2].text = item.desc
虽然我还没有看到它的用例,但同样适用于列。
Word有一组预先格式化的表格样式,您可以从其表格样式库中选择。你可以像这样在表格中应用其中一个:
table.style = 'LightShading-Accent1'
通过从表样式名称中删除所有空格来形成样式名称。您可以通过将鼠标悬停在Word的表格样式库中的缩略图上来找到表格样式名称。
添加图片
Word允许您使用菜单项将图像放置在文档中。以下是如何执行此操作:Insert > Photo > Picture from file...python-docx
document.add_picture('image-filename.png')
此示例使用路径,该路径从本地文件系统加载图像文件。您还可以使用类似文件的对象,基本上任何类似于打开文件的对象。如果您从数据库或网络中检索图像并且不希望涉及文件系统,这可能很方便。
图像尺寸
默认情况下,添加的图像以原始大小显示。这通常比你想要的要大。原始大小计算为。因此,具有300 dpi分辨率的300x300像素图像出现在一平方英寸中。问题是大多数图像不包含dpi属性,默认为72 dpi。这将使相同的图像在一侧显示4.167英寸,大约是页面的一半。pixels / dpi
要获得所需尺寸的图像,您可以以方便的单位指定其宽度或高度,例如英寸或厘米:
from docx.shared import Inches document.add_picture('image-filename.png', width=Inches(1.0))
您可以自由指定宽度和高度,但通常您不希望这样。如果仅指定一个,则python-docx使用它来计算另一个的正确缩放值。这样就可以保留纵横比,并且您的图片看起来不会拉长。
该Inches和Cm被提供的类,让你指定派上用场单位测量。在内部,python-docx使用英制公制单位,914400英寸。所以,如果你忘了,只是把像width=2你这样的东西得到一个非常小的图像:)。您需要从docx.shared 子包中导入它们。您可以在算术中使用它们,就像它们是整数一样,实际上它们就是整数。所以表达式就好了。width = Inches(3) / thing_count
应用段落样式
如果您不知道Word段落样式是什么,那么您一定要查看它。基本上,它允许您一次将一整套格式选项应用于段落。如果你知道那些是什么,它就像CSS样式。
您可以在创建段落时正确应用段落样式:
document.add_paragraph('Lorem ipsum dolor sit amet.', style='ListBullet')
这种特殊的风格使得段落看起来像子弹,非常方便。您也可以在之后应用样式。这两行等同于上面的那一行:
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.') paragraph.style = 'List Bullet'
在此示例中,使用其样式名称“List Bullet”指定样式。通常,样式名称与Word用户界面(UI)中显示的完全相同。
应用粗体和斜体
为了理解大胆和斜体的工作方式,您需要了解一段内容的内容。简短的版本是这样的:
通过向.add_paragraph()方法提供文本来添加段落时,它将被放入单个运行中。您可以使用.add_run()段落上的方法添加更多内容:
paragraph = document.add_paragraph('Lorem ipsum ') paragraph.add_run('dolor sit amet.')
这会产生一个看起来就像从单个字符串创建的段落。除非你看一下XML,否则段落文本被分成运行的地方并不明显。请注意第一个字符串末尾的尾随空格。您需要明确在运行的开头和结尾出现空格的位置。它们不会在运行之间自动插入。期待被那几次抓住:)。
Run对象具有a .bold和.italic属性,允许您为运行设置其值:
paragraph = document.add_paragraph('Lorem ipsum ') run = paragraph.add_run('dolor') run.bold = True paragraph.add_run(' sit amet.')
它产生的文字看起来像这样:'Lorem ipsum dolor sit amet。'
请注意,.add_run()如果您不需要其他任何内容,您可以在结果上设置粗体或斜体:
paragraph.add_run('dolor').bold = True # is equivalent to: run = paragraph.add_run('dolor') run.bold = True # except you don't have a reference to `run` afterward
没有必要为.add_paragraph()方法提供文本。如果您从运行中构建段落,这可以使您的代码更简单:
paragraph = document.add_paragraph() paragraph.add_run('Lorem ipsum ') paragraph.add_run('dolor').bold = True paragraph.add_run(' sit amet.')
应用字符样式
除了指定一组段落级别设置的段落样式之外,Word还具有指定一组运行级别设置的字符样式。通常,您可以将字符样式视为指定字体,包括字体,大小,颜色,粗体,斜体等。
与段落样式一样,必须已在使用Document()调用打开的文档中定义字符样式(请参阅 了解样式)。
添加新运行时可以指定字符样式:
paragraph = document.add_paragraph('Normal text, ') paragraph.add_run('text with emphasis.', 'Emphasis')
您还可以在创建后将样式应用于运行。此代码产生与上面的行相同的结果:
paragraph = document.add_paragraph('Normal text, ') run = paragraph.add_run('text with emphasis.') run.style = 'Emphasis'
与段落样式一样,样式名称与Word UI中显示的一样。接下来会带大家更详细的对python自动化word的知识做一个介绍和实践。喜欢的请为我们打call或提出建议。
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
这里把Python常用的技术点做了整理,有各个领域的知识点汇总,可以按照上面的知识点找对应的学习资源。
Python常用的开发软件,会给大家节省很多时间。
编程学习一定要多多看视频,书籍和视频结合起来学习才能事半功倍。
光学理论是没用的,学习编程切忌纸上谈兵,一定要动手实操,将自己学到的知识运用到实际当中。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。