精华内容
下载资源
问答
  • 问题描述:把多个 Word 文档合并为一个,保留原来的内容以及全部格式。方法一,使用扩展库pywin32+Word/WPSfrom os.path import abspathfrom win32com import clientdef main(files, final_docx):# 启动word应用程序...

    问题描述:

    把多个 Word 文档合并为一个,保留原来的内容以及全部格式。

    方法一,使用扩展库pywin32+Word/WPS

    from os.path import abspath

    from win32com import client

    def main(files, final_docx):

    # 启动word应用程序

    word = client.gencache.EnsureDispatch("Word.Application")

    word.Visible = True

    # 新建空白文档

    new_document = word.Documents.Add()

    方法二:使用pywin32+Word/WPS

    from os.path import abspath

    from win32com import client

    def main(files, final_docx):

    # 启动word应用程序

    word = client.gencache.EnsureDispatch("Word.Application")

    word.Visible = True

    # 新建空白文档

    new_document = word.Documents.Add()

    for fn in files:

    # 打开要合并的每个文件,复制其中的内容到剪切板,然后关闭文件

    fn = abspath(fn)

    temp_document = word.Documents.Open(fn)

    word.Selection.WholeStory()

    word.Selection.Copy()

    temp_document.Close()

    # 粘贴到新文档的最后

    new_document.Range()

    word.Selection.Delete()

    word.Selection.Paste()

    # 保存最终文件,关闭Word应用程序

    new_document.SaveAs(final_docx)

    new_document.Close()

    word.Quit()

    main(["1.docx","2.docx","3.docx","4.docx"],r"C:\result.docx")

    方法三:使用pywin32+Word/WPS

    from os.path import abspath

    from win32com import client

    # 启动word应用程序

    word = client.gencache.EnsureDispatch("Word.Application")

    word.Visible = True

    # 新建空白文档

    new_document = word.Documents.Add()

    for fn in fils[::-1]:

    fn = abspath(fn)

    new_document.Application.Selection.Range.InsertFile(fn)

    # 保存最终文件,关闭Word应用程序

    new_document.SaveAs(final_docx)

    new_document.Close()

    word.Quit()

    main(["1.docx","2.docx","3.docx","4.docx"],r"C:\result.docx")

    方法四:使用python-docx扩展库和docxcompose扩展库

    from docx import Document

    from docxcompose.composer import Comoser

    def main(files,final_docx):

    new_document = Document()

    composer = Comoser(new_document)

    for fn in files:

    composer.append(Document(fn))

    composer.save(final_docx)

    main(["1.docx","2.docx","3.docx","4.docx"],r"C:\result.docx")

    大家可以试试看

    展开全文
  • python合并多个word文档(带图片等)

    万次阅读 热门讨论 2018-12-11 17:53:54
    python官网下载python3.6版本,exe文件直接安装。 利用pip安装pywin32包 pip install pywin32 注意:如果安装完成之后执行“import win32com”时还有错误,请下载exe文件安装pywin32。( 提取码:u3w6 ) ...

    安装python3.6和pywin32包

    • python官网下载python3.6版本,exe文件直接安装。
    • 利用pip安装pywin32包
    pip install pywin32
    
    • 注意:如果安装完成之后执行“import win32com”时还有错误,请下载exe文件安装pywin32。( 提取码:u3w6 )

    运行代码

    #encoding=utf-8
    #导入pywin32包
    import win32com.client as win32
    #打开word软件
    word = win32.gencache.EnsureDispatch('Word.Application')
    #非可视化运行
    word.Visible = False
    
    output = word.Documents.Add()#新建合并后空白文档
    
    #需要合并的文档路径,这里有个文档1.docx,2.docx,3.docx.
    files = ['F://work//2.docx', 'F://work//1.docx', 'F://work//3.docx'] 
    for file in files:
    	output.Application.Selection.Range.InsertFile(file)#拼接文档
    
    #获取合并后文档的内容
    doc = output.Range(output.Content.Start, output.Content.End)
    doc.Font.Name = "黑体"	#设置字体
    
    output.SaveAs('F://work//result.docx') #保存
    output.Close()
    
    展开全文
  • 多个Word文档合并为一个,保留原来的内容以及全部格式。 方法一,使用扩展库pywin32+Word/WPS 首先使用命令pip install pywin32安装扩展库,如果仍不能使用,可以参考 方法二:使用pywin32+Word/WPS 方法...

    问题描述:

    把多个Word文档合并为一个,保留原来的内容以及全部格式。

    方法一,使用扩展库pywin32+Word/WPS

    首先使用命令pip install pywin32安装扩展库,如果仍不能使用,可以参考

    方法二:使用pywin32+Word/WPS

    方法三:使用pywin32+Word/WPS

    方法四: 使用python-docx扩展库和docxcompose扩展库

    方法五:如果不会使用Python或者不想费劲安装库和调试代码的话,也是完全可以解决这个问题的。步骤如下:

    1)启动WPS或Word,创建空白文档。

    2)单击“插入”选项卡,然后单击“对象”==>“文件中的文字”,如图:

    3)在弹出的对话框中选择多个文件,如图:

    4)最后单击“打开”按钮就可以了。

     

     

    展开全文
  • python_docx合并多个word文档,但是只需要每个文档的第一页,其他页不需要,要怎么能实现? import os from docx import Document from docxcompose.composer import Composer from docx import Document as ...
  • 然后有些同学把代码用不同格式文件存储(.cpp,.py,.java,txt),然后同学们写报告有的用(.wps,.doc,.docx等),这下就麻烦了,因为一学期下来,有几百份实验报告要处理,我学习了如何读写word格式文档等操作 ...

    背景是这样的:
    老师让我负责收同学们的实验报告,然后有些同学把代码用不同格式文件存储(.cpp,.py,.java,txt),然后同学们写报告有的用(.wps,.doc,.docx等),这下就麻烦了,因为一个学期下来,有几百份实验报告要处理,复制粘贴太累,不如写代码放松下,毕竟刚考完试。

    1、面对需求实现

    import os
    import chardet
    import send2trash
    import shutil
    from win32com.client import Dispatch
    
    rootPath = r'C:\Users\Lenovo\Desktop\test'  # 一个班的根目录
    
    
    # 获取文件夹内文件的实验报告名字
    def getDocName(rootPath, filenamelist):
        for item in filenamelist:
            fileFormat = os.path.splitext(rootPath + "/" + item)[-1]
            if fileFormat in ['.docx', '.doc', '.wps']:
                return item
        return ''
    
    
    # 将文件夹内不同文件的内容复制到word格式文件内
    def otherFilesAppend2Doc(rootPath, docFileName, otherfileNameList):
        topLevelPath = os.path.dirname(rootPath)
        newFileName = os.path.join(topLevelPath, docFileName)
        shutil.copy(os.path.join(rootPath, docFileName), newFileName)  # 覆盖
        word = Dispatch('Word.Application')  # 打开word应用程序
        word.Visible = 0  # 后台运行,不显示
        word.DisplayAlerts = 0  # 不警告
    
        for item in otherfileNameList:
            singleFileName = os.path.join(rootPath, item)
    
            # 首先二进制方式打开文件
            with open(singleFileName, 'rb') as frb:
                # 检测编码方式
                cur_encoding = chardet.detect(frb.read())['encoding']
            # 指定文件编码方式
            with open(singleFileName, 'r', encoding=cur_encoding) as f2:
                content = f2.read()
            if not os.path.exists(newFileName):
                open(newFileName, 'w').close()
    
            doc = word.Documents.Open(FileName=newFileName, Encoding='gbk')
            myRange = doc.Range()
            myRange.InsertAfter('\n')
            myRange.InsertAfter(content)
            doc.SaveAs(newFileName)
            doc.Close()
    
        word.Quit()
        send2trash.send2trash(rootPath)  # 暂时移动到垃圾箱,方便检查结果
    
    
    def main():
        if not os.path.isdir(rootPath):
            print('请输入文件夹目录')
            return
        fileList = os.listdir(rootPath)
        for item in fileList:
            concretePath = os.path.join(rootPath, item)
            if os.path.isfile(concretePath):  # 只处理文件夹内文件的合并
                continue
            tmpList = os.listdir(concretePath)
            if len(tmpList) == 0:
                print(concretePath, '无文件')
                continue
            docName = getDocName(concretePath, tmpList)
            if docName == '':
                print(concretePath + "缺失实验报告")
                continue
            tmpList.remove(docName)
            otherFilesAppend2Doc(concretePath, docName, tmpList)
    
    
    main()
    
    

    效果实现:

    原始状态:(测试阶段每个文件以文件名字测试)
    在这里插入图片描述
    实现合并后:
    在这里插入图片描述

    2、本次学习到的新知识

    2.1、处理不同编码文件内容的获取

            # 首先二进制方式打开文件
            with open(singleFileName, 'rb') as frb:
                # 检测编码方式
                cur_encoding = chardet.detect(frb.read())['encoding']
            # 指定文件编码方式
            with open(singleFileName, 'r', encoding=cur_encoding) as f2:
                content = f2.read()
    

    2.2、移动文件到垃圾箱

    send2trash.send2trash(rootPath) 
    

    2.3、word文件读写操作

    from docx import Document
    from win32com.client import Dispatch
    import chardet
    import os
    
    
    # 1、只能读.docx文件
    def readFromDocx(src):
        document = Document(src)  # 打开文件demo.docx
        for paragraph in document.paragraphs:
            print(paragraph.text)
    
    
    # 1.1、读多种word文件
    def readFromWord(src):
        word = Dispatch('Word.Application')  # 打开word应用程序
        word.Visible = 0  # 后台运行,不显示
        word.DisplayAlerts = 0  # 不警告
        doc = word.Documents.Open(FileName=src, Encoding='gbk')
        for para in doc.paragraphs:
            print(para.Range.Text)
        doc.Close()
        word.Quit()
    
    
    # 2、只能覆盖写docx文件,但可以不覆盖写别的wps,doc等文件
    def write2Word(src, dest, mode=True):
        """
        :param src: 其他格式文件的路径
        :param dest: word格式的文件路径
        :param mode: 是否需要覆盖
        :return:
        """
        # 首先二进制方式打开文件
        with open(src, 'rb') as frb:
            # 检测编码方式
            cur_encoding = chardet.detect(frb.read())['encoding']
        # 指定文件编码方式
        with open(src, 'r', encoding=cur_encoding) as f2:
            content = f2.read()
        if not mode and os.path.exists(dest):
            document = Document(dest)
        else:
            # 首先创建一个文档对象
            document = Document()
        document.add_paragraph(content)
        # 将文档保存到docx中
        document.save(dest)
    
    
    # 2.1、写多种word文件
    def write2Word2(src, dest,mode=True):
        """
        :param src: 其他格式文件的路径
        :param dest: word格式的文件路径
        :param mode: 是否需要覆盖
        :return:
        """
        # 首先二进制方式打开文件
        with open(src, 'rb') as frb:
            # 检测编码方式
            cur_encoding = chardet.detect(frb.read())['encoding']
        # 指定文件编码方式
        with open(src, 'r', encoding=cur_encoding) as f2:
            content = f2.read()
        if not os.path.exists(dest):
            with open(dest, 'w') as f:
                    f.close()
        word = Dispatch('Word.Application')  # 打开word应用程序
        word.Visible = 0  # 后台运行,不显示
        word.DisplayAlerts = 0  # 不警告
        if not mode:
            doc = word.Documents.Open(FileName=dest, Encoding='gbk')
            myRange = doc.Range()
            myRange.InsertAfter(content)
            myRange.InsertAfter('\r\n')
        else:
            doc = word.Documents.Add()
            myRange = doc.Range(0, 0)
            myRange.InsertBefore(content)
            myRange.InsertAfter('\r\n')
        doc.SaveAs(dest)
        doc.Close()
        word.Quit()
    
    展开全文
  • 所以决定用python从docx文档中提取文件头的信息 然后把信息更新到一xls电子表格中,像下面这样(直接po结果好了) 而且点击文件路径可以直接打开对应的文件(含超链接) 代码实现 1. 采集docx里面文件头信息 # ...
  • #获得文档 file=docx.Document("1.docx") file2=docx.Document("2.docx") str=[] #按照段落读取文档内容 for para in file.paragraphs: str.append(para.text) for para2 in file2.paragraphs...
  • Python ,用RPA,艺赛旗RPA 2020.1全新首发免费下载 ...把多个 Word 文档合并为一个,保留原来的内容以及全部格式。 方法一,使用扩展库pywin32+Word/WPS from os.path import abspath from win32com import clie...
  • 文件的读取、创建、追加、删除、清空一、用Python创建一文件,内容是从0到9的整...
  • As the title says I would like to know if there is any module that will allow me to parse content from one Microsoft word document to another via python and keeping the format.I want to read table dat...
  • Python实现Word多文档合并

    千次阅读 2020-07-07 18:10:55
    通过手动的方式可以很方便的把多个Word文档合并为一个。但如何通过代码实现批量Word的合并呢?操作步骤来了。 1、使用python-docx和docxcompose扩展库 安装扩展库 pip install python-docx docxompose 合并Doc
  • python合并word

    2020-12-29 07:54:32
    1 场景合并多个word文件到一个文件中,用于文件的批量打印。要求:每个文件合并时,均从从一个新页面开始,文件之间的内容不连在一起。文件的样式不发生改变。2 方案采用python实现,使用python中的python-docx和...
  • python中docx模板合并多个word文档

    千次阅读 2019-06-14 14:54:04
    转载链接:https://stackoverflow.com/questions/24872527/combine-word-document-using-python-docx ...# 合并文档的列表 files = ['1.docx', '2.docx'] #合并操作 def combine_word_documents(files): ...
  • 合并包含所有样式的两个文档的另一种方法是使用python库docxcompose(https://pypi.org/project/docxcompose/)。我们不需要明确定义样式,也不必逐段阅读文档其附加到主文档中。python docxcompose的用法如下所...
  • merge项目介绍利用Python合并多个MarkDown文档,并其转化为Word文档。这样可以利用事先做好的word文档样式,一定程度上实现word文档的内容与样式分离,减少使用word时重复设置格式的烦恼。安装教程需要安装...
  • 粘贴下面的代码:Option ExplicitSub SplitPagesAsDocuments()Dim oSrcDoc As Document, oNewDoc As DocumentDim strSrcName As String, strNewName As StringDim oRange As RangeDim nIndex As IntegerDim fso As ...
  • python合并word文件

    千次阅读 2020-05-11 14:46:36
    合并文件夹内的所有word文档,并且按照文件的顺序进行合并。 2、代码 import os #输入输出函数,用来获取目录路径 import win32com.client as win32 word = win32.gencache.EnsureDispatch(‘Word.Application’...
  • windows下,使用python Excel中数据批量导出到Word模板中生成新的文件
  • 我的问题是如何从几百个Word文档里提取我需要的数据汇总到Excel中,Word有很页,我需要提取第三页的表格里的内容,汇总到Excel做台帐,一个一个手动复制粘贴太浪费时间了! PS:电脑系统还是XP!
  • ') # 要替换的关键词 self.foot_label = QLabel('关键词:') self.foot_text = QLineEdit() self.foot_text.setPlaceholderText('多个关键词之间使用英文半角,分割') # 替换后的关键词 self.nums_label = QLabel('...
  • 备注:doc是微软的专有的文件...docx格式的文件本质上是一ZIP文件,所以其实也可以把.docx文件直接改成.zip,解压后,里面的word/document.xml包含了Word文档的大部分内容,图片文件则保存在word/media里面。py...
  • As the title says I would like to know if there is any module that will allow me to parse content from one Microsoft word document to another via python and keeping the format.I want to read table dat...
  • 实例14:用Python批量替换多个Word文件中的文字公众号“Python操作Office软件高效工作”29 人赞同了该文章我们在实例7中批量生成了采购合同。但是假设现在我方的公司名由“ABC商贸有限公司”变成了“ABC贸易有限公司...
  • import os path = os.getcwd() file_mode = path + r'\第一个文档.docx' # document = Document(file_mode) # # 读取word中的所有表格 # tables = document.tables # document.tables[1].add_row
  • 应我家领导要求,开发一个word文档批处理脚本,涉及word文档、excel表格、文件存取、排序与索引、简单GUI等内容,前期针对各分项功能实现写了几篇小文章,现在总体思路记录一下,作为这个系列的完结篇。...
  • 工作中,有时候碰到需要比较大的word按照指定的页数分割成若干小的word文档,下面提供分割的方法供参考:一、按照单页拆分1、在Word里面打开那个需要分割的文档(假设它的文件名叫做“test.doc”);...
  • 对于文档损坏的docx文档,无法借助代码打开office的(没损坏的也可以),使用这代码,读取xml的文本数据,进行文档转换,实测约为300文档/秒(也许更快,但是我没有这么多word文档)。【使用方法:需要转换的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 60,968
精华内容 24,387
关键字:

python合并多个word文档

python 订阅