013 Ruby Excel写入PowerPoint

  |   0浏览

v2-2b8cc1f78a737dbfb23605ea9ae2dbad_720w.jpg

2020年6月是全国第19个“安全生产月”,安全月系列活动当然少不了竞赛答题。

这期,为你讲解如何将Excel数据写入PPT。

001 需求分析

我曾经利用Ruby整理了一套题库,经过加工处理,只保留了序号、题干和正确答案。

我想准备通过现场提问的方式,搞一次竞赛答题。

v2-48ff4d5b721ca58634d1c5ea262eab17_720w.jpg

这套题库总计124条数据,全手工操作,想想就头疼!!!

v2-de8f55702cc579f31bd624fe1ebdd73b_720w.jpg

PPT模板里第一页设置题目,第二页设置答案,依次类推。

如果手工复制黏贴不仅容易出错还累,

一旦源题库发生改动,则需要一个一个进行核对修正,

不仅麻烦,心还很累。

002 思路解析

我通过编写了一个程序,实现了Excel题库写入到PPT中。

下面,一起来看一下思路。

v2-923dbdd2cd75abbad2c9b84598628719_720w.jpg

第一步,初始化。我们生成了Excel应用、PPT应用。这是一个大前提,非常重要。

第二步,批量生成幻灯片。通过循环迭代重复这2步操作,使我们形成了多页幻灯片,为我们写入PPT,创造了对象空间。

第三步,读入数组。通过worksheets(1).usedrange.value将Excel题库放入数组,等待我们下一步调用。

第四步,循环写入PPT。我们通过Pst.slides(j).shapes(1).textframe.textrange.text属性,将数组中指定元素依次写入PPT中。

003 代码展示

require 'win32ole'Pth=File.dirname(__FILE__)# 初始化Eap=WIN32OLE::new('excel.application');Eap.visible=trueEbk=Eap.workbooks.open(Pth+'/题库.xls')Pap=WIN32OLE::new('powerpoint.application');Pap.visible=truePst=Pap.presentations.open(Pth+'/答题.pptx')123.times{  Pst.slides(2).copy  Pst.slides.paste 3  Pst.slides(1).copy  Pst.slides.paste 3}n=Pst.slides.countarr=Arrayarr=Ebk.worksheets(1).usedrange.valuej=1(1..n/2).each{|i|    Pst.slides(j).shapes(1).textframe.textrange.text=format('%1d',arr[i][0])+'.'+arr[i][2]    Pst.slides(j+1).shapes(1).textframe.textrange.text=arr[i][3]    j+=2}

原文地址:https://blog.51cto.com/14823672/2506732