2013-03-04 94 views
1

我正在学习Ruby并试图操作Excel数据。Ruby和Excel数据提取

我的目标:

为了能够从Excel文件中提取电子邮件地址,并将其放置在每行的文本文件和一个逗号添加到末尾。

我的想法:

我想我的答案是使用电子表格和File.new的。

我在找的是方向。我希望听到任何提示或者提示,以实现我的目标。感谢

请不要发布确切的代码只有找准方向想找出自己...

感谢,卡伦

更新::

所以,正则表达式似乎能找到所有匹配的字符串并将它们存储到数组中。我有一些麻烦设置,但应该能够弄清楚....但现在开始我将只提取标记为“E邮件”列.....我现在的问题是:

`parse_csv = CSV.parse(read_csv, :headers => true)` 

为默认值:skip_blanks设置为false。我需要将其设置为true,但无处我能找到正确的语法,这样做......我assumming像

`parse_csv = CSV.parse(read_csv, :headers => true :skip_blanks => true)` 

但是,没有.....

回答

1

Excel文件保存为CSV(逗号分隔值),并与工作Ruby's libraries

+0

非常感谢评论家们......一旦我掌握了使用CSV的方法,我会给remote_table一个尝试,看看我宁愿使用哪一个...所以这就是我现在所拥有的..我能够读取和解析CSV文件并将['E Mail']的内容打印到屏幕上。下一步是排除空白行并写入csv文件,谢谢@Seamus Abshere,我相信可以使用.to_csv来完成..这就是我所拥有的..不知道如何使用代码标签。 – 2013-03-04 20:35:38

+0

'#!/ usr/bin/env ruby​​' 'require“csv”' 'read_csv = File .read(ARGV [0]) parse_csv = CSV.parse(read_csv,:headers => true)' 'parse_csv.each do | row | puts“#{row ['E Mail']}” end' – 2013-03-04 20:41:52

+0

非常好!我只是在open-uri中做了同样的事情,很有趣:)尝试检出用于删除空格,特定字符等的正则表达式。它们是可以添加到程序对象中的方法的参数'object.scan(/ \ d /)'会导致数字。例如'/ \ w /'和'/ \ W /'命令特别涉及通过排除它们或找到它们来处理空白,此外在SO上总是有很多很好的例子。 – aug2uag 2013-03-05 00:23:33

0

除了spreadsheet(可以读取和写入),您可以使用RemoteTable读取Excel和其他文件类型。

gem install remote_table 

require 'remote_table' 
t = RemoteTable.new('/path/to/file.xlsx', headers: :first_row) 

,当你写的CSV,如@ aug2uag说,你可以使用Ruby的标准库(没有宝石安装必需的):

require 'csv' 
puts [name, email].to_csv 
0

就个人而言,我d保持尽可能简单,并使用CSV

下面是如何将工作的一些伪代码:

read in your file line by line 
extract your fields using regex, or cell count (depending on how consistent the email address location is), and insert into an arry 
iterate through the array and write the values in the fashion you wish (to console, or file) 

在评论你有该代码是一个很好的开始,但是,puts只会写安慰,而不是文件。你还需要弄清楚你将如何知道你正在得到电子邮件地址。

希望这会有所帮助。

+0

它非常有用。我知道在Ruby中有很多方法可以做事。随着我的进步,我会回来。这也是所有电子邮件在同一专栏中的重要一点。更好地搜索字符串.. – 2013-03-04 21:53:34

+0

有很多方法可以在大多数语言中做事情。这就是让编程成为一门艺术的原因。以最有效和最有效的方式了解如何/为什么要做事。随着你的学习,你会成长并变得更好:) – BlackHatSamurai 2013-03-04 21:57:05