python docx 表格_python-docx表格添加和删除数据

在使用Python-docx包对表格进行数据的录入,通常采用如下几种方式。

01设置单元格的值

表格中单元格的值有两种赋值方式,一种是直接为cell.text属性赋值来实现,另外一种是通过获取或者添加单元格中的段落,然后使用段落中的text属性赋值实现,代码如下:

from docx import Documentfrom docx.enum.text import WD_PARAGRAPH_ALIGNMENT # 导入段落对齐方式document = Document()table = document.add_table(2, 4) # 为文档新增2行4列的表格table.cell(0, 0).text = '值1' # 为表格的(0,0)位置单元格赋值paragraph = table.cell(0, 1).paragraphs[0] # 获取表格(0,1)位置单元格中的段落paragraph.text = '值2'paragraph = table.cell(0, 1).add_paragraph('第二个段落居中', style=None)paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER # 设置段落居中单元格赋值效果见下图

8d5494eef01f3a299cc76dd1496534375c607c6d.jpeg?token=2c23ab894ab4631e3ea36cf1bf8bf4bb单元格值设置的2种方式

第一种赋值方式,只能更改单元格的值,无法设置单元格中数据的样式,并且整个单元格只能是一个段落;而第二种赋值方式,使用了段落,在单元格赋值的基础上还能增加新的段落,并设置段落的样式和字体的样式。具体段落的使用方法可以参考文章python-docx段落设置

02一般录入方式

在表格中使用table.cell(col_index, row_indelx)来定位单元格,使用cell.text属性设置单元格的值。新建表格并将第一行设置为表头,从第二行开始作为数据的开始行,代码如下:

from docx import Document # 导入docx包document = Document() # 新建docx文档table = document.add_table(2, 4)table.cell(0, 0).text = '序号'table.cell(0, 1).text = '姓名'table.cell(0, 2).text = '年龄'table.cell(0, 3).text = '身高'# 表格赋值,将第二行作为数据输入第一行table.cell(1, 0).text = '1'table.cell(1, 1).text = '张三'table.cell(1, 2).text = '20'table.cell(1, 3).text = '174'document.save('test.docx')cell添加表格的效果图如下:

5366d0160924ab185fdf693de7ba6ecb7a890bb2.jpeg?token=e8f9324cddb5921a027a1242ab8bf54a使用table.cell添加数据

这种录入方式要为每个单元格单独写入使用代码,适合对表格数据样式重复性低的情形,代码量大,可移植性差。

03按行录入

这种方式将数据的录入以行为单位进行录入。在对数据录入时,先获取行中cells对象,遍历每个cell,并通过cell.text赋值,录入数据。代码如下:

data = [['序号', '姓名', '年龄', '身高'], ['1', '张三', '20', '174'], ['2', '李四', '19', '167']]document = Document() # 新建docx文档table = document.add_table(3, 4)#表头table_header = table.rows[0].cellsfor col_i in range(4):table_header[col_i].text = data[0][col_i]# 录入数据for row_i in range(1, 3):table_data = table.rows[row_i].cellsfor col_i in range(4): # 遍历列table_data[col_i].text = data[row_i][col_i]按行录入数据效果如下:图2

e61190ef76c6a7ef85057a242fba2757f3de665c.jpeg?token=5f74cc114d02fd2ec8d0499981188223按行录入数据

表中的数据以list类型存储,通过for循环按行遍历每个单元格,为每个单元格赋值。同02节录入数据方式相比,这种录入数据方式可移植性强,使用简便。

04删除单元格数据

单元格数据的删除从本质上来说同赋值是一样的,只不过赋值为空字符串,即''。同样也有两种方式来实现删除单元格数据,一种是直接cell.text赋值为'',另外一种能是使用段落,将段落的text属性赋值为''。单元格数据删除代码如下:

document = Document('test2.docx') # 读取test.docxtable = document.tables[0] # 读取第1个表格table.cell(0, 0).text = '' # 将(0,1)位置的单元格赋值为''paragraph = table.cell(0, 1).paragraphs[0].text = '' # 将(0,1)位置的单元格赋值为''document.save('test3.docx')删除单元格数据的效果图如下:

d53f8794a4c27d1ef38d56e5ca952568ddc4382a.jpeg?token=4fe13b409ab154cf03faeeddf96a5241单元格数据删除的2种方式

第一种方式删除后的单元格无法保留样式,而第二种删除方式保留了段落的样式。

05删除表格行数据

python-docx中没有删除一整行数据的方法,不过可以通过遍历行内的cell,然后利用删除行内所有单元格的方法来实现。代码如下:

for cell in table.rows[1].cells: 遍历表格中第2行中所有的单元格cell.text = '' # 删除行的值删除第2行后的效果见下图

7af40ad162d9f2d3a14dc6e578ac02156327cc20.jpeg?token=215426764e74f4fe23a91cf5b1b4aed5删除第2行中的值

06删除表格列数据

删除表格类的数据同删除行的数据是相似的,python-docx包中也没有删除整列值的方法。具体删除代码如下:

for cell in table.columns[1].cells: 遍历表格中第2列中所有的单元格cell.text = '' # 删除列的值删除第2列后的效果图

060828381f30e92481e5237c9c48e6001c95f785.jpeg?token=a700b408ccc9a80d119a897bbb092c23删除表格中的第2列的值

笔者将设置单元格的值、一般录入数据方式、按行录入数据方式、删除单元格数据、删除行数据和删除表格列数据等6个部分的内容制作了思维导图,见下图。为使用python-docx包录入和删除表格数据提供参考。

37d3d539b6003af31d2c2fd1d26a4e5a1138b6b0.jpeg?token=1d44f0b89415fbb4e726bd065bb7c6fapython-docx录入和删除表格数据

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值