精华内容
下载资源
问答
  • 今天学习了关于word表格修改数据,插入图片的知识。Word表格跟对普通的文章段落处理不太一样,下面我就用我学校的请假条表格来带大家一一分析。 1.导入python-docx库 在cmd导入该库 pip install python-docx 下面...

    今天学习了关于word表格修改数据,插入图片的知识。Word表格跟对普通的文章段落处理不太一样,下面我就用我学校的请假条表格来带大家一一分析。

    1.导入python-docx库

    在cmd中导入该库

    pip install python-docx
    

    下面是请假条的格式
    在这里插入图片描述

    2.读取docx文件

    下面是导入的模块

    
    from docx import Document
    from docx.shared import Inches,Cm,Pt
    from docx.oxml.ns import qn
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT//导入的关于word操作的相关模块
    import datetime //获取当前日期
    
    docx = Document('C:/Users/test/Desktop/请假条模板.docx')//docx文件的地址
    
    

    现在我们就获取了一个docx的对象

    3.获取表格

    使用如下方式获取表格

    tables = docx.tables//获取所有表格
    table=tables[0]//获取第一个表格
    

    使用.tables获取该文档中所有表格,返回一个列表,由于笔者的表格是第一个,所以为tables[0]。

    4.获取表格的单元

    docx表格也想excel一样有行,列的属性,但是不会显示出来,所以却要自已去查找以确定元素的位置。
    有以下的方法获取你的表格的行列数。

    print(len(table.rows))//获取行的总数
    print(len(table.columns))//获取列的总数
    

    获取完表格的行列数后,就可以对相应的元素操作
    在这里插入图片描述
    这里的行列数返回值为整数,结果如下
    在这里插入图片描述
    下面我们应用行列数确定元素位置,注意元素行列都是从0开始。
    选中调用的方法为

    目标=.cell(坐标).paragraphs[该单元第几段(从零开始)]
    

    例如我们要确定上面请假条中班级的位置,我们看到班级在第一行,故行标为0,处于列的第一个位置,故列标为0,故其坐标为.cell(0,0)。其他元素方法也如此。可能有时会出现选择的行列不对,可以自己向左右一一尝试,查看位置是否正确。

    name =table.cell(0,0).paragraphs[0]
    

    可能大家还对paragraphs[]的选择还有一些疑惑,下面我用请假条中的例子为大家讲解。

    大家可以看到上面的请假条最后一个方格,有一个时间填写,时间与其他段落共同处于(2,1)这个位置,他的前面共有三行,所以他处于paragraphs[3]的位置

    write_time=table.cell(2,1).paragraphs[3]
    

    5.对选中的元素进行添加文字操作

    上一步我们已经选择了name,下面向其中添加元素,用法为

    user_name =table.cell(0,0).paragraphs[0].add_run(想要添加的内容)
    

    也可以为添加的内容进行字体设置

    user_name.font.name='黑体'//设置字体种类
    user_name.font.size=Pt(15)//设置字体大小
    

    6.向表格中插入图片

    笔者的学校需要用图片填写请假原因,那么我们如何用图片填写表格呢,在docx文件中插入表格的用法为

    docx.add_picture(图片的路径)
    

    同理在表格中插入也是如此,无非是多了一步确定插入的位置,还是以上面的请假条为例,图片应该插入到请假原因的下一行,故位置为

    run=table.cell(2,1).paragraphs[1].add_run()//插入一个文字块
    

    添加图片操作

    picture =run.add_picture(photo_path)
    picture.height=Cm(4.4)//设置图片高度
    picture.width=Cm(6.2)//设置图片宽度
    

    7.保存文档

    方法为

    docx.save(路径)
    

    8.小补充:datetime

    笔者只使用了datetime 库中的获取现在的时间
    安装datetime 库

    pip install datetime
    

    获取现在时间的方法

    import datetime
    dt = datetime.datetime.now()
    

    可以使用dt.year,dt.month,dt.day分别获取今天的年,月,日

    最后完整代码如下
    这里有一个获取图片的小技巧,就是直接拖动图片到要输入的路径上,嘿嘿。

    from docx import Document
    from docx.shared import Inches,Cm,Pt
    from docx.oxml.ns import qn
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    import datetime
    dt = datetime.datetime.now()
    time = str(dt.year) +'年'+str(dt.month)+'月'+str(dt.day)+'日'
    name=str(input('请输入你的姓名:'))
    photo_path = str(input('请拖动图片到此:'))
    docx = Document('C:/Users/test/Desktop/请假条模板.docx')
    tables = docx.tables
    table=tables[0]
    xingming =table.cell(-1,3).paragraphs[0].add_run(name)
    xingming.font.name='黑体'
    xingming.font.size=Pt(15)
    shijian = table.cell(-1,4).paragraphs[0].add_run(time)
    shijian.font.name='黑体'
    shijian.font.size=Pt(15)
    shijian1=table.cell(2,1).paragraphs[3].add_run(time)
    shijian1.font.name='黑体'
    shijian1.font.size=Pt(15)
    run=table.cell(2,1).paragraphs[1].add_run()
    picture =run.add_picture(photo_path)
    picture.height=Cm(4.4)
    picture.width=Cm(6.2)
    path='C:/Users/test/Desktop/'+name+' '+time+'请假条  '+'.docx'
    docx.save(path)
    
    
    

    效果如图
    在这里插入图片描述
    图片可以插入,不方便展示。。。
    笔者这里的代码没有填写批假人与班级,感兴趣的小伙伴可以自己试着填一下。
    如果想要请假条模板可以评论告诉我,我会发给你。
    本人初学python ,文章中可能会出现各种错误,希望大佬观看时可以指出,谢谢。
    在这里插入图片描述

    展开全文
  • python调用com,如何完成word表格操作worddoc这个格式的文件是微软特有格式,微软没有向外公开任何的api接口文档,只能通过微软提供的OLE组件来提其COM接口,只要你的机器上安装了Offices完整的办公软件,在安装...

    python调用com,如何完成word表格操作

    word中doc这个格式的文件是微软特有格式,微软没有向外公开任何的api接口文档,只能通过微软提供的OLE组件来提其COM接口,只要你的机器上安装了Offices完整的办公软件,在安装目录下面有个MSWORD.OLB组件,导入这个即可。

    1、相关操作Excel有MSPPT.OLB,EXCEL.exe等。

    python操作word文档表格

    office 2007中不能直接打开VB编辑器,请按Alt + F11打开。

    import win32com.client # 导入脚本模块 WordApp = win32com.client.Dispatch("Word.Application") # 载入WORD模块 WordApp.Visible = True # 显示Word应用程序 1、 新建Word文档 doc = WordApp.Documents.Add() # 新建空文件 doc = WordApp.Documents.Open(r"d:\2011专业考试计划.doc") # 打开指定文档 doc.SaveAs(r"d:\2011专业考试计划.doc") # 文档保存 doc.Close(-1) # 保存后关闭,doc.Close()或doc.Close(0)直接关闭不保存 2、 页面设置 doc.PageSetup.PaperSize = 7 # 纸张大小, A3=6, A4=7 doc.PageSetup.PageWidth = 21*28.35 # 直接设置纸张大小, 使用该设置后PaperSize设置取消 doc.PageSetup.PageHeight = 29.7*28.35 # 直接设置纸张大小 doc.PageSetup.Orientation = 1 # 页面方向, 竖直=0, 水平=1 doc.PageSetup.TopMargin = 3*28.35 # 页边距上=3cm,1cm=28.35pt doc.PageSetup.BottomMargin = 3*28.35 # 页边距下=3cm doc.PageSetup.LeftMargin = 2.5*28.35 # 页边距左=2.5cm doc.PageSetup.RightMargin = 2.5*28.35 # 页边距右=2.5cm doc.PageSetup.TextColumns.SetCount(2) # 设置页面分栏=2 3、 格式设置 sel = WordApp.Selection # 获取Selection对象 sel.InsertBreak(8) # 插入分栏符=8, 分页符=7 sel.Font.Name = "黑体" # 字体 sel.Font.Size = 24 # 字大 sel.Font.Bold = True # 粗体 sel.Font.Italic = True # 斜体 sel.Font.Underline = True # 下划线 sel.ParagraphFormat.LineSpacing = 2*12 # 设置行距,1行=12磅 sel.ParagraphFormat.Alignment = 1 # 段落对齐,0=左对齐,1=居中,2=右对齐 sel.TypeText("XXXX") # 插入文字 sel.TypeParagraph() # 插入空行 注:ParagraphFormat属性必须使用TypeParagraph()之后才能二次生效

    如何用python读取word

    使用Python的内部方法open()读取文本文件try:f=open('/file','r')print(f.read())finally:if f:f.close()如果读取word文档推荐使用第三方插件,python-docx 可以在官网上下载使用方式# -*- coding: cp936 -*-import docxdocument = docx.Document(文件路径)docText = '\n\n'.join([paragraph.text.encode('utf-8') for paragraph in document.paragraphs])print docText

    如何用python读取excel文件

    展开全部 >>> app=my.Office.Word.GetInstance()>>> doc=app.Documents[0]>>> table=doc.Tables[1]>>> table.Cell(1,1).Select()>>> app.Selection.MoveDown(Unit=5, Count=2, Extend=1)>>> app.Selection.Cells.Merge()>>>my.Office.Word.GetInstance()用win32com得到Word的Application对象的实例我所使用的样本word文件中包含两个Table第二个Table是想要修改的table.Cell(1,1).Select()用于选中这个样表的第一个单元格app.Selection.MoveDown用于获得向下多选取3个单元格app.Selection.Cells.Merge()用于执行合并工作 ...

    Python 读取文档各行中同一列数据并按首尾相接合并输出到另一个文...

    展开全部 假设数据存储在文件 test.txt中,程序如下(未经测试,大概是这么个意思)lines=open(r'test.txt').readlines()text=[]for line in lines: word=line.split() thirdword=word[2].strip() text.append(thirdword)result=''.join(text)print result...

    怎么用python读取txt文件里指定行的内容,并导入excel

    展开全部 如果文件不大,建议使用下面的方法。

    由于linecache会缓存,所以对大文件可以使用自己简单是实现getline如下:def getline(thefilepath, desired_line_number):if desired_line_number < 1: return ''for current_line_number, line in enumerate(open(thefilepath, 'rU')):if current_line_number == desired_line_number - 1 : return linereturn ''...

    展开全文
  • 一个基础的代码演示(并未对合并的单元格做处理), 可以读取Word文档的所有表格/标题, 并在Excel创建相应的sheet 希望能帮助到你. 原先的想法是可以直接打开一次execl然后一次性写入, 网上搜了一圈没有啥好办法, ...

    一个基础的代码演示(对于合并的单元格, 思路来源python docx处理word文档中表格合并问题), 可以读取Word文档中的所有表格/标题, 并在Excel中创建相应的sheet
    原先的想法是可以直接打开一次execl然后一次性写入, 网上搜了一圈没有啥好办法, 只能采用每次一个新表都重新打开文件的形式. 所以如果是重新生成相同文件名需要删除原有的文件(处理在save_sheet).
    在这里插入图片描述
    如上表格(引自引用文章), 处理到Excel中为:
    在这里插入图片描述

    如遇xlsx文件低版本office打不开请使用xls格式. 希望能帮助到你.

    import re
    import docx
    import xlwt
    from numpy import *
    
    # 改写Excel
    import xlrd
    from xlutils.copy import copy
    
    docFile = 'source.docx'
    xlsFile = 'des.xlsx'
    
    
    # 获取表格标题 自行修改规则
    def get_tables_names(doc_paragraphs, heading_level):
        tables_list = []
    
        list_null = []
        # 根据标题等级选
        # for paragraph in document.paragraphs:
        # if paragraph.style.name == 'Heading 1':
        #    print(paragraph.text)
        pass
        # 删除空标题
        for i in range(0, len(doc_paragraphs)):
            if len(doc_paragraphs[i].text) == 0:
                list_null.append(doc_paragraphs[i])
        for i in range(0, len(list_null)):
            doc_paragraphs.remove(list_null[i])
    
        print("检测到%d个标题" % (len(doc_paragraphs)))
        for i in range(0, len(doc_paragraphs)):
            print(str(i + 1) + ' ' + doc_paragraphs[i].text)
            try:
                table_name = re.findall('[A-Za-z_]+', doc_paragraphs[i].text)[0]
            except IndexError:
                table_name = "当前不符合规则" + str(i + 1)
            print(table_name)
            tables_list.append(table_name)
        return tables_list
    
    
    # 获取单个表 返回二维list
    def get_table(doc_tables, index):
        table = doc_tables[index]
        table_cells = []
        b_merge = False
    
        i = 0
        merge_cell = []
        for row in table.rows:
            cur_row = []
            j = 0
            for cell in row.cells:
                if cell in cur_row:
                    cur_row.append(None)
                    merge_cell.append([i, j])
                else:
                    cur_row.append(cell)
                j += 1
            table_cells.append(cur_row)
            i += 1
    
        i = 0
        for col in table.columns:
            cur_col = []
            j = 0
            for cell in col.cells:
                if cell in cur_col:
                    merge_cell.append([j, i])
                else:
                    cur_col.append(cell)
                j += 1
            i += 1
        # print(merge_cell)
    
        for index in merge_cell:
            table_cells[index[0]][index[1]] = None
    
        table_cells_text = []
        for row in table_cells:
            cur_row_text = []
            for cell in row:
                cur_row_text.append(cell.text if cell is not None else '')
            table_cells_text.append(cur_row_text)
        return table_cells_text
    
    
    # 获取所有表
    def get_tables_list(doc_tables):
        tables_list = []
        for i in range(0, len(doc_tables)):
            tables_list.append(get_table(doc_tables, i))
        return tables_list
    
    
    # 将单个表格插入到某个表中
    # 重新建表时需要手动删除原有的表!!!
    def save_sheet(xls_name, sheet_name, table_cells):
        arr_table = array(table_cells)
        try:
            rb = xlrd.open_workbook(xls_name)
            book = copy(rb)
        except FileNotFoundError:
            book = xlwt.Workbook(encoding='utf-8')
    
        sheet = book.add_sheet(sheet_name)
    
        for i in range(0, arr_table.shape[0]):
            for j in range(0, arr_table.shape[1]):
                sheet.write(i, j, arr_table[i, j])  # 不带样式的写入
        book.save(xls_name)  # 保存文件
    
    
    # 保存所有表
    def save_all_sheets(xls_name, doc_tables, doc_paragraphs):
        tables_names = get_tables_names(doc_paragraphs, 2)
        try:
            for i in range(0, len(doc_tables)):
                if save_sheet(xls_name, tables_names[i], get_table(doc_tables, i)) is False:
                    print("保存失败")
                    return
        except IndexError:
            print("标题与表格数量不匹配")
        print("保存成功")
    
    
    def main():
        doc_document = docx.Document(docFile)
        doc_tables = doc_document.tables
        doc_paragraphs = doc_document.paragraphs
    
        save_all_sheets(xlsFile, doc_tables, doc_paragraphs)
    
    
    if __name__ == '__main__':
        main()
    
    
    展开全文
  • 很久之前写了一篇文章,是把excel内的数据放入word的模板当中批量生成新的word文件,今天碰到一个需求是要从大量的word模板表格提取信息,放入excel,这次运气很好,拜读了大佬的文章,简单修改一下直接运行...

    很久之前写了一篇文章,是把excel内的数据放入word的模板当中批量生成新的word文件,今天碰到一个需求是要从大量的word模板中的表格提取信息,放入excel中,这次运气很好,拜读了大佬的文章,简单修改一下直接运行解决问题。

    和上次一样Python只是支持docx格式的word

    import docx

    import os

    import xlwt

    from docx import Document #导入库

    rootdir ='你word所在目录'

    list = os.listdir(rootdir) #列出文件夹下所有的目录与文件

    f = xlwt.Workbook()#创建工作簿

    sheet1 = f.add_sheet(u'sheet1',cell_overwrite_ok=True) #创建sheet

    for i in range(0,len(list)):

    path = os.path.join(rootdir,list[i])

    if os.path.isfile(path): #如果是文件夹就继续打开

    document = Document(path) #读入文件

    tables = document.tables #获取文件中的表格集

    table = tables[0]#获取文件中的第一个表格

    name = table.cell(1,1).text #cell( ) 这是表格里面单元格的位置

    bumen = table.cell(2,4).text

    tel = table.cell(2,2).text

    zcid = table.cell(6,1).text

    data=[] #创建一个空列表,用append将表格里取出的数据加入到这个列表

    data.append(Document(path).paragraphs[1].text) #这里是读取了word中的第一段的内容

    data.append(bumen)

    data.append(name)

    data.append(tel)

    data.append(zcid)

    l_=range(len(data))

    x = data

    for j in l_:

    sheet1.write(i+1,j,x[j]) #第一个是写入哪一行,第二个写入参数的列, 第三个是要写入的数据

    f.save("数据.xls")#保存文件

    版权声明:本文为CSDN博主「qq_41758228」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/qq_41758228/article/details/80999344

    展开全文
  • import sys import re from docx import Document from docx.enum.text import WD_ALIGN_PARAGRAPH #设置对象居中、对齐等。 from docx.enum.text import WD_TAB_ALIGNMENT,WD_TAB_LEADER #设置制表符等 ...
  • 展开全部>>> app=my.Office.Word.GetInstance()>>> doc=app.Documents[0]>>> print doc.NameVBA工具集.doc>>> doc.Tables.Count2>>> table=doc.Tables[1]>>> table.Cell(1,1).Select()>>> app.Selection.MoveEnd...
  • 本文实例讲述了Python实现批量读取word中表格信息的方法。分享给大家供大家参考。具体如下:单位收集了很多word格式的调查表,领导需要收集表单里的信息,我就把所有调查表放一个文件里,写了个python小程序把所需的...
  • 一、修改数据类型(中英)需求:代码:#-*-coding:gbk*-import osimport docx#from docx.enum.table import WD_TABLE_ALIGNMENTfrom docx.enum.text import WD_ALIGN_PARAGRAPHfilepath = r'f:/1/'def main():...
  • 使用python-docx编辑一个docx文档时, 对添加的方法使用很多, 但有时候也会用到删除和修改python-docx并没有提供delete()方法, github上给出了解决方法:...(paragraph):p = paragraph._ele...
  • 两个简单的word文档, 各有一个表格:读取文档表格到列表(为演示只对单列表格操作):import docxdef 取表格(文件名):文件 = docx.Document(文件名)首个表 = 文件.tables[0]值 = []for 行 in 首个表.rows:for 格 in...
  • 概述本次主要来讨论如何用python-docx修改表格样式,修改表格的文字。全面的文章1.表格样式修改1.1 新建表格新建表格主要使用Document.add_table(rows,cols,style)方法第一个参数是行数第二个参数是列数第三个参数是...
  • 使用 python 修改 word 文档说明:这个需求是老师想要一个自动识别 word 文档指定位置的分数,并填入相应表格。使用库 python-docx 的官方文档地址是:python-docx一、安装 python-docx 库文件在 cmd 命令行使用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,005
精华内容 2,802
关键字:

python修改word中的表格

python 订阅