python从word中提取信息导入excel_如何使用Python将信息从Excel提取到PowerPoint并保留格式?...

我用python的xlrd和pptx编写了一个脚本来读取目录中的每个工作簿,并将每个工作表中的信息提取到PowerPoint幻灯片中的表格中.如果excel表很小但是我不知道这些excel文件中会包含什么,它可以正常工作.当行和列太多时,它变得难以辨认.当excel文件有图形而不是单元格而脚本无法读取时,我的主要问题出现了.所以我尝试使用pyscreenshot来打开文档并截取屏幕截图,但这似乎很慢而且没必要.我想在PowerPoint中制作一张幻灯片,就像在Excel中一样,但是能够添加和更改内容.

import libraries and modules

import xlrd

from pptx import Presentation

from pptx.util import Inches, Pt

import time

import glob

import os

start = time.time()

prs = Presentation()

title_slide_layout = prs.slide_layouts[0]

slide = prs.slides.add_slide(title_slide_layout)

shapes = slide.shapes

title = slide.shapes.title

subtitle = slide.placeholders[1]

title.text = "Dashboard Generator"

subtitle.text = "made with Python-pptx and xlrd"

for filename in glob.glob(os.path.join("C:/Users/penelope/Desktop/PMO/myfiles/", '*.xlsx')):

print(filename)

file_location = filename

try:

workbook = xlrd.open_workbook(file_location)

nsheets = workbook.nsheets

for n in range(0, nsheets):

sheet = workbook.sheet_by_index(n)

print("sheet:", sheet)

rows = sheet.nrows

cols = sheet.ncols

c = cols

r = rows

if c > 0:

print(c, r)

slide = prs.slides.add_slide(prs.slide_layouts[5])

shapes = slide.shapes

title = slide.shapes.title

title.text = "Table testing"

left = Inches(0.0)

top = Inches(2.0)

width = Inches(6.0)

height = Inches(4.0)

num = 10.0/c

table = shapes.add_table(rows, cols, left, top, width, height).table

for i in range(0, c):

table.columns[i].width = Inches(num)

for i in range(0,r):

for e in range(0,c):

table.cell(i,e).text = str(sheet.cell_value(i,e))

cell = table.rows[i].cells[e]

paragraph = cell.text_frame.paragraphs[0]

paragraph.font.size = Pt(11)

except:

print("Error!")

pass

prs.save('powerpointfile1.pptx')

end = time.time()

print(end - start)

这是我的截图脚本:

import os

import time

import pyscreenshot as ImageGrab

from PIL import Image

if __name__ == "__main__":

os.system('start excel.exe "C:/Users/penelope/Desktop/PMO/TestCase.xlsx"')

time.sleep(3)

im=ImageGrab.grab(bbox=(24,210,1800,990))

im.save("image7.png")

img = Image.open('image7.png')

img.show()

解决方法:

好吧,你选择了一个难题.当然,我一直尝试过这种事情,但我最终放弃了努力.

我形成的基本解释是Excel(和Word)是“流动”的文档环境.也就是说,当你在一个页面上用完房间时,它会流向下一个页面.另一方面,PowerPoint是一个逐页的展览布局环境.每张幻灯片都独立于其他幻灯片(可以自由重新排序幻灯片的证明),每个幻灯片都要一次显示,而不是滚动.这导致每个幻灯片是独立的,这意味着约束到单个“页面”.

可以在幻灯片上放置多少信息并且仍然可以进行通信是有限制的.通常越少越好.所以,也许并非所有我早期努力的结果都令人沮丧:)我还得出结论,一个有效的“仪表板”幻灯片需要非常熟练的布局,并且对内容长度有极大的限制,可能需要特定的(人工)总结工作(不是只是从“数据库”复制).

关于图表位,那些理论上可以转移到PowerPoint,我甚至已经看过它,但它在技术上相当具有挑战性. python-pptx中没有API支持. This historical issue on the GitHub repo可能会对所涉及的内容有所了解.不是我想要的胆小的心脏:)

标签:python,excel,powerpoint

来源: https://codeday.me/bug/20190628/1310627.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值