require "win32ole"
#打开excel文件,对其中的sheet进行访问
excel = WIN32OLE::new("excel.Application")
workbook = excel.Workbooks.open("E:\\test02.xls")
worksheet = workbook.Worksheets(1)#定位到第一个sheet
worksheet.Select
#读取数据
data = worksheet.Range("a1:d2").value #读取单元格A1到D2的数据
puts data
#将数据写入到excel表格中
worksheet.Range("a4").value = Time.now.strftime'%d/%m/%Y' #将当前时间写入excel
worksheet.Range("a5:c5").value = ["
test",'25',"result"]#将一个数组写入
#调用宏定义
#excel.Run('SortByNumber')
#设置背景颜色
worksheet.Range('a1:d1').Interior.ColorIndex = 36 #pale yellow
# 将背景色恢复成无色
#worksheet.Range('a3:f5').Interior['ColorIndex'] = -4142 # XlColorIndexNone constant
# 使用Excel constant 将背景色恢复成无色
#worksheet.Range('a3:f5').Interior['ColorIndex'] = ExcelConst::XlColorIndexNone
#设置字体颜色为红色
worksheet.Range('a2:d2').Font.ColorIndex = 3
#迭代访问;如果范围是一个矩形,则会按行循环迭代访问
worksheet.Range('a1:f1').each do |cell|
puts cell.value
end
#保存
workbook.Close(1)
#或者
workbook.SaveAs("E:\\test02.xls")
#结束会话
excle.Quit
##创建一个EXCEL文件并保存
#require "win32ole"
#excel = WIN32OLE.new('excel.application')
#excel.visible = true
#workbook = excel.workbooks.add
#workbook.SaveAs('E:\\test\\TEST.xls')
#workbook.close
对单元格的操作:某个单元格: sheet.range("a1")
a1到c3的值: sheet.range("a1", "c3") 或 sheet.range("a1:c3")
第一列: sheet.range("a:a")
第三行: sheet.range("3:3")
获得单元格的值:
range.text #读取值,返回为字符串格式,如果单元格内为数字,有可能会被截断小数点后的位数
sheet.range("a1").text
range.value #读取值,数字不会截断
sheet.range("a1").value
对单元格设置值
sheet.range("a1").value = 1.2345
或
sheet.range("a1").value = '1.2345'