This tutorial will cover how to read (or parse) an excel file with ruby. I had to write a script to unpivot some data for a co-worker that saved him hours of time, and I got to write a ruby script, so it was a win-win. Here's how you can do the same thing.
Installing Parseexcel
Parseexcel is a ruby port of the perl parseexcel module.
It's installable via a nice gem like so:
That's that, now remember since it's a gem library we have to tell our script to use the gem libs when we run the script from the console using the -rubygems switch.
Using Parseexcel
Parseexcel is a very straight forward library, you can't do too much with it, but it gets the job done.
Getting a Workbook
This returns the actual excel file's workbook, from there we need to determine what worksheet we're on.
Getting a Worksheet
Will return the first worksheet, you could also use the each method on the workbook to iterate over all the worksheets.
Iterating over rows and columns
The worksheet object has a very nice each method that will allow us to iterate over the rows like so
j=0
i=0
if row != nil
row.each { |cell|
if cell != nil
contents = cell.to_s('latin1')
puts "Row: #{j} Cell: #{i} #{contents}"
end
i = i+1
}
j = j +1
end
}
Getting Cell Data
- Getting a String: cell.to_s('latin1')
- Getting a Float: cell.to_s('latin1')
- Getting a Int: cell.to_i
- Getting a Date: cell.date
Getting A Specific Cell
A basic script for dumping an excel file
#Open the excel file passed in from the commandline
workbook = Spreadsheet::ParseExcel.parse(ARGV[0])
#Get the first worksheet
worksheet = workbook.worksheet(0)
#cycle over every row
worksheet.each { |row|
j=0
i=0
if row != nil
#cycle over each cell in this row if it's not an empty row
row.each { |cell|
if cell != nil
#Get the contents of the cell as a string
contents = cell.to_s('latin1')
puts "Row: #{j} Cell: #{i}> #{contents}"
end
i = i+1
}
end
}
To run the script, remember to use the -rubygems switch so that you can find the parsexcel library.
相关推荐
在Ruby中操作Excel文件主要是通过`win32ole`库来实现的,这个库允许Ruby程序与Windows操作系统中的Office应用程序进行交互,如Microsoft Excel。以下是关于如何使用Ruby操作Excel的详细步骤和知识点: 1. **引入win...
从给定的文件标题、描述、标签以及部分内容中,我们可以提炼出以下详细的IT知识点,主要聚焦于使用Ruby语言对Excel文件进行操作。 ### 使用Ruby操作Excel的基础知识点 #### 1. 引入win32ole库 在Ruby中操作Excel,...
Apache POI提供了HSSF(老版的.xls文件)和XSSF(新版的.xlsx文件)API,可以创建、修改和读取Excel文件。 4. **Python的pandas库**: Python的pandas库是数据分析的利器,它内置了read_excel函数,可以方便地将...
简单的电子表格 电子表格阅读器和(以后)支持通用格式的书写器:CSV(.csv),Excel(.xls,.xlsx),Open-office(.ods)和Google(在线)。...读取整个文件 是的 是的 是的 是的 是的 是的 逐行阅读 是的
以下是一个简单的使用`roo` 的Ruby代码示例,展示如何打开一个Excel文件并打印第一张工作表的单元格值: ```ruby require 'roo' # 打开Excel文件 xlsx = Roo::Spreadsheet.open('example.xlsx') # 获取第一个工作...
显然,这包括诸如读取和编写Excel工作簿之类的标准任务。 gem旨在管理同时运行的Excel实例,即使同时发生用户交互也是如此。 RobustExcelOle处理各种情况下的Excel(和用户)行为,并提供一些Excel和JRuby错误的...
CSV(逗号分隔值)文件是一种常见的数据交换格式,适合数据分析工具如Excel、Python的pandas库或R语言进行读取和处理。 从这个过程中我们可以学到以下IT知识点: 1. **PDF数据提取**:PDF文件通常包含丰富的格式和...
Selenium 支持数据驱动测试,这意味着测试数据可以从外部文件(如CSV或Excel)中读取,使测试更灵活且易于维护。这样,同一测试脚本可以针对不同输入数据执行,提高测试覆盖率。 **6. 并发测试** Selenium Grid ...
4. 可实现数据驱动测试:通过读取外部数据源(如CSV、Excel等),可以轻松实现基于数据的测试。 文章提到的“自动化测试过程”涉及以下关键步骤: 1. 测试脚本编写:使用Selenium WebDriver提供的API编写自动化测试...
此外,数据驱动测试也是常见实践,通过读取外部数据源(如CSV或Excel文件)来实现灵活的测试数据管理。 总之,Selenium 是一款强大的自动化测试工具,它提供的丰富的API和广泛的支持使得测试人员能够高效地进行Web...