ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python处理doc和docx

2021-12-01 11:32:13  阅读:259  来源: 互联网

标签:docx word python doc paragraph table import


https://python-docx.readthedocs.io/en/latest/index.html

https://blog.csdn.net/smile_to_the_world/article/details/105090233
https://blog.csdn.net/qq_22521211/article/details/80278371
https://www.cnblogs.com/TensorSense/p/7413297.html

从网上找到很多类似的文章,代码都差不多,使用之后发现不好用,总是报错。偶然间看到某位大神的代码,是可以用的,也是我唯一找到的可以用的把doc转化为docx的代码:

# encoding=utf-8
 
from win32com import client as wc
 
w = wc.gencache.EnsureDispatch('kwps.application')
doc = w.Documents.Open(r"E:\Python\project\pro1\lala.doc")
doc.SaveAs2(r"E:\Python\project\pro1\fafa.docx", 12)

注意:

  1. 需要用到win32com这个包,不是Python内建的,需要通过python -m pip install pypiwin32安装。

  2. 要用gencache.EnsureDispatch这个函数才行,网上其他大神用的方法不行。另外,如果你的电脑只安装了WPS,函数参数就得是“kwps.application”,如果有Office,参数就不是这个了。

  3. Open方法内的文件路径得用绝对路径,用相对路径的话我反正报错。

  4. 另存为不用SaveAs,要用SaveAs2,参数是绝对路径。

  5. SaveAs2的第二个参数是12,表示保存为docx格式,我之前参考别的大神的代码,用的是16,虽然看起来保存的确实是docx,但是当我通过Python-docx读取这个文件的时候就出错了,后来通过某位大神的评论才知道要用12,切记。

最近想统计word文档中的一些信息,人工统计的话。。。三天三夜吧
python 不愧是万能语言,发现有一个包叫做 docx,非常好用,具体查看官方文档:https://python-docx.readthedocs.io/en/latest/index.html
(v0.8.6)

还有一个是 win32com 包,这个包安装步骤如下:
http://jingyan.baidu.com/article/d3b74d64c853081f77e60929.html

安装好 win32com之后安装 docx包:

pip install  python-docx
import docx
from win32com import client as wc
import matplotlib.pyplot as plt
from collections import Counter 
import os
# 首先将doc转换成docx
word = wc.Dispatch("Word.Application")

# 找到word路径 + 文件名 ,即可打开文件

full_path = 'C:\\Users\\ASUS\\Desktop\\test.docx'
doc = word.Documents.Open(full_path)

# 使用参数16表示将doc转换成docx,保存成docx后才能 读文件

doc.SaveAs(r"D:\\test2.docx",16)
doc.Close()
word.Quit()


# 读取word内容
# 这里是以段落为单位的,下面用一个for 遍历所有段落

doc = docx.Document("D:\\test2.docx")
parag_num = 0
for para in doc.paragraphs :
    print(para.text)
    parag += 1  
print ('This document has ', parag, ' paragraphs')

将doc转为docx:

  from win32com import client as wc

        word = wc.Dispatch("Word.Application")

        doc = word.Documents.Open(路径+名称.doc)

        doc.SaveAs(路径+名称.docx, 12)   12为docx

        doc.Close()

        word.Quit()

读取段落:

  import docx

        docStr = Document(docName)   打开文档

        for paragraph in docStr.paragraphs:

                parStr = paragraph.text

                --》paragraph.style.name == 'Heading 1'  一级标题   

                --》paragraph.paragraph_format.alignment == 1  居中显示

                --》paragraph.style.next_paragraph_style.paragraph_format.alignment == 1  下一段居中显示

                --》paragraph.style.font.color

读取表格:

   numTables = docStr.tables

        for table in numTables:

                #行列个数

                row_count = len(table.rows)

                col_count = len(table.columns)

                for i in range(row_count):

                        row = table.rows[i].cells

                        i行j列内容:row[j].text

           或者:

                    row_count = len(table.rows)
                    col_count = len(table.columns)
                    for i in range(row_count):
                            for j in range(col_count):
                                    print(table.cell(i,j).text)

标签:docx,word,python,doc,paragraph,table,import
来源: https://blog.csdn.net/qq_15821487/article/details/121651427

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有