PYTHON操作WORD

合集下载

详解python-docx处理Word必备工具

详解python-docx处理Word必备工具

详解python-docx处理Word必备⼯具我的理解为什么会⽤到python-docx,因为近段时间下载了⼤量⽹⽂,但格式都是html的,我个⼈习惯使⽤word处理⽂字,于是就想法设法把html⽂档转换为word,⾸先要考虑的问题就是从html中提取的⽂字怎么存word⾥呢,之前⽤了pandoc直接转换,带转换后的效果太不理想,没什么格式,不符合我这种对word格式有严格要求强迫症⼈的需要,于是就到处搜寻其他⽅法,终于功夫不负有⼼⼈,通过⼏天研究python-docx,感觉很适合我,就⼀边分析html⽂档,⼀边思考怎么⽤python-docx存想要的格式word,因为我的word排版,⼀般习惯页⾯要设置成5678页边距的,⼤⼩A4的,正⽂主标题⽅正⼩标宋,其他标题要么⿊体,要么加粗,正⽂要⾸⾏缩进2字符仿宋_GB2312,页脚要加页码显⽰,⼤概这些样式。

python-docx 创建⼀篇⽂档也差不多是这么个思路,⼀篇⽂档也就是Document()对象⾸先要分成不同的节,也就是由sections对象控制,然后每节中⼜分成不同的段落paragraphs对象,每段⼜由不同的块run对象组成,针对不同的节(section)可以设置页⾯的⼀些属性,针对不同的段落(paragraph),可以设置间距和缩进、换⾏和分页等,针对不同块(run)可以设置字体的字型、颜⾊、⼤⼩等。

可以先设置好整篇⽂章的⼤致段落、字体等格式,然后针对不同段落和块可以单独再进⾏设置。

我主要讲讲⾃⼰⽤到的⼏个内容是怎么设置的。

安装库:pip install python-docx⽤到的库from docx import Document(⽂档读写)from docx.shared import Pt,Cm,Inches (字体⼤⼩,不⼀定全⽤到)from docx.oxml.ns import qn(设置字体格式,分栏等⽤到)from docx.shared import RGBColor (设置字体颜⾊)from docx.enum.text import WD_ALIGN_PARAGRAPH (设置对其⽅式)from docx.enum.section import WD_ORIENTATION (纸张⽅向⽤到)设置⼤致格式这样设置完了之后有⼀个好处就是,后往⾥⾯写⼊⽂档的时候回⾃动按这个格式,如果有需要改动的再单独写⼊时改。

Python操作word常见方法示例【win32com与docx模块】

Python操作word常见方法示例【win32com与docx模块】

Python操作word常见⽅法⽰例【win32com与docx模块】本⽂实例讲述了Python操作word常见⽅法。

分享给⼤家供⼤家参考,具体如下:这⾥介绍两种⽅式:使⽤win32com使⽤docx1. 使⽤win32com扩展包只对windows平台有效代码:# coding=utf-8import win32comfrom win32com.client import Dispatch, DispatchExword = Dispatch('Word.Application') # 打开word应⽤程序# word = DispatchEx('Word.Application') #启动独⽴的进程word.Visible = 0 # 后台运⾏,不显⽰word.DisplayAlerts = 0 # 不警告path = 'G:/WorkSpace/Python/tmp/test.docx' # word⽂件路径doc = word.Documents.Open(FileName=path, Encoding='gbk')# content = doc.Range(doc.Content.Start, doc.Content.End)# content = doc.Range()print '----------------'print '段落数: ', doc.Paragraphs.count# 利⽤下标遍历段落for i in range(len(doc.Paragraphs)):para = doc.Paragraphs[i]print para.Range.textprint '-------------------------'# 直接遍历段落for para in doc.paragraphs:print para.Range.text# print para #只能⽤于⽂档内容全英⽂的情况doc.Close() # 关闭word⽂档# word.Quit #关闭word程序2. 使⽤docx扩展包优点:不依赖操作系统,跨平台安装:pip install python-docx代码:import docxdef read_docx(file_name):doc = docx.Document(file_name)content = '\n'.join([para.text for para in doc.paragraphs])return content创建表格# coding=utf-8import docxdoc = docx.Document()table = doc.add_table(rows=1, cols=3, style='Table Grid') #创建带边框的表格hdr_cells = table.rows[0].cells # 获取第0⾏所有所有单元格hdr_cells[0].text = 'Name'hdr_cells[1].text = 'Id'hdr_cells[2].text = 'Desc'# 添加三⾏数据data_lines = 3for i in range(data_lines):cells = table.add_row().cellscells[0].text = 'Name%s' % icells[1].text = 'Id%s' % icells[2].text = 'Desc%s' % irows = 2cols = 4table = doc.add_table(rows=rows, cols=cols)val = 1for i in range(rows):cells = table.rows[i].cellsfor j in range(cols):cells[j].text = str(val * 10)val += 1doc.save('tmp.docx')读取表格# coding=utf-8import docxdoc = docx.Document('tmp.docx')for table in doc.tables: # 遍历所有表格print '----table------'for row in table.rows: # 遍历表格的所有⾏# row_str = '\t'.join([cell.text for cell in row.cells]) # ⼀⾏数据# print row_strfor cell in row.cells:print cell.text, '\t',print更多关于Python相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》及《》希望本⽂所述对⼤家Python程序设计有所帮助。

python处理word文档

python处理word文档

python处理word⽂档python 处理 word1. 简介在web开发过程中,经常需要导出⼀些word⽂档,⽐如运营⽉报、进货单、收据等。

它们的特点是格式都是⼀致的,只是需要不同的数据进⾏填充docx 和 docxtpl 是⽐较常见的处理 word ⽂件的python库。

其中前者⽤于创建⼀个包含段落、图⽚、表格、页眉等元素⽂档,后者使⽤类似 jinja2 的⽅式从模板⽂档⽣成新的⽂档2. 安装pip install python-docxpip install docxtpl # docxtpl 库会依赖jinja23. 使⽤情景1:使⽤python-docx从⽆到有创建⼀个docx⽂档,很少这样做,⼏乎不⽤关注情景2:使⽤docxtpl库对已有的docx⽂档模板进⾏数据填充,极为常见处理docx模板⽂档在docx⽂档中直接使⽤jinja2语法,{{ var }},即可将数据render进去循环是⾼级点的语法,可百度,并⽆特别难之处对应的主要python代码,⼤同⼩异,在py脚本中将数据彻底处理好,render仅做简单数据填充。

from docxtpl import DocxTemplatedoc = DocxTemplate("my_word_template.docx")context = {'company_name' : "World company"}doc.render(context)doc.save("generated_doc.docx")4. 结合python框架的⽰例代码Djangodef export_monthly_report(request, year, index):context = {} # 填充数据doc = DocxTemplate(app.root_path + '/templates/report_monthly.docx')target_filename = 'monthly_{}_{}.docx'.format(year, index)doc.render(context)file_stream = io.BytesIO()doc.save(file_stream)file_stream.seek(0)response = HttpResponse(file_stream.getvalue(), # use the stream's contentscontent_type="application/vnd.openxmlformats-officedocument.wordprocessingml.document",)response["Content-Disposition"] = 'attachment; filename = "{}"'.format(target_filename)response["Content-Encoding"] = "UTF-8"return responseflaskimport iofrom flask import send_filedef export_monthly_report(year, index):context = {} # 填充数据doc = DocxTemplate(app.root_path + '/templates/report_monthly.docx')target_filename = 'monthly_{}_{}.docx'.format(year, index)doc.render(context)file_stream = io.BytesIO()doc.save(file_stream)file_stream.seek(0)return send_file(file_stream, as_attachment=True, attachment_filename=target_filename)。

用python来操作word文件(使用docx库)

用python来操作word文件(使用docx库)

⽤python来操作word⽂件(使⽤docx库)实例⼀:from docx import Documentfrom docx.enum.text import WD_ALIGN_PARAGRAPHfrom docx.oxml.ns import qn # 中⽂格式from docx.shared import Pt # 磅数from docx.shared import Inches # 图⽚尺⼨import timetoday = time.strftime("%Y{y}%m{m}%d{d}", time.localtime()).format(y="年", m="⽉", d="⽇")price = input("请输⼊今⽇价格:")company_list = ["客户1", "客户2", "客户3", "客户4", "客户5", "客户6", "客户7", "客户8", "客户9", "客户10"]for i in company_list:document = Document()document.styles["Normal"] = u"微软雅⿊"document.styles["Normal"].font.size = Pt(14)# 设置⽂档的基础字体document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅⿊')# 设置⽂档的基础样式document.add_picture("d:/⽆标题.png", width=Inches(6))# 在⽂件最上头插⼊图⽚作为⽂件红头,宽度为6英⼨p1 = document.add_paragraph()# 初始化建⽴第⼀个⾃然段p1.alignment = WD_ALIGN_PARAGRAPH.CENTER# 对齐⽅式为居中,没有这句默认左对齐run1 = p1.add_run("关于下达%s产品价格的通知" % (today))# 这⾥是第⼀段的内容 = "微软雅⿊"# 设置西⽂字体run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅⿊')# 设置中⽂字体run1.font.size = Pt(21)# 设置字体⼤⼩为21磅run1.font.bold = True# 设置加粗p1.space_after = Pt(5)# 设置段后距离5磅p1.space_before = Pt(5)# 设置段后距离5磅p2 = document.add_paragraph()run2 = p2.add_run(i + ": ")# 这⾥是对客户的称呼 = "仿宋_GB2312"run2._element.rPr.rFonts.set(qn('w:eastAsia'), u'仿宋_GB2312')run2.font.size = Pt(16)run2.font.bold = Truep3 = document.add_paragraph()run3 = p3.add_run(" 根据公司安排,为提供优质客户服务,我单位现将价格通知如下。

python docx库使用手册

python docx库使用手册

标题:深度探索Python Docx库:使用手册一、前言Python Docx库是一款功能强大的文档处理库,它能够帮助用户轻松地创建、修改和格式化Word文档。

本文将深入探讨Python Docx库的使用手册,帮助读者全面掌握该库的功能和用法。

二、基本介绍Python Docx库是一个基于Python的第三方库,可以用来操作Microsoft Word文档。

它提供了丰富的API,使得用户可以轻松地进行文档的创建、修改和格式化。

无论是简单的文本替换,还是复杂的表格插入,Python Docx库都能够满足用户的需求。

三、安装和环境配置在开始使用Python Docx库之前,首先需要在Python环境中安装该库。

用户可以通过pip工具来进行安装,命令如下:```pip install python-docx```安装完成后,就可以在Python脚本中导入该库并开始使用了。

四、基本功能1. 创建文档使用Python Docx库可以轻松创建新的Word文档。

用户可以指定文档的标题、段落、样式等信息,同时还可以插入图片、表格等元素。

2. 修改文档已有的Word文档也可以通过Python Docx库进行修改。

用户可以添加新的段落、修改文本内容、调整格式等操作,使得文档符合自己的需求。

3. 格式化文档Python Docx库提供了丰富的格式化功能,用户可以对文档中的文本、段落、表格等元素进行各种样式的设置,包括字体、颜色、对齐方式等。

五、高级功能1. 操作表格Python Docx库支持对Word文档中的表格进行操作,用户可以插入、删除、合并表格,设置单元格的样式等。

2. 处理图片用户可以通过Python Docx库在文档中插入图片,并对图片进行调整、格式化等操作。

3. 处理目录通过Python Docx库,用户可以轻松地为文档添加目录,同时可以自动更新目录中的内容。

六、总结回顾Python Docx库是一款功能强大且易于使用的文档处理库,它为用户提供了丰富的API和灵活的功能,可以满足用户在文档处理方面的各种需求。

使用Python-docx库操作Word文档

使用Python-docx库操作Word文档


Python-docx库简介
Python可以利用python-docx库处理Word文档,处理方式是面向对象 的。也就是说,python-docx库把Word文档、文档中的段落、文本、字体 修饰等都看做对象,使用python-docx库提供的对象方法和属性,即可对 Word文档的内容进行处理。
python-docx库提供了文档段落的属性,可以很方便 地把Word长文档的各级标题快速地提取出来。
12

提取文档的各级标题
默认情况下,Word样式是以中文命名的,在程序中需要知 道每个样式的英文命名,可以在‘文件’菜单 --‘选项’命 令中设置:
可以看出,docx库是按照Word文 档的段落来读取数据。paragraphs 对象表示一个段落,text对象表示 段落中的文字内容。
10
程序运行结果
Office高级应用
使用python-docx库操作Word文档 编程提取文档的各级标题

提取文档的各级标题
在Word文档排版过程中,按照系统提供的样式,或者自定义样 式对各级标题进行设置。一般来说,同级标题其样式是相同的。
程序运行结果office高级应用使用pythondocx库操作word文档编程提取文档的各级标题12提取文档的各级标题在word文档排版过程中按照系统提供的样式或者自定义样式对各级标题进行设置
Office高成都信息工程大学计算中心
Document:产生基于word文档的实例对象 paragraphs:表示word文档中的段落 text:表示段落中的文字内容
8

9

读取word文档的内容
文档内容
Python代码

读取Word文档的内容

如何使用Python批量创建Word模板

如何使用Python批量创建Word模板

如何使用Python批量创建Word模板在日常工作中我们经常需要重复性地将同一份内容的Word文档资料发送给多个不同客户,此时Word文档内容可能只有客户署名不同、或者只有部分关键信息不同。

此时如果采用传统的工作方法我们可能需要反复地打开不同Word 文档,然后修改文档里面的内容,这样的话就需要花大量时间来完成重复性工作。

针对此问题,我们如果使用Python进行简单的编程就有可能使重复性工作快速完成。

本文就以实例针对如何使用Python批量创建Word模板进行简单介绍。

本文需要完成Word模板任务背景如下:小姚在一家超市工作,每天上午都需要将Word版苹果今日价格通知信息发送给100家客户,每份通知文档中只有价格、客户、日期不相同。

为了减少重复性工作,本次需要制作的Word模板文档内容如下:**年**月**日苹果价格通知Dear 客户1:根据目前市场情况,今日我司苹果售价拟定为5元每斤,特此通知。

如有任何疑问可随时与我联系,谢谢!联系人:小姚电话:1234567890 在使用Python创建Word模板之前,我们先了解一下Word文档逻辑层次结构图:由以上两个图表可知:文档是由多个段落组成,段落是由多个文字组成。

所以在我们采用传统工作方法创建新Word 模板时操作流程基本如下表所示:总结了Word 模板创建的基本流程,接下来我们就可以参考该流程使用Python 代码语句编程实现批量创建Word 模板,具体操作步骤如下: 第一步. 导入Python-docx 模块,模块导入基本步骤如下:导入模块操作界面如下图表1~图表4所示:D o c u m e n tParagraph 1Run 1Run 2Run ...Run nParagraph 2Run 1Run 2Run ...Run n Paragraph ...Run 1Run 2Run ...Run n Paragraph nRun 1Run 2Run ...Run n整个文档属性(默认字体、默认格式)段落属性(段落间距、对齐方式等)文字属性(字体、字号、加粗等)Step1.新建Word 文档Step2.打开Word 文档Step3. 设置段落Step4. 输入内容Step5. 设置字体Step6. 保存文档Step1.点击File Step2.设置SettingsStep3.设置ProjectInterpreterStep4.点击右上角“+”Step5.搜索Python-docxStep6.点击InstallPackageStep7.显示“Package ‘Python-docx ’installed successfully ”即安装完成图表1 图表 2图表 3图表 4第二步.新建Python file,进入Python代码编辑界面;第三步.编辑Python代码,由于本次需要生成Word模板只有四个段落,参考前面介绍的Word文档逻辑层次结构,可知本次代码编写流程顺序基本由以下几个部分组成第四步. 编写完成的完整代码语句如下:from docx import Documentfrom docx.enum.text import WD_ALIGN_PARAGRAPH from docx.shared import Pt第一部分:导入所需模块•1.导入文档模块•2.导入段落设置模块•3.导入字体设置模块•4.导入中文格式设置模块• 5.导入时间模块第二部分:文档内容变量定义•1.输入今日价格•2.定义客户列表• 3.获取今日时间第三部分:文档初始化•1.针对每个客户生成文档•2.文档初始化• 3.设置文档默认字体、样式第四部分:正文内容设置•1.分别新建4个段落•2.输入4个段落内容•3.设置每个段落属性•4.设置每个段落字体属性第五部分:保存文档•文件按照要求文件名保存至固定路径from docx.oxml.ns import qnimport timeprice = input('请输入今日价格:')company_list = ['客户1', '客户2', '客户3', '客户4', '客户5', '客户6', '客户7', '客户8', '客户9', '客户10']today = time.strftime("%Y{y}%m{m}%d{d}", time.localtime()).format(y='年', m='月', d='日')for i in company_list:document = Document()document.styles['Normal'] = u'宋体'document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')p1 = document.add_paragraph()p1.alignment = WD_ALIGN_PARAGRAPH.CENTERrun1 = p1.add_run('%s苹果价格通知' % (today)) = '微软雅黑'run1._element.rPr.rFonts.set(qn('w:eastAsia'), u'微软雅黑')run1.font.size = Pt(22)run1.font.bold = Truep1.space_after = Pt(5)p1.space_before = Pt(5)p2 = document.add_paragraph()run2 = p2.add_run('Dear' + i + ':') = '等线'run2._element.rPr.rFonts.set(qn('w:eastAsia'), u'等线')run2.font.size = Pt(14)run2.font.bold = Truep3 = document.add_paragraph()run3 = p3.add_run(' 根据目前市场情况,今日我司苹果售价拟定为%s元每斤,特此通知。

python-office的用法

python-office的用法

python-office的用法"python-office"是一个具体的 Python 模块或库的名称,而是可能涉及到处理办公文档(如Excel、Word、PowerPoint等)的 Python 库的一般性提法。

在 Python 中,有一些第三方库可以用于处理办公文档,其中一些比较流行的包括 openpyxl、xlrd、xlwt(用于 Excel)、python-docx(用于 Word 文档)等。

以下是一个简单的示例,展示如何使用openpyxl 库来处理Excel 文件:import openpyxl# 创建一个新的 Excel 文件workbook = openpyxl.Workbook()# 获取默认的活动工作表sheet = workbook.active# 在单元格 A1 中写入数据sheet['A1'] = 'Hello'sheet['B1'] = 'World!'# 保存 Excel 文件workbook.save('example.xlsx')对于其他类型的文档,例如Word 文档,你可以使用python-docx 库:pythonCopy codefrom docx import Document# 创建一个新的 Word 文档doc = Document()# 向文档中添加段落doc.add_paragraph('Hello, world!')doc.add_paragraph('This is a Python Office example.')# 保存 Word 文档doc.save('example.docx')请注意,具体使用哪个库取决于你要处理的文档类型。

在选择库时,你可能需要考虑其功能、易用性和社区支持等因素。

在使用这些库之前,请确保你已经安装了它们。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

w.ActiveDocument.Sections[0].Headers[0].Range.Find.Replacement.ClearFormatting () w.ActiveDocument.Sections[0].Headers[0].Range.Find.Execute(OldStr, False, False, False, False, False, True, 1, False, NewStr, 2) # 表格操作 doc.Tables[0].Rows[0].Cells[0].Range.Text ='123123' worddoc.Tables[0].Rows.Add() # 增加一行 # 转换为 htmlwc = win32com.client.constants w.ActiveDocument.WebOptions.RelyOnCSS = 1 w.ActiveDocument.WebOptions.OptimizeForBrowser = 1 w.ActiveDocument.WebOptions.BrowserLevel = 0 # constants.wdBrowserLevelV4 anizeInFolder = 0 eLongFileNames = 1 w.ActiveDocument.WebOptions.RelyOnVML = 0 w.ActiveDocument.WebOptions.AllowPNG = 1 w.ActiveDocument.SaveAs( FileName = filenameout, FileFormat = wc.wdFormatHTML ) #打印 doc.PrintOut() # 关闭 # doc.Close() w.Documents.Close(wc.wdDoNotSaveChfrom win32com.client import Dispatch, constantsw = win32com.client.Dispatch('Word.Application') # 或者使用下面的方法,使用启动独立的进程: # w = win32com.client.DispatchEx('Word.Application') # 后台运行,不显示,不警告 w.Visible = 0w.DisplayAlerts = 0 # 打开新的文件 doc = w.Documents.Open( FileName = filenamein ) # worddoc = w.Documents.Add() # 创建新的文档 # 插入文字 myRange = doc.Range(0,0) myRange.InsertBefore('Hello from Python!') # 使用样式 wordSel = myRange.Select() wordSel.Style = constants.wdStyleHeading1 # 正文文字替换 w.Selection.Find.ClearFormatting() w.Selection.Find.Replacement.ClearFormatting() w.Selection.Find.Execute(OldStr, False, False, False, False, False, True, 1, True, NewStr, 2) # 页眉文字替换 w.ActiveDocument.Sections[0].Headers[0].Range.Find.ClearFormatting()
相关文档
最新文档