使用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(RoR)开发中的报告生成技术。Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,而Ruby on Rails是基于Ruby构建的一个开源Web应用框架...
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 on Rails笔记》中,作者陈刚分享了他在学习Ruby on Rails过程中的经验与心得。这份笔记不仅包含了作者的学习历程和个人体会,还汇集了他在学习过程中遇到的问题及其解决方案。作者提到,“读不如做,做不如...
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 on Rails的笔记内容涵盖了从安装Rails环境到创建和运行一个简单的Rails项目的基础知识,这些内容对于初学者来说是学习Rails框架的极好入门材料。通过对这些知识点的学习,初学者可以快速了解Rails的...
excel_to_ruby-将一些Excel文件大致转换为Ruby。 这使电子表格可以: 嵌入到其他程序中,例如Web服务器或优化程序不依赖任何Microsoft代码例如,运行会转换为或。安装需要Ruby。 安装方式: gem install excel_to_...
Ruby版本changelog 介绍 在上查看此项目的完整版本 本页面最后更新于2021-04-09通过rake md task Ruby更新日志 Ruby 3.0 实施: :gear: MJIT改进 :NEW_button: Ractor-像并发抽象的Actor模型 :test_tube: :NEW_...
标题 "用ruby读excel文件生成xml文件" 描述的是一项技术任务,即使用Ruby编程语言来处理Excel文件,并将其内容转换成XML格式。这在数据迁移、格式转换或与不支持Excel格式的应用程序进行数据交换时非常有用。Ruby库...
了解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 ...
RGeo RGeo是Ruby的地理空间数据库。 :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_...
这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了Ruby语言的学习和实践。以下是对这些知识点的详细说明: 1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程...
通过使用 Ruby 过滤器,我们可以编写任意的 Ruby 代码来处理事件,实现对数据的清洗、转换或增强。Ruby 过滤器提供了丰富的 API 和灵活性,使得数据处理变得非常强大。 例如,你可以使用 Ruby 过滤器来: 1. 修改...
Ruby自定义可枚举方法内容| | | |关于该项目是一个微型宇宙合作项目,是Ruby部分中微型宇宙技术课程要求的一部分。 该项目由不同的ruby可枚举方法组成,这些方法可模仿Ruby的内置可枚举方法方法下面列出了创建的...
用Crystal编写的本机Ruby扩展 不使用FFI的本机扩展的功能代码。 这可以利用任何Crystal代码,即现有的分片。 这仍在大量开发中,尚无法使用。 如果您有兴趣创建概念证明,我们很乐意为您提供帮助。 但是否则,这还...
Ruby Jard提供了一个丰富的Terminal UI,可可视化您的所有需求,愉快地导航程序,仅在特定地点停止,减少了人工和脑力劳动。 现在,您可以专注于真正的调试。 请访问了解更多信息。 注意:Ruby Jard仍在大量开发中...
《Ruby的Kerberos KeyTab解析器:ruby_keytab_parser详解》 在信息技术领域,安全...在深入学习和掌握`ruby_keytab_parser`后,开发人员能够更好地应对与Kerberos相关的各种挑战,从而提升整个系统的安全性和可靠性。
Ruby一线食谱 基于示例的命令行中使用ruby进行文本处理的指南。 书中还包括演习,以测试你的理解,这是一起呈现在本回购单个文件- 有关练习的解决方案,请参见 。 请参阅以跟踪对本书所做的更改。 电子书 您可以...