首页 > 编程语言 >python读word中的表格和插入表格

python读word中的表格和插入表格

时间:2024-11-02 10:49:18浏览次数:4  
标签:word 表格 python doc cell Range table

读取word中的表格

有时候需要从word中读取表格数据。不同于excel,word中表格的对象属性是Table。

示例文档如下:

读取效果:

行: 6 , 列: 3
['物料', '数量', '单价']
['车轮', '2', '100']
['坐垫', '1', '20']
['车把', '1', '5']
['车锁', '1', '13']
['总加', '138']

注意到表格最后一行有合并的单元格,目前的读取方法对于合并的单元格按照1个列单元读取!

代码:


import win32com.client as win32
from win32com.client import constants
import os

doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
doc_app.Visible = True
curr_path = os.getcwd()
file_path = r'%s\带表格文档.docx'%curr_path
doc = doc_app.Documents.Open(file_path)

table = doc.Tables(1)
print('行:',table.Rows.Count, ', 列:', table.Columns.Count)
for row in table.Rows:#遍历表格每行
	info = []
	for cell in row.Cells:#遍历每行中的表格,即有效列
		info.append(cell.Range.Text[:-2])
	print(info)

读取word中带有合并单元格的表格

print('有效单元格个数:',table.Range.Cells.Count)
for cell in table.Range.Cells:
	print(cell.RowIndex, ',', cell.ColumnIndex,',',cell.Range.Text[:-2])

word的对象中,无法直接判断单元格是否列合并或者行合并的。可以间接通过table.Cells来访问有效的单元格。如果访问cell.Row或者cell.Column,遇到合并的单元格会报错。

运行结果:

有效单元格个数: 20
1 , 1 , 
1 , 2 , 物料
1 , 3 , 数量
1 , 4 , 单价
2 , 1 , 零件
2 , 2 , 车轮
2 , 3 , 2
2 , 4 , 100
3 , 2 , 坐垫
3 , 3 , 1
3 , 4 , 20
4 , 2 , 车把
4 , 3 , 1
4 , 4 , 5
5 , 2 , 车锁
5 , 3 , 1
5 , 4 , 13
6 , 1 , 
6 , 2 , 总加
6 , 3 , 138

在word中插入表格

脚本效果:

脚本实现的内容:在新的word文档中插入一个表格,并写入脚本的内容。


import win32com.client as win32
from win32com.client import constants
import os

doc_app = win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序
doc = doc_app.Documents.Add()
doc_app.Visible = True

last_parag = doc.Paragraphs.Last
# 创建新的表格
table = doc.Tables.Add(Range=last_parag.Range, NumRows=3, NumColumns=4)
# 设置表格边框内外线
table.Borders.InsideLineStyle = constants.wdLineStyleSingle 
table.Borders.OutsideLineStyle = constants.wdLineStyleDouble 

#写入表格
cnt=0
for row in table.Rows:#遍历表格每行
	for cell in row.Cells:#遍历每行中的表格,即有效列
		cell.Range.Text = cnt
		cnt += 1 

插入第二个表格


#插入第二个表格
last_parag = doc.Paragraphs.Last
table2 = doc.Tables.Add(Range=last_parag.Range, NumRows=3, NumColumns=4)
table2.Borders.InsideLineStyle = constants.wdLineStyleSingle 
table2.Borders.OutsideLineStyle = constants.wdLineStyleDouble 

插入效果:

第二个表格插入效果,看起来和第一个连在一起了

调整一下,在第二个表格后面插入一个新的空行,拉开一段的距离。


#插入第二个表格
doc.Paragraphs.Add()# 插入新的一行
last_parag = doc.Paragraphs.Last #指向最后一行(刚插入的那一行)
table2 = doc.Tables.Add(Range=last_parag.Range, NumRows=3, NumColumns=4)
table2.Borders.InsideLineStyle = constants.wdLineStyleSingle 
table2.Borders.OutsideLineStyle = constants.wdLineStyleDouble 

遍历文档中的表格

for table in doc.Tables:
    print(table.Row(1).Cells(1).Range.Text) # 打印每个表格中左上角单元格的内容

标签:word,表格,python,doc,cell,Range,table
From: https://blog.csdn.net/flashman911/article/details/143447587

相关文章

  • python在word的页脚插入页面
    1、插入简易页码importwin32com.clientaswin32fromwin32com.clientimportconstantsimportosdoc_app=win32.gencache.EnsureDispatch('Word.Application')#打开word应用程序doc_app.Visible=Truedoc=doc_app.Documents.Add()footer=doc.Sections(1).Foo......
  • 使用wxpython开发跨平台桌面应用,对常用消息对话框的封装处理
    在很多程序中,封装常用消息对话框有很多好处,尤其是在GUI应用程序中,本篇随笔结合.net开发Winform界面的经验,对使用wxpython开发中 wx.MessageDialog和 wx.lib.agw.genericmessagedialog.GenericMessageDialog两种不同消息对话框的处理,对其进行简单封装,以适应程序开发的需要。......
  • python实操案例——小白篇
    目录案例1:简单计算器详细步骤代码示例说明案例2:判断奇偶数并校验输入详细步骤代码示例说明案例3:计算列表平均值详细步骤代码示例说明案例4:查找最大值和最小值详细步骤代码示例说明案例5:统计字符串中的字符详细步骤代码示例说明案例6:生成斐波那契数列详细步骤......
  • python并发+进程+线程编程超全讲解
    文章目录并发编程基本概念操作系统发展史史前时代手工操作——穿孔卡片批处理系统——磁带存储联机批处理系统脱机批处理系统多道系统多道程序设计技术多道批处理系统分时系统实时系统通用操作系统操作系统的进一步发展个人计算机操作系统网络操作系统分布式操作......
  • 使用Python中的DrissonPage库爬取小说网站并保存章节内容(bqg)
    前言在这个教程中,我们将学习如何使用Python结合DrissionPage库来自动化浏览器操作,从而从一个小说网站(bqg)上抓取小说的章节链接和内容,并将这些内容保存到本地文件。本文将详细介绍整个过程,并提供完整的代码示例。准备工作在开始之前,请确保已经安装了以下Python库:driss......
  • 基于django的在线购物商城推荐系统 python个性化购物商城推荐系统的设计与开发 爬虫
    基于django的在线购物商城推荐系统python个性化购物商城推荐系统的设计与开发爬虫排行榜可视化数据基于流行度的热点推荐平均加权混合推荐协同过滤推荐大数据机器学习深度学习OnlineShopRecommendPy一、项目简介1、开发工具和使用技术Pycharm、Python3及以上版......
  • 基于Python爬虫与文本挖掘的网络舆情监控系统【附源码】
    基于Python爬虫与文本挖掘的网络舆情监控系统效果如下:系统登录界面注册页面界面管理员主界面用户界面网络舆情管理界面看板详细页面系统简介界面用户主界面网络舆情界面研究背景随着网络空间舆论的日益活跃,其对社会事件的影响愈发显著。企业和组织需要......
  • D55【python 接口自动化学习】- python基础之模块与标准库
     day55练习:实现求导学习日期:20241101学习目标:模块与标准库--70小试牛刀:如何使用Python为函数求导?学习笔记:需求分析使用第三方模块实现函数求导编写程序并测试#求导fromsympyimportDerivative,Symbolx=Symbol('x')y=x*x+3*x+2d=Derivative(y,x)pri......
  • D52【python 接口自动化学习】- python基础之模块与标准库
    day52标准库学习日期:20241029学习目标:模块与标准库--67标准库:Python默认提供的便携功能有哪些?学习笔记标准库中的常见组件如何通过官方文档学习标准fromurllib.requestimporturlopenwithurlopen('http://www.baidu.com')asf:print(f.read(300)......
  • 二十八、Python基础语法(面向对象-下)
    一、self从函数的语法上来看,self是形参,是一个普通的参数,那么在调用的时候,就需要传递实参值。从调用上看,我们没有给self这个形参传递实参值,但是Python解释器会自动的将调用这个方法的对象,作为实参值传递给self。classDog:defeat(self):prin......