013 Ruby Excel写入PowerPoint
2020年6月是全国第19个“安全生产月”,安全月系列活动当然少不了竞赛答题。
这期,为你讲解如何将Excel数据写入PPT。
001 需求分析
我曾经利用Ruby整理了一套题库,经过加工处理,只保留了序号、题干和正确答案。
我想准备通过现场提问的方式,搞一次竞赛答题。
这套题库总计124条数据,全手工操作,想想就头疼!!!
PPT模板里第一页设置题目,第二页设置答案,依次类推。
如果手工复制黏贴不仅容易出错还累,
一旦源题库发生改动,则需要一个一个进行核对修正,
不仅麻烦,心还很累。
002 思路解析
我通过编写了一个程序,实现了Excel题库写入到PPT中。
下面,一起来看一下思路。
第一步,初始化。我们生成了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}