Ruby读写excel表格

Ruby读写excel表格


Win32ole是访问Windows自动化的接口,可以让Ruby和Windows应用进行交互。
具体说来Win32ole可以操作Word,Excel,IE,Outlook等。

一、完整代码及效果图

代码截图

test1.xlsx
这里写图片描述
test2.xlsx
这里写图片描述

二、具体代码

加载win32ole模块

#encoding=UTF-8
require ‘win32ole’
excel=WIN32OLE::new(“excel.Application”)

操作excel1:打开=》选择第一个sheet页=》读取表格内容=》关闭表格

work1=excel.workbooks.open(‘C:\Users\Administrator\Desktop\test\before.xlsx’)
excel.visible = true
worksheet=work1.Worksheets(1)
data=worksheet.Range(“A1:B#{worksheet.usedrange.rows.count}”).Value
work1.close()

操作excel2:新建=》另存为=》打开=》选择sheet1=》添加表头信息=》写入数据=》保存关闭

work2 =excel.workbooks.add
work2.saveas(‘C:\Users\Administrator\Desktop\test\test2.xlsx’) #另存为
begin
work2=excel.workbooks.open(‘C:\Users\Administrator\Desktop\test\test2.xlsx’)
worksheet=work2.Worksheets(1)
worksheet.Range(‘a1:b1’).Value= [‘序号’,’名称’]
line=2
data.each{|para|
puts line
worksheet.Range(“a#{line}”).Value= para[0]
worksheet.Range(“b#{line}”).Value= para[1]
line+=1
}
work2.save #保存
work2.close()
excel.quit
rescue Exception => e
excel.quit
puts e.message
end

三、其他操作表格的方法

对单元格的操作:

某个单元格: sheet.range(“a1”)

a1到b2的值: sheet.range(“a1”, “b2”) 或 sheet.range(“a1:b2”)

第一列: sheet.range(“a:a”)

第一行: sheet.range(“1:1”)

获得单元格的值:

range.text #读取值,返回为字符串格式,如果单元格内为数字,有可能会被截断小数点后的位数
sheet.range(“a1”).text

range.value #读取值,数字不会截断
sheet.range(“a1”).value

对单元格设置值
sheet.range(“a1”).value = 1.2345

调用宏定义
excel.Run(‘SortByNumber’)

迭代访问表格数据:

sheet.range(“a1:a5”).each{|cell| puts cell.value}

sheet.range(“b1:c5”).rows.each{|row| puts row.cells(1,1).value}


猜你喜欢

转载自blog.csdn.net/qq_35061334/article/details/81023454