精华内容
下载资源
问答
  • 如何在文档中建立表格
    千次阅读
    2022-05-31 23:59:34

    1 简介:

    本篇继续python操作word之旅:利用python给word文档加入表格。

    上几篇中,学习了是用python进行简单的word文档的创建,word文档的内容获取,以及内容修改,具体参考如下链接:

    传送门:

    Python3-word文档操作(一):利用python创建word文档,并且设置标题和正文的内容,设置字体样式

     Python3-word文档操作(二):利用python获取word文档的内容

     Python3-word文档操作(三):利用python修改word文档的内容

    2 举例:

    在word文档中加入作者-朝代表格。效果图如下: 

    表格内容:

    作者

    朝代

    李白

    杜甫

    苏轼

     开发思路:

    1)先创建一个word文档(本例子中,直接打开一个已经存在的文档);

    2)调用add_table,创建并返回这个table的对象。add_table的参数包括行数,列数;

    3)设置表格的数据;

    4)设置表格的样式等参数。

    5)保存成一个新的word文件。

    具体代码如下:

    # -*- coding: utf-8 -*-
    import os
    import sys
    import time
    #from docx import Document
    import docx
    from docx.shared import RGBColor
    
    def create_doc_table():
        doc_name = "念奴娇_赤壁怀古.docx"
        doc = docx.Document(doc_name)
    
        #表格数据
        field_list = ["作者","朝代"]
        content_list = [["李白","唐"],["杜甫","唐"],["苏轼","宋"]]
    
        table = doc.add_table(rows=4, cols=len(field_list))
        #表格样式
        table.style = 'Light List Accent 1'
        #表格各个列的标题
        cells = table.rows[0].cells
        for i in range(len(field_list)):
            cells[i].text = field_list[i]
     
        #表格内容
        for rows_id in range(3):
            item = content_list[rows_id]
            row_cells_data = table.rows[rows_id+1].cells
            for i in range(len(field_list)):
                row_cells_data[i].text = item[i]
        time_str = str(time.time())
        print("time_str====",time_str)
    
        #新文档的文件名
        new_doc_name =  "念奴娇_赤壁怀古_" + time_str+".docx"
        doc.save(new_doc_name)
    
    
    if __name__ == '__main__':
        #create_doc()
        #fetch_doc()
        #update_doc()
        create_doc_table()

    运行结果:

    生成了带有表格的word文档,如下图

     说明:

    1)create_doc_table: 核心函数。功能是:打开已经存在的一个表格,将需要的数据以表格的形式添加到这个word文档中,并且保存在新的文档中;

    1)doc.add_table(rows=4, cols=len(field_list)): 创建一个表格,返回这个表格的对象;

    2)table.rows[0].cells:获取一个表格的所有的列;

    3)table.rows[rows_id+1].cells: 获取一个表格的单元格


    更多相关内容
  • 在文档中创建表格的方法装置电子设备及存储介质 pdf整理.zip
  • 本篇文章是对使用c#word文档中创建表格的方法进行了详细的分析介绍,需要的朋友参考下
  • 本篇文章是对利用Aspose.Words,word文档中创建表格的实现方法进行了详细的分析介绍,需要的朋友参考下
  • 表格能够一目了然的让用户看到数据信息,使信息显得有条理化,那么pdf类型的文档中如何来添加表格并对表格进行格式化操作呢?下面小编给大家带来了C# PDF文档中创建表格的实现方法,需要的朋友参考下吧
  • Boxable是一个可用于轻松pdf文档中创建表格的库。 它使用 PDF库。 特征 pdf文件中建立表格 将CSV数据转换为pdf文档中的表 将列表转换为pdf文档中的表格 盒装支持下一张桌子的功能 单元格内容HTML标签(不是...
  • 今天小编就为大家分享一篇C#对Word文档创建、插入表格、设置样式等操作实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • table2word :使用标题和矩阵 Microsoft Word 中创建表格。 指定文件名和表格样式是可选的。 titles:列标题(单元格数组)。 m:数字矩阵。 文件名:excel 文件的名称。 style:表格样式(来自文件帮助
  • 1.Word文档如下: 2.代码 # -*- coding: UTF-8 -*- from docx import Document def readSpecTable(filename, specText): document = Document(filename) paragraphs = document.paragraphs allTables = ...
  • 我们可以使用 python-docx 模块,实现 word 中创建表格。请看下面这段代码:table = doc.add_table(rows=1, cols=len(titles))# 设置表格样式table.style = 'Light List Accent 1'# 设置标题title_cells = table....

    ceea5ade0cda?utm_source=oschina-app

    我们可以使用 python-docx 模块,实现在 word 中创建表格。

    请看下面这段代码:

    table = doc.add_table(rows=1, cols=len(titles))

    # 设置表格样式

    table.style = 'Light List Accent 1'

    # 设置标题

    title_cells = table.rows[0].cells

    for i in range(len(titles)):

    title_cells[i].text = titles[i]

    # 设置内容

    for d in data:

    row_cells = table.add_row().cells

    for i in range(len(titles)):

    row_cells[i].text = d[i]

    运行结果:

    ceea5ade0cda?utm_source=oschina-app

    现在让我们来分析这段代码。

    (1)首先调用 add_table 方法,创建 Table 对象

    table = doc.add_table(rows=1, cols=len(titles))

    add_table 方法定义为 add_table(rows, cols, style=None)。它接受三个参数,分别是行数、列数以及样式,其中行数与列数是必填项。如果没有指定 style,那么表格样式会使用当前文档的默认表格样式。

    (2)设置表格样式

    table.style = 'Light List Accent 1'

    style 属性,可读可写表格样式。如果将其设置为 None,那么将移除之前所指定的样式,并使用当前文档的默认表格样式。

    注意: 样式名称如果存在 -,会被移除掉。比如 Light Shading - Accent 1 会被转换为 Light Shading Accent 1。

    ‘Light List Accent 1’ 所对应的就是 word 中的 ‘浅色列表 - 着色 1’,其它样式命名规则与此相同:

    ceea5ade0cda?utm_source=oschina-app

    (3)设置表格标题

    title_cells = table.rows[0].cells

    for i in range(len(titles)):

    title_cells[i].text = titles[i]

    这里的 titles 是标题列表,形如 [xx,xx]。

    Table 对象的 rows 实例包含多个 _Row 对象。每个 _Row 对象都包含一个 cells 列表,即包含多个 _Cell 实例。_Cell 实例中的 text 属性即可设置单元格的文本内容。

    (4)设置表格内容

    for d in data:

    row_cells = table.add_row().cells

    for i in range(len(titles)):

    row_cells[i].text = d[i]

    Table 对象中有一个 add_row() 方法,它会返回一个 _Row 实例。这个实例最后会被添加到表格末尾。

    在 word 中创建表格总结如下:

    创建 Table 对象。

    设置表格样式。

    设置标题。

    设置内容。

    展开全文
  • 怎么word中建立表格.doc
  • 同事最近被安排整理资料,主要工作室将文档中表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护。由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大。人工核对整理既费时又费力还耗神...

    同事最近被安排整理资料,主要工作室将文档中的表格数据提取出来并整理层Excel表格供我们FII刀具商城进行资料维护。由于刀具的种类繁多且规格无数,所以要处理的数据量相当的庞大。人工核对整理既费时又费力还耗神显然不合适,作为程序员的我们整么能不出手支援呢?

    一个Word文档中主要包含了有这么几种类型的内容:paragraph(段落)、table(表格)、character(字符)、image(图片)等。我现在要解析的word文档中主要是表格、字符串、图片等信息,我们主要是要拿到表格中的数据。

    处理这类文档数据当然优先考虑Python啦,python解析word文件可以使用包docx。首先我们需要安装python-docx,直接执行命令:pip install python-docx即可安装。当前的python-docx的版本为0.8.10,当python-docx安装完毕后通过python命令启动Python并输入import docx命令,如果没有提示任何错误即表示python-docx安装成功了。

    python-docx

    Python-docx是一个用于创建和更新Microsoft Word(.docx)文件的python库,可以很好的处理Word文档中的数据,但是要注意的是该库

    {!-- PGC_COLUMN --}

    无法处理.doc后缀的Word文档(直接该文件后缀是不行的),所以如果要处理.doc文档请先另存为.docx后缀的Word文档。python-docx提供了丰富的API Documentation可以帮助用户快速实现对Word文档的Document objects(文档对象)、Document Settings objects(文档设置对象)、Style-related objects (风格相关的对象)、Text-related objects(文本相关的对象)、Table objects (表格对象)、Section objects (段落对象)、Shape-related objects (形状相关的对象)、DrawingML objects (绘图对象)、Shared classes (共享类)及Enumeration (枚举)等各种操作,可以实现包含段落、分页符、表格、图片、标题、样式等几乎所有的Word文档中能常用的功能。

    获取Word中的表格数据

    现在我们可以创建一个Python文件来开始读取Word文件了,这里我们先创建一个规则的表格数据的Word文档来测试。tables是Word文件中所有的table构成的list(当前测试文件中只有一个table),range()函数在 for 循环中创建一个整数列表(表格是从1开始的)。

    表格合并问题处理

    上面我们处理的是一个没有单元格合并的标准表格,获取数据还是想到的简单的。现在我们继续测试Word文件中包含合并的单元格表格,如果还是用上面的方法那么合并的单元格内容会重复显示。比如这里的物品购买明细会出现4次,合计会出现3次,143会出现2次。

    单纯的数据去重

    如果我们只是为了获取其中的数据,那么晚我们可以使用最简单的方法就是去重复。创建一个空的列表用来存储单元格中的数据,当单元格中的数据在列表中已经存在时跳过该值,如果不存在则将其加入到列表中,这样最后的列表数据就是我们得到的不重复的数据了。有人应该已经发现问题了,那就是不同单元格中如果存在相同的数据的话也会被去重了。

    单元格合并特点

    这里我们需要知道一个单元格合并的特点,每个单元格都有其对应的内存地址,及时两个单元格之间的数据相同但是其对应的内存地址是不同的。而单元格合并之后这几个合并的单元格所处的内存地址是相同的,所以我们只要找到地址重复的单元格就说明这几个地址所处的单元格是合并的单元格。

    内存地址去重

    所以这里我们就可以通过内存地址来去重,当获取到指定单元格时我们拿着该单元格地址去判断这个对应的上一行和上一列中是否存在相同的内存地址,如果存在说明数据已经提取到了此时可以跳过后面的处理,如果不存在则继续接下来的操作即可。

    总结:

    我看网上的Python处理word文档中表格合并问题的方案都比较繁琐,这里提供个简单易懂的方式希望能帮到大家。以上内容是小编给大家分享的【Python实战009:读取Word文档中的表格数据及表格合并问题解决】,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。

    该方法只能去横向去重,纵向单元格合无效!

    展开全文
  • createForm 通过文档创建表格的功能
  • 然后把信息更新到一个xls电子表格中,像下面这样(直接po结果好了) 而且点击文件路径可以直接打开对应的文件(含超链接) 代码实现 1. 采集docx里面文件头信息 # -*- coding:utf-8 -*- # 此程序可扫描
  • 一、创建一个8行5列的表格 from docx import * doc=Document() table = doc.add_table(rows=8, cols=5) doc.save('table.docx') 上述代码就word里插入了一个8行、5列的表格。(有8*5=40个cell) 生成的每个cell...

    利用python-docx自动生成表格

    add_table()方法会返回一个Table对象。rows代表行数,cols代表列数;style代表样式,具体可以查看官方文档。

    一、创建一个8行5列的表格

    from docx import *
    doc=Document()
    table = doc.add_table(rows=8,  cols=5)
    doc.save('table.docx')
    

    上述代码就在word里插入了一个8行、5列的表格。(有8*5=40个cell)
    在这里插入图片描述

    生成的每个cell都是有“坐标”的,比如上面的表格左上角cell为(0,0),右下角cell为(7,4)
    Table()对象中报了对表格进行操作的方法和属性,如下:

    add_column(width):添加列(需要设置列宽)
    add_row():添加行
    cell(row_idx, col_idx):访问单个单元格
    row_cells(row_idx):返回一个序列(行号为row_idx的行内所有单元格)
    column_cells(column_idx):返回一个序列(列号为column_idx的列内所有单元格)
    rows:返回的是_Rows对象,是一个包含了所有行(_Row对象)的列表
    columns:返回的是_Columns对象,是一个包含了所有列(_Column对象)的列表
    想要熟练使用python-docx操作Word文档:需要认识Table()、_Cell()、 _Row()、 _Rows() _Column() 和 _Columns()五个类。
    
    

    二、设置表头
    rows代表行数,rows[0]即第一行。hdr_cells = table.rows[0].cells,hdr_cells即第一行的所有单元格。

    from docx import *
    doc=Document()
    table = doc.add_table(rows=8,  cols=5)
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '编号编号'
    hdr_cells[1].text = '漏洞名称'
    hdr_cells[2].text = '影响IP'
    hdr_cells[3].text = 'CVE ID'
    hdr_cells[4].text = '危险程度'
    doc.save('table.docx')
    
    

    运行结果:
    在这里插入图片描述

    三、设置表格样式

    上边的表格是默认的没有格式的,下边提供了两种设置表格边框的方式.

    1、使用系统style

    #方法一:创建表格时设置
    doc=Document()
    table = doc.add_table(rows=8, cols=5,style =‘Table Grid’)
    doc.save('table.docx')
    #方法二:创建表格后,再设置
    doc=Document()
    table = doc.add_table(rows=8, cols=5)
    table.style =‘Table Grid’
    doc.save('table.docx')
    

    运行结果:
    在这里插入图片描述
    2、自定义表格边框

    #设置表格的边框
    def set_cell_border(cell, **kwargs):
        """
        Set cell`s border
        Usage:
        set_cell_border(
            cell,
            top={"sz": 12, "val": "single", "color": "#FF0000", "space": "0"},
            bottom={"sz": 12, "color": "#00FF00", "val": "single"},
            left={"sz": 24, "val": "dashed", "shadow": "true"},
            right={"sz": 12, "val": "dashed"},
        )
        """
        tc = cell._tc
        tcPr = tc.get_or_add_tcPr()
    
        # check for tag existnace, if none found, then create one
        tcBorders = tcPr.first_child_found_in("w:tcBorders")
        if tcBorders is None:
            tcBorders = OxmlElement('w:tcBorders')
            tcPr.append(tcBorders)
    
        # list over all available tags
        for edge in ('left', 'top', 'right', 'bottom', 'insideH', 'insideV'):
            edge_data = kwargs.get(edge)
            if edge_data:
                tag = 'w:{}'.format(edge)
    
                # check for tag existnace, if none found, then create one
                element = tcBorders.find(qn(tag))
                if element is None:
                    element = OxmlElement(tag)
                    tcBorders.append(element)
    
                # looks like order of attributes is important
                for key in ["sz", "val", "color", "space", "shadow"]:
                    if key in edge_data:
                        element.set(qn('w:{}'.format(key)), str(edge_data[key]))
    
    
    

    调用该函数:

    
    set_cell_border(hdr_cells[0],
            top={"sz": 12, "val": "single", "color": "#FF0000"},
            bottom={"sz": 12, "val": "single", "color": "#FF0000"},
            left={"sz": 12, "val": "single", "color": "#FF0000"},
            right={"sz": 12, "val": "single", "color": "#FF0000"},
        )
    
    
    

    整体代码:

    from docx import *
    from docx.oxml import OxmlElement
    from docx.oxml.ns import  qn##qn#设置中文字体
    #设置表格的边框
    def set_cell_border(cell, **kwargs):
        """
        Set cell`s border
        Usage:
        set_cell_border(
            cell,
            top={"sz": 12, "val": "single", "color": "#FF0000", "space": "0"},
            bottom={"sz": 12, "color": "#00FF00", "val": "single"},
            left={"sz": 24, "val": "dashed", "shadow": "true"},
            right={"sz": 12, "val": "dashed"},
        )
        """
        tc = cell._tc
        tcPr = tc.get_or_add_tcPr()
    
        # check for tag existnace, if none found, then create one
        tcBorders = tcPr.first_child_found_in("w:tcBorders")
        if tcBorders is None:
            tcBorders = OxmlElement('w:tcBorders')
            tcPr.append(tcBorders)
    
        # list over all available tags
        for edge in ('left', 'top', 'right', 'bottom', 'insideH', 'insideV'):
            edge_data = kwargs.get(edge)
            if edge_data:
                tag = 'w:{}'.format(edge)
    
                # check for tag existnace, if none found, then create one
                element = tcBorders.find(qn(tag))
                if element is None:
                    element = OxmlElement(tag)
                    tcBorders.append(element)
    
                # looks like order of attributes is important
                for key in ["sz", "val", "color", "space", "shadow"]:
                    if key in edge_data:
                        element.set(qn('w:{}'.format(key)), str(edge_data[key]))
    
    
    
    
    
    
    
    doc=Document()
    #设置默认字体
    doc.styles['Normal'].font.name = u'宋体'
    doc.styles['Normal'].font.name = u'宋体'
    doc.styles['Normal'].font.name = 'Times New Roman'
    doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
    
    table = doc.add_table(rows=8,  cols=5)
    table.style ='Table Grid'
    hdr_cells = table.rows[0].cells
    hdr_cells[0].text = '编号编号'
    
    
    hdr_cells[1].text = '漏洞名称'
    hdr_cells[2].text = '影响IP'
    hdr_cells[3].text = 'CVE ID'
    hdr_cells[4].text = '危险程度'
    
    
    # #用table的row方法可以得到一个表格的一行list其中包含了这一行的所有cell
    # hdr_cells0 = table.rows[1].cells
    # hdr_cells0[0].add_paragraph('1')
    # hdr_cells0[2].add_paragraph('192.168.1.1')
    # hdr_cells0[3].add_paragraph('CVE-2019-0708')
    # hdr_cells0[4].add_paragraph('高')
    
    
    set_cell_border(hdr_cells[0],
            top={"sz": 12, "val": "single", "color": "#FF0000"},
            bottom={"sz": 12, "val": "single", "color": "#FF0000"},
            left={"sz": 12, "val": "single", "color": "#FF0000"},
            right={"sz": 12, "val": "single", "color": "#FF0000"},
        )
    
    doc.save('table.docx')
    

    运行结果:
    在这里插入图片描述

    三、向表格中添加数据

    1、向表格中第二行添加数据

    hdr_cells0 = table.rows[1].cells
    hdr_cells0[0].add_paragraph('1')
    hdr_cells0[1].add_paragraph('CVE-2019-0708 远程桌面代码执行漏洞')
    hdr_cells0[2].add_paragraph('192.168.1.1')
    hdr_cells0[3].add_paragraph('CVE-2019-0708')
    hdr_cells0[4].add_paragraph('高')
    
    

    运行结果:
    在这里插入图片描述
    2、向指定单元格添加数据

    cell = table.cell(1, 3)  # 获取第二行三列的表格对象(索引是从0开始的)
    cell.text='向第二行第三列添加的文字'# 在单元格中添加文本:
    
    

    运行结果:
    在这里插入图片描述
    四、设置表格对齐

    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    from docx.enum.table import WD_TABLE_ALIGNMENT, WD_CELL_VERTICAL_ALIGNMENT
    
    
    table.alignment = WD_TABLE_ALIGNMENT.CENTER  # 设置表格居中对齐
    
    for column in table.columns:  # 所有列
        for cell in column.cells:  # 所有单元格
            for paragraph in cell.paragraphs:  # 所有段落
                paragraph.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 水平对齐,居中
    

    运行结果:
    在这里插入图片描述
    我公众号大家可以关注支持一哈
    主要记录一些网络安全和Python的学习。
    在这里插入图片描述

    展开全文
  • 表格编辑器 ... 屏幕截图 ...这是一个纯静态JavaScript应用程序,可以任何现代浏览器运行。 至少首次加载页面时,它需要Internet连接才能访问TinyMCE的CDN。 依存关系 通过CDN使用的编辑器JS 执照
  • 开始创建带有样式,附件,表格和清单的文档,或将任何类型的文档放入笔记本。根据需要将它们归档尽可能多的嵌套书,以构造项目和细节。添加任务列表或简单的清单,将大型项目划分为嵌套子项目,这使它们更易于...
  • 行业文档-设计装置-富客户平台中表格创建方法及装置
  • 开始创建带有样式,附件,表格和清单的文档,或将任何类型的文档放入笔记本。根据需要将它们归档尽可能多的嵌套书,以构造项目和细节。添加任务列表或简单的清单,将大型项目划分为嵌套子项目,这使它们更易于...
  • 电脑文档怎么做表格

    万次阅读 2021-07-27 02:45:36
    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行...2、新建好文档后,鼠标双击进入,点击左上角的【插入】,然后点【表格】,【插入表格】,进入下一步,就建成了表格,可根据需求,进行多表格建立...
  • 方法一:(1)选中需要调整的文字或单元格-----右键-----单元格对齐方式----此命令的下一级菜单共有九e68a8462616964757a686964616f31333365653137个命令,然后选择中间那个示意图(上下左右居中)(一般是选第二行中间...
  • 我们使用python-docx来操作word文档,首先是安装: pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple 然后放两个参考文档: 官方手册:...
  • 日常生活我们使用腾讯文档在线的收集各类数据,数据收集是比较方便,但是如果希望对数据进行维护或者后续统计分析还是不方便的。本篇就介绍一下如何利用微搭低代码工具来接入腾讯文档的数据,实现数据的在线管理...
  • 正则表达式的运用
  • 找了一大片后发现JS宏的接口和VBA的接口是差不多一样的。所以参考VBA的接口尝试搭配 录制宏功能 写JS宏。 function Macro2() { Selection.SetRange(0, 0); let table1 = ActiveDocument.Tables.Add(Selection....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 210,438
精华内容 84,175
热门标签
关键字:

如何在文档中建立表格