入门python-docx
很容易。让咱们来看一下基础知识。html
官方文档地址请点击python
你须要的第一件事是工做的文档。最简单的方法是:数据库
from docx import Document document = Document()
这将打开一个基于默认“模板”的空白文档,您能够打开并使用现有的Word文档的工做python-docx
,咱们会让事情变得简单。api
段落是Word的基础。它们用于正文文本,但也用于标题和列表项目(如项目符号)。网络
这里是添加一个最简单的方法:字体
paragraph = document.add_paragraph('Lorem ipsum dolor sit amet.')
此方法返回对段落的引用,新添加的段落在文档的结尾。新的段落引用被分配给paragraph
在这种状况下,我将要离开了这一点在下面的例子中,除非我有一个须要它。在你的代码中,一般你不会对项目作任何事情,在添加它,因此没有什么意义,保持引用它挂在周围。ui
还可使用一个段落做为“光标”,并在其上直接插入一个新段落:spa
prior_paragraph = paragraph.insert_paragraph_before('Lorem ipsum')
这容许将一个段落插入到文档的中间,这在修改现有文档时一般很重要,而不是从头开始生成。code
在除了最短文档以外的任何内容中,正文文本被分红多个部分,每一个部分以一个标题开始。如下是如何添加一个:orm
document.add_heading('The REAL meaning of the universe')
默认状况下,这会添加顶级标题,Word中显示为“标题1”。当您须要子节的标题时,只需指定所需的级别为1到9之间的整数:
document.add_heading('The role of dolphins', level=2)
若是指定级别0,将添加“标题”段落。这能够方便地启动一个相对较短的文档,没有单独的标题页。
每隔一段时间,你想要下一个文本在一个单独的页面,即便你所在的一个不是满的。“hard”分页符能够作到这一点:
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 = get_things_from_database_or_something() # 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 fromfile...
python-docx
document.add_picture('image-filename.png')
此示例使用路径,从本地文件系统加载图像文件。你也可使用一个类文件对象,本质上就像一个打开的文件的任何对象。若是您从数据库或网络检索图像,而且不想获取涉及的文件系统,这可能很方便。
默认状况下,添加图像出如今本地的大小。这一般比你想要的更大。本机大小的计算方法。所以,具备300dpi分辨率的300×300像素图像出如今一平方英寸。问题是大多数图像不包含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 = 'ListBullet'
在此示例中,样式使用其样式ID“ListBullet”指定。一般,经过去除样式名称中出如今Word用户界面(UI)中的空格来造成样式ID。因此风格'列表3号'将被指定为'ListNumber3'
。可是,请注意,若是您使用的是本地化版本的Word,则样式ID可能来自英语样式名称,而且可能不会彻底对应于其在Word UI中的样式名称。
为了理解如何大胆和斜体的工做,你须要了解一个段落里面发生了什么。简短的版本是这样的:
当您的提供文本添加段落.add_paragraph()
的方法,它被放入一个单一的运行。您能够添加更多的使用.add_run()
上一段方法:
paragraph = document.add_paragraph('Lorem ipsum ') paragraph.add_run('dolor sit amet.')
这将产生一个看起来像从单个字符串建立的段落。除非你看看XML,段落文本被分红几个部分并不明显。注意第一个字符串末尾的尾部空格。您须要明确在运行的开始和结束位置出现的位置。它们不会在运行之间自动插入。期待被那一个被抓住几回:)。
Run
对象既有.bold
和.italic
属性,您能够设置其值为运行:
paragraph = document.add_paragraph('Lorem ipsum ') run = paragraph.add_run('dolor') run.bold = True paragraph.add_run(' sit amet.')
其产生的文字,看起来像这样:'Lorem存有悲坐阿梅德。“
请注意,您能够对结果集粗体或斜体正确的.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中的空格造成样式ID。因此风格'微妙强调'将被指定为'SubtleEmphasis'
。请注意,若是您使用的是本地化版本的Word,则样式ID可能来自英语样式名称,而且可能不对应于其在Word UI中的样式名称。
document.add_page_break()本文为博主原创文章,转载请注明出处http://www.cnblogs.com/rencm/p/6285304.html