`
sun201200204
  • 浏览: 299318 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ruby_学习笔记:读写excel文件

    博客分类:
  • ruby
 
阅读更多

            测试工作中,批量的数据通常会放到excel表格中,测试输出的数据写回表格中,这样输入输出易于管理,同时清晰明了,

使用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_full: RoR_Full_29 :: Ruby_reports 涵盖了全面的Ruby on Rails(RoR)开发中的报告生成技术。Ruby是一种面向对象的编程语言,以其简洁、优雅的语法著称,而Ruby on Rails是基于Ruby构建的一个开源Web应用框架...

    demo_web_app:这是howitzer_example的演示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笔记》中,作者陈刚分享了他在学习Ruby on Rails过程中的经验与心得。这份笔记不仅包含了作者的学习历程和个人体会,还汇集了他在学习过程中遇到的问题及其解决方案。作者提到,“读不如做,做不如...

    payoneer_ruby_sdk:PayoneerRubySDK

    Payoneer Ruby SDK Payoneer Ruby SDK。 安装 将此行添加到您的应用程序的Gemfile中: gem 'payoneer_ruby_sdk' 然后执行: $ bundle 或将其自己安装为: $ gem install payoneer_ruby_sdk 配置 Payoneer . ...

    vite_ruby::high_voltage:Ruby中的Vite.js,为您JavaScript体验带来欢乐

    是将前端工具作为Ruby进行编程,纯属喜悦! :smiling_face_with_heart-eyes: 此回购包含的库将使您可以轻松地将Vite集成到您喜欢的Ruby框架中,例如或 。 为什么要Vite? :thinking_face: Vite,这意味着开发...

    ruby_terminal_games:一些用Ruby编写的基本游戏,可以玩得开心

    $ 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笔记

    综上所述,Ruby on Rails的笔记内容涵盖了从安装Rails环境到创建和运行一个简单的Rails项目的基础知识,这些内容对于初学者来说是学习Rails框架的极好入门材料。通过对这些知识点的学习,初学者可以快速了解Rails的...

    excel_to_code:将一些Excel电子表格大致转换为Ruby或C

    excel_to_ruby-将一些Excel文件大致转换为Ruby。 这使电子表格可以: 嵌入到其他程序中,例如Web服务器或优化程序不依赖任何Microsoft代码例如,运行会转换为或。安装需要Ruby。 安装方式: gem install excel_to_...

    ruby-changelog:RubyCHANGELOG

    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文件" 描述的是一项技术任务,即使用Ruby编程语言来处理Excel文件,并将其内容转换成XML格式。这在数据迁移、格式转换或与不支持Excel格式的应用程序进行数据交换时非常有用。Ruby库...

    understand_ruby_memory:试图了解Ruby内存:full_moon_face:

    了解Ruby内存使用情况 :thinking_face: 我最初发表这篇文章是为了补充我对Ruby记忆的疑问(在MRI中)。 我没有CS学位,但了解Ruby如何使用内存并非易事。 我对这个主题充满热情。 该项目现在是Wiki。 随时贡献自己...

    ruby_version:Ruby版 | 比RUBY_VERSION好

    Ruby 版本 提供RubyVersion以简化在程序中检查正确 Ruby 版本的过程。安装 在您的命令行上: $ gem install ruby_version 在Ruby中: require 'ruby_version'用法 # Output RUBY_VERSIONRubyVersion . to_s# Check ...

    rgeo:Ruby的地理空间数据库

    RGeo RGeo是Ruby的地理空间数据库。 :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_selector: :warning_...

    hw-ruby-intro.zip_SaaS软件工程_hw-ruby-intro_ruby _ruby 中文_saas

    这个压缩包包含了一份名为“hw-ruby-intro”的作业代码,它是针对高级软件工程课程的,特别强调了Ruby语言的学习和实践。以下是对这些知识点的详细说明: 1. **Ruby语言**:Ruby是一种面向对象的、动态类型的编程...

    Logstash 的 Elasticsearch过滤器_Ruby_代码_相关文件_下载

    通过使用 Ruby 过滤器,我们可以编写任意的 Ruby 代码来处理事件,实现对数据的清洗、转换或增强。Ruby 过滤器提供了丰富的 API 和灵活性,使得数据处理变得非常强大。 例如,你可以使用 Ruby 过滤器来: 1. 修改...

    custom_ruby_enumerables:此应用程序是使用用户自定义代码实现内置Ruby枚举器的演示。

    Ruby自定义可枚举方法内容| | | |关于该项目是一个微型宇宙合作项目,是Ruby部分中微型宇宙技术课程要求的一部分。 该项目由不同的ruby可枚举方法组成,这些方法可模仿Ruby的内置可枚举方法方法下面列出了创建的...

    crystalized_ruby:在Crystal中编写本机Ruby扩展

    用Crystal编写的本机Ruby扩展 不使用FFI的本机扩展的功能代码。 这可以利用任何Crystal代码,即现有的分片。 这仍在大量开发中,尚无法使用。 如果您有兴趣创建概念证明,我们很乐意为您提供帮助。 但是否则,这还...

    ruby_jard:另一个Ruby调试器。 提供丰富的终端用户界面,该界面可视化您的所有需求,愉快地导航程序,仅在特定地点停止,减少了人工和脑力劳动。 您现在可以专注于实际调试

    Ruby Jard提供了一个丰富的Terminal UI,可可视化您的所有需求,愉快地导航程序,仅在特定地点停止,减少了人工和脑力劳动。 现在,您可以专注于真正的调试。 请访问了解更多信息。 注意:Ruby Jard仍在大量开发中...

    ruby_keytab_parser:Ruby的Kerberos KeyTab解析器

    《Ruby的Kerberos KeyTab解析器:ruby_keytab_parser详解》 在信息技术领域,安全...在深入学习和掌握`ruby_keytab_parser`后,开发人员能够更好地应对与Kerberos相关的各种挑战,从而提升整个系统的安全性和可靠性。

    learn_ruby_oneliners:基于示例的命令行中使用ruby进行文本处理的指南

    Ruby一线食谱 基于示例的命令行中使用ruby进行文本处理的指南。 书中还包括演习,以测试你的理解,这是一起呈现在本回购单个文件- 有关练习的解决方案,请参见 。 请参阅以跟踪对本书所做的更改。 电子书 您可以...

Global site tag (gtag.js) - Google Analytics