Python自动化办公,根据excel表格批量获取图片插入word

初学python 最近因为工作需要大量导入图片至word,学习了大佬们的代码后自己写了段
我的表格第一行默认标题,所以均从第二行开始读取

初学者,代码格式比较乱

表格的形式

import docx
from docx import Document
from docx.shared import Cm
from docx.oxml.ns import qn
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.shared import Pt, RGBColor
from docx.shared import Pt
import xlrd
path = 'E:/Python项目/项目测试/'
pathP = 'E:/Python项目/项目测试/图片/'  # 文件路径,主要是方便后面懒得写
xlsx = xlrd.open_workbook(path + "01.xls")  # 打开工作表
# xlsx.sheet_by_name('表名')#根据表的名称来读取工作表
# i=sheet.cell_value(1,4)
j = 1
t = int(input("请输入图片设置宽度,(为防止图片变形仅支持设置宽度单位cm):\n"))
xlsx = xlrd.open_workbook(path + "01.xls")  # 打开工作表
sheet = xlsx.sheet_by_index(0)  # 根据表的序号来读取工作表 0开始
i = sheet.nrows  # 获取表格最大行数 设定i为循环次数
nCols = sheet.ncols  # 获取表格最大列数
print('该表格的最大行数为', i, '默认执行次数为', i - 1, '次')
while i > 1:  # 循环i次,因我设置表格数据为第2行读取,循环次数比最大行数小1
    k = 2 #这里因为我是从第3列开始插入图片
    name = str(sheet.cell_value(j, 0))  # 获取j行,0+1列的数据
    number = int(sheet.cell_value(j, 1))  # 这里因为我是用该单元格数据命名,且表格数据获取后带小数点 转换成int型
    i -= 1
    doc = Document()  # 新建一个word文档
    doc.styles['Normal'].font.name = u'Times New Roman'  # 全局设置 英文字体
    doc.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '楷体')  # 全局设置中文字体
    DL1 = doc.add_paragraph()
    p1 = DL1.add_run("我是标题" + str(number))
    p1.font.size = Pt(22)
    p1.font.name = 'Times New Roman'  # 控制是西文时的字体
    p1.element.rPr.rFonts.set(qn('w:eastAsia'), '方正小标宋简体')  # p1为段落一 字体设置为
    DL1.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 设置文档中的第1个段落居中
    while k < nCols:
        # 如果k小于最大列数并且循环执行
        tx1: str = sheet.cell_value(j, k)  # 获取j行k列该单元格数据
        if tx1 == '':  # 如果获取到的单元格数据为空跳出循环
            break
        doc.add_picture(pathP + tx1 + ".jpg", width=Cm(t))  # 插入图片1
        doc.add_paragraph(" \n我是图片"+str(k - 1)+"号")
        k += 1
    j += 1
    dl = doc.paragraphs  # 获取所有段落
    dlnum: int = len(dl) - 1  # 获取段落数量
    # 格式设置
    while dlnum > 0:  # 循环遍历段落,并且居中,除第一段其余段落设置字体
        doc.paragraphs[dlnum].alignment = WD_PARAGRAPH_ALIGNMENT.CENTER  # 循环对段落居中
        ddc = doc.paragraphs[dlnum]
        runs = ddc.runs[0]  # 获取文字块
        runs.font.size = Pt(14)  # 更改获取的文字块字体为14号
        runs.font.color.rgb = RGBColor(0, 0, 0)  # 更改颜色为黑色
        dlnum -= 1
    doc.save(path + "输出/" + str(number) + ".docx")  # 保存至指定路径
    print("第" + str(j) + "行数据导入成功")

excel数据的获取注意事项,

excel的列长是表格中最长的一列的长,行数是最多的行。就想一个矩形,在该范围内的,即使是空单元格也是空字符串进行填充。

但是如果超出最长列或者行,获取数据就会报错!!

excel表格的列跟行均是从0开始起算

生成的第一文件

 生成的最后一个文件

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值