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}