使用ruby来操作excel文件首先需要在脚本里包含以下语句
require 'win32ole'
把win32ole包含进来后,就可以通过和windows下的excel api进行交互来对excel文件进行读写了.
打开excel文件,对其中的sheet进行访问:
excel = WIN32OLE::new('excel.Application')
workbook = excel.Workbooks.Open('c:\examples\spreadsheet.xls')
worksheet = workbook.Worksheets(1) #定位到第一个sheet
worksheet.Select
读取数据:
worksheet.Range('a12')['Value'] #读取a12中的数据
data = worksheet.Range('a1:c12')['Value'] #将数据读入到一个二维表
找到第一处a列的值为空值
line = 1
while worksheet.Range("a#{line}")['Value']
line=line+1
end #line的值为第一处空白行的行数
将第一列的值读入到一个数组中
line = '1'
data = []
while worksheet.Range("a#{line}")['Value']
data << worksheet.Range("a#{line}:d#{line}")['Value']
line.succ!
end
将数据写入到excel表格中
worksheet.Range('e2')['Value'] = Time.now.strftime '%d/%m/%Y' #单个值
worksheet.Range('a5:c5')['Value'] = ['Test', '25', 'result'] #将一个数组写入
调用宏定义
excel.Run('SortByNumber')
设置背景色
worksheet.Range('a3:f5').Interior['ColorIndex'] = 36 #pale yellow
# 将背景色恢复成无色
worksheet.Range('a3:f5').Interior['ColorIndex'] = -4142 # XlColorIndexNone constant
# 使用Excel constant 将背景色恢复成无色
worksheet.Range('a3:f5').Interior['ColorIndex'] = ExcelConst::XlColorIndexNone
保存
workbook.Close(1)
# 或
workbook.SaveAs 'myfile.xls'
# 默认路径是系统定义的"我的文档"
结束会话
excel.Quit
一些相对完整的代码片段
创建一个excel文件并保存
require 'win32ole'
excel = WIN32OLE.new("excel.application")
excel.visible = true # in case you want to see what happens
workbook = excel.workbooks.add
workbook.saveas('c:\examples\spreadsheet1.xls')
workbook.close
操作excel文件的几个重要元素
Excel => workbook => worksheet => range(cell)
我理解的是excel为类名,workbook为一个具体的(excel文件)实例,创建好实例后,worksheet是实例(workbook,工作簿)中的一个工作表,然后可
以对工作表中的每个单元格(range(cell))进行具体的读写------------------按照这样操作肯定没有错,不过下面的这些语句又让我有些疑惑
excel.workbooks("Mappe1").worksheets("Tabelle1").range("a1").value #读取名为Mappe1的excel文件中工作表名为Tabelle1的a1单元格中的值
excel.worksheets("Tabelle1").range("a1").value #作用同第一条语句
excel.activeworkbook.activesheet.range("a1").value #作用同第一条语句
excel.activesheet.range("a1").value #作用同第一条语句
excel.range("a1").value #作用同第一条语句
excel可以直接操作所有的属性,默认为当前活跃的工作簿/工作表
对单元格的操作:
某个单元格: 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'
迭代访问:
sheet.range("a1:a10").each{|cell|puts cell.value}
如果范围是一个矩形,则会按行循环迭代访问
sheet.range("a1:b5").each{|cell|puts cell.value}
block迭代,并打印出每行的第一个值
sheet.range("b3:c7").rows.each{|r|puts r.cells(1,1).value}
采用: http://www.51testing.com/?uid-46209-action-viewspace-itemid-82188
相关推荐
ruby_full:RoR_Full_29 :: Ruby_reports
Ruby on Rails Guides v2 - Ruby on Rails 4.2.5
The available options are: [:ruby, :ruby_18,:ruby_19, :ruby_20, :mri, :mri_18, :mri_19, :mri_20, :rbx, :jruby, :mswin,:mingw, :mingw_18, :mingw_19, :mingw_20]然后更新捆绑器: gem update bundler在...
与我们的好友Ruby分享一些爱! 对所有花时间创建和维护我们使用的开源软件的仁慈的人表示感谢! 问题 您是否曾经想过有时要说谢谢您有多重要? 回复好心的话是多么高兴! 尤其是当某些东西对您来说是一种爱好时,...
Payoneer Ruby SDK Payoneer Ruby SDK。 安装 将此行添加到您的应用程序的Gemfile中: gem 'payoneer_ruby_sdk' 然后执行: $ bundle 或将其自己安装为: $ gem install payoneer_ruby_sdk 配置 Payoneer . ...
是将前端工具作为Ruby进行编程,纯属喜悦! :smiling_face_with_heart-eyes: 此回购包含的库将使您可以轻松地将Vite集成到您喜欢的Ruby框架中,例如或 。 为什么要Vite? :thinking_face: Vite,这意味着开发...
$ gem install ruby_terminal_games 用法 $ ruby_terminal_games Usage: ruby_terminal_games COMMAND [ARGS] The most common commands are: list Get the list of games play Have fun ! about What is the ...
ruby-build - 编译和安装Ruby
excel_to_ruby-将一些Excel文件大致转换为Ruby。 这使电子表格可以: 嵌入到其他程序中,例如Web服务器或优化程序不依赖任何Microsoft代码例如,运行会转换为或。安装需要Ruby。 安装方式: gem install excel_to_...
Ruby 的紧凑语言检测这是 Google 的 ruby 包装。用法一种。 包括宝石 gem 'ruby_cld2' , :git => 'git@github.com:craig-day/ruby_cld2.git' 湾在给定的字符串上调用该函数。 require 'cld2'#...CLD2 . detect_...
Ruby版本changelog 介绍 在上查看此项目的完整版本 本页面最后更新于2021-04-09通过rake md task Ruby更新日志 Ruby 3.0 实施: :gear: MJIT改进 :NEW_button: Ractor-像并发抽象的Actor模型 :test_tube: :NEW_...
此文档我学习Ruby on Rails技术的综合 ,有读书笔记、心得自创教程一些问题解决经验统分门别类集技术的综合 ,有读书笔记、心得自创教程一些问题解决经验统分门别类集技术的综合 ,有读书笔记、心得自创教程一些问题...
了解Ruby内存使用情况 :thinking_face: 我最初发表这篇文章是为了补充我对Ruby记忆的疑问(在MRI中)。 我没有CS学位,但了解Ruby如何使用内存并非易事。 我对这个主题充满热情。 该项目现在是Wiki。 随时贡献自己...
Ruby 版本 提供RubyVersion以简化在程序中检查正确 Ruby 版本的过程。安装 在您的命令行上: $ gem install ruby_version 在Ruby中: require 'ruby_version'用法 # Output RUBY_VERSIONRubyVersion . to_s# Check ...
这个是我从百度文库里找的rails笔记,原文作者用清晰的语言代领初学者怎样快速入门Rails
RGeo RGeo是Ruby的地理空间数据库。 :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_...
Ruby自定义可枚举方法内容| | | |关于该项目是一个微型宇宙合作项目,是Ruby部分中微型宇宙技术课程要求的一部分。 该项目由不同的ruby可枚举方法组成,这些方法可模仿Ruby的内置可枚举方法方法下面列出了创建的...
ruby_parser 家 虫子 博士 描述: ruby_parser(RP)是用纯Ruby编写的Ruby解析器(利用racc,默认情况下使用C扩展名)。 它输出可以通过ruby2ruby gem进行操纵并转换回ruby的s表达式。 举个例子: def ...
ruby_practice_bigginer:Ruby红入门
用Crystal编写的本机Ruby扩展 不使用FFI的本机扩展的功能代码。 这可以利用任何Crystal代码,即现有的分片。 这仍在大量开发中,尚无法使用。 如果您有兴趣创建概念证明,我们很乐意为您提供帮助。 但是否则,这还...