当前位置: 代码网 > it编程>前端脚本>Python > Python如何调用spire.doc轻松读取Word文档内容

Python如何调用spire.doc轻松读取Word文档内容

2025年02月14日 Python 我要评论
前言spire.doc for .net是一款专门对 word 文档进行操作的 .net 类库。这款控件的主要功能在于帮助开发人员轻松快捷高效的创建、编辑、转换、比较和打印microsoft word

前言

spire.doc for .net 是一款专门对 word 文档进行操作的 .net 类库。这款控件的主要功能在于帮助开发人员轻松快捷高效的创建、编辑、转换、比较和打印 microsoft word 文档。作为一款独立的 word .net 控件,spire.doc for .net 的运行系统(服务器端或客户端)均无需安装 microsoft word,但是它却可以将 microsoft word 文档的操作功能集成到任何开发人员的 .net(asp.net、windows form、.net core、.net 5.0、.net 6.0、.net 7.0、.net standard、 xamarin 和 mono android)应用程序中。

spire的更多使用和方法可见:

冰蓝科技 e-iceblue | 您的办公文档开发技术专家 | c#/vb.net excel, word, powerpoint, pdf, barcode 组件

注意,文件在读取或写入操作时必须是关闭状态,否则会报错。

读取全部文本内容

from spire.doc import *
from spire.doc.common import *
 
inputfile = r'自检测试报告.doc'
outputfile = r'自检测试报告.docx'
 
document = document()  # 创建document实例
document.loadfromfile(inputfile)  # 加载word文档
document_text = document.gettext()
print(document_text)

通过节点读取数据

document.sections[index] 属性可用于获取word 文档中的特定节点。 获取后,可遍历该节中的段落、表格等。

print(len(document.sections))  # 获取节点数量
print(document.sections.count)  # 获取节点数量
section = document.sections
 
# 分段落获取文本内容
for i in range(document.sections.count):
    paragraphs = section[i].paragraphs
    for p in range(paragraphs.count):
        print(paragraphs[p].text)

按页读取

因为word文档本质上是流式文档,流式布局,所以没有“页面”的概念。为了方便页面操作,spire.doc for python提供了fixedlayoutdocument类,用于将word文档转换为固定布局。

layoutdoc = fixedlayoutdocument(document)  # 创建fixedlayoutdocument类的实例,用于将word文档转换为固定布局。
 
print(layoutdoc.pages.count)
 
for p in range(layoutdoc.pages.count):
    page_data = layoutdoc.pages[p]
    # print(page_data.text)   # 按页读取文本
    cols_data = page_data.columns
    for col in range(len(cols_data)):
        # print(cols_data[col].text)  # 按段读取文本
        row_data = cols_data[col].lines
        for row in range(len(row_data)):
            print(row_data[row].text)  # 按行读取文本

读取页眉页脚

section = document.sections
 
for i in range(document.sections.count):
 
    header = section[i].headersfooters.header  # 获取该节的页眉对象
 
    footer = section[i].headersfooters.footer  # 获取该节的页脚对象
    for h in range(header.paragraphs.count):
        headerpara = header.paragraphs[h]
        print(headerpara.text)
        
    for f in range(footer.paragraphs.count):
        footerpara = footer.paragraphs[f]
        print(footerpara.text)

遍历表格数据

document = document()  # 创建document实例
document.loadfromfile(inputfile)  # 加载word文档
 
for i in range(document.sections.count):
    section = document.sections.get_item(i)
    for j in range(section.tables.count):
        table = section.tables.get_item(j)
 
        # 遍历表格中的行
        for row in range(table.rows.count):
            row_data = []
 
            # 遍历行中的单元格
            for cell in range(table.rows.get_item(row).cells.count):
                cell_obj = table.rows.get_item(row).cells.get_item(cell)
                cell_text = ""
 
                # 获取单元格中的段落内容
                for paragraph_index in range(cell_obj.paragraphs.count):
                    paragraph = cell_obj.paragraphs.get_item(paragraph_index)
                    cell_text += paragraph.text
 
                row_data.append(cell_text.strip())
 
            # 打印行数据
            print(row_data)
            
document.close()

查找指定文本

def findallstring(self ,matchstring:str,casesensitive:bool,wholeword:bool)->list['textselection']

参数:

  • matchstring:str,要查找的内容
  • casesensitive:bool,如果为true,匹配是区分大小写的。
  • wholeword:bool,如果为true,匹配的必须是一个完整的单词。

可对查找的内容进行其他操作

document = document()  # 创建document实例
document.loadfromfile(inputfile)  # 加载word文档
 
textselections = document.findallstring("测试报告", false, true)
 
# 对找到的内容设置高亮显示颜色
for selection in textselections:
    selection.getasonerange().characterformat.highlightcolor = color.get_blue()
 
document.savetofile(outputfile, fileformat.docx)
document.close()

以上就是python如何调用spire.doc轻松读取word文档内容的详细内容,更多关于python读取word的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com