update (2011/4/29) :
Rails 3.0.7 ruby 1.9.2 spreadsheet 0.6.5.4可以用
update(2010/8/29):
一年之后本文出了个后继篇,是关于Rails的excel导入,导出的一些插件介绍
诸位看官,如果用到请赏脸移步参考
在Rails项目中导入excel 导出excel 实用rails解析excel
——————————
老猪的小分割———————————
本文是对spreadsheet基本知识的介绍,该插件可以读取和生成excel文件
如果,你想看更复杂的例子,
请点击这里
如果,你想看更简单的解析excel文件的例子,
请点击这里
如果,你想下载spreadsheet的gem包,
请点击这里
如果,你想了解windows下操作excel的特有方法,
使用ruby来操作excel文件 Win32ole
如果,你想考虑另外的插件roo来操作excel,
请点击这里
如果,你还想考虑rails的一个插件railsxls,
请点击这里
1. 使用Spreadsheet
本向导将介绍Spreadsheets的基本使用,看完本文您将掌握最基本的使用rails读写excel。
2. 读取excel文件
首先,保证加载库文件,否则功能没法用
excel工作文件(Worksheets)通常有多种编码格式,这里需要手动表明格式如下:
- Spreadsheet.client_encoding="UTF-8"
打开一个excel的文件
- book=Spreadsheet.open"/path/to/an/excel-file.xls"
这时,我们已经可以对excel文件的worksheets进行读写
或者,增加标识的进行读写:
- sheet1=book.worksheet0
- sheet2=Book.worksheet"Sheet1"
那么,现在我们可以使用迭代来遍历所有的行列,Worksheet.each自身会跳过空值。
或者,手动跳过前面的空值
或者,通过顺序号访问,
读取行中一个单元格的值
-> 这里将返回一个String字符串,Float或者整形(Integer)或者Formula或者Link或者Date或者DateTime。甚至nil值,如果表单值本来就是空值。
3. 生成excel文件
如果,你想生成一个excel文件,那么首先,就像写文件一个先加载spreadsheet类库,然后,指定编码接着,就可以创建一个Workbook了
- book=Spreadsheet::Workbook.new
在workbook基础上创建Worksheet表单
- sheet1=book.create_worksheet
当然,你也可以用如下方式创建表单:
- sheet2=book.create_worksheet:name=>'MySecondWorksheet'
- sheet1.name='MyFirstWorksheet'
那么,这时我们可以采用如下方式加载数据到表单Worksheet#[]=,
Worksheet#update_row, 或者直接给一个指定单元格复制
- sheet1.row(0).concat%w{NameCountryAcknowlegement}
- sheet1[1,0]='Japan'
- row=sheet1.row(1)
- row.push'CreatorofRuby'
- row.unshift'YukihiroMatsumoto'
- sheet1.row(2).replace['DanielJ.Berger','U.S.A.',
- 'AuthoroforiginalcodeforSpreadsheet::Excel']
- sheet1.row(3).push'CharlesLowe','Authoroftheruby-oleLibrary'
- sheet1.row(3).insert1,'Unknown'
- sheet1.update_row4,'HannesWyss','Switzerland','Author'
对于格式的处理,可以如下:
- sheet1.row(0).height=18
- format=Spreadsheet::Format.new:color=>:blue,
- :weight=>:bold,
- :size=>18
- sheet1.row(0).default_format=format
- bold=Spreadsheet::Format.new:weight=>:bold
- 4.timesdo|x|sheet1.row(x+1).set_format(0,bold)end
最后,保存excel文件
- book.write'/path/to/output/excel-file.xls'
4. 修改已经存在的excel文件
对于修改excel文件而言是有限制的。下面是
可以进行的修改操作:
* 添加、修改和删除单元格
* 可以在预定义数据的情况下添加数据
不可以进行的操作:
* Spreadsheet 只能对BIFF8数据(Dxcel97以后版本的excel)进行写操作
* Spreadsheet 不能修改以百分比定义的格式.
* 虽然理论上是可行的,但是非常不建议把修改后的文件保存回原文件。
修改演示:
- book=Spreadsheet.open'/path/to/an/excel-file.xls'
- sheet=book.worksheet0
- sheet.eachdo|row|
- row[0]*=2
- end
- book.write'/path/to/output/excel-file.xls'
5. 如何处理时间
Excel 并没有单独的日期标识类型,依靠浮点类型格式显示
- row.format(3).number_format
如果,日起识别失败,就需要自己解码:
- row.date(3)
- row.datetime(3)
- row[4]=Date.new1975,8,21
- book.add_formatFormat.new(:number_format=>'DD.MM.YYYYhh:mm:ss')
- row[5]=DateTime.new2008,10,12,11,59
- row.set_format6,Format.new(:number_format=>'D-MMM-YYYY')
- row[6]=Time.new2008,10,12
6. 更多关于文档的编码格式
设置多种编码格式:
- Spreadsheet.client_encoding='LATIN1//TRANSLIT//IGNORE'
7. 兼容性问题
Spreadsheet是设计来代替ParseExcel 和Spreadsheet::Excel,但是他们还是兼容的。例如你的工程理还有parseexcel那么,你可以这样写
- require'parseexcel'
- require'parseexcel/parseexcel'
- require'parseexcel/parser'
分享到:
相关推荐
这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...
poi导出excel需要的jar
to_spreadsheet to_spreadsheet允许您的Rails 3+应用程序使用现有的slim / haml / erb / etc视图呈现Excel文件。安装将其添加到您的Gemfile中: gem 'to_spreadsheet'用法在控制器中: # my_thingies_controller....
rails.vim提供了常用的一些命令,可以帮助开发,例如:Rgenerate, Rake, Rfind,RTview等,很方便,也很实用。 安装方法: 拷贝 autoload/rails.vim, plugin/rails.vim, 和 doc/rails.txt 到 ~/.vim 目录. ...
基于Edge Rails运行的CRUD2 博文链接:https://mmm.iteye.com/blog/116934
Xport 表格数据导出到Excel,CSV等产品特点- column :name, group: :project 列宽- column :name, width: 10 列标题标题- column :name, header: "Full name" 列类型- column :name, type: :string 列样式- column :...
试算表Rails应用的电子表格view_component安装将此行添加到您的应用程序的Gemfile中: gem 'spreadsheet' , github : 'magma-labs/spreadsheet' 然后执行:$ bundle 或将其自己安装为:$ gem install spreadsheet ...
ruby on rails for eclipse开发插件
eclipse 支持ruby on rails开发的插件
thinking-sphinx, activerecord/Rails的Sphinx插件 ThinkingThinking是将ActiveRecord连接到Sphinx完整文本搜索工具的库,并与 Rails ( 但也适用于其他 ruby 网络框架) 紧密集成。 当前版本为 v3.4.2.插件升级升级时...
导出为CSV on Rails的 这个简单的插件使您能够调用 to_csv 到一系列活动记录。 除了 :include 之外,构建器选项与 to_json / to_xml 相同。入门 在您的 Gemfile 中: gem 'to_csv-rails' # Last officially released...
Ruby on Rails非常强大,但是它不能做所有的事情。有许多特性太过实践化,超出了Rails核心的范畴,或者与Rails的设计理念相左太甚(毕竟Rails是个人理念的软件)。核心团队不能也不会将人们想要的任何东西都包含到...
博文链接:https://moyuan.iteye.com/blog/221185
Simple Form - 轻松处理Rails表单
NULL 博文链接:https://hlee.iteye.com/blog/587006
oauth-plugin, 用于OAuth的Rails 插件 OAuth插件这是在 Rails 应用程序中实现OAuth提供者和消费者的插件。我们支持修改后的OAuth 1.0规格:tools.ietf. org/html/rfc5849以及对 OAuth 2.0的支持:tools.iet
Exception Notification - Rails的异常通知插件。能够在Rack/Rails应用发生错误时发送通知。
rails, Ruby on Rails 欢迎使用 RailsRails 是一个web应用程序框架,它包括根据 Model-View-Controller ( MVC ) Pattern 创建数据库备份的web应用程序所需的所有内容。理解 MVC Pattern 是理解 Rai
使用Rails构建可伸缩和可维护API的最佳方法
使用任何你想要的模型,或只是把相机放在它和去兜风! 是基于物理的相互作用。这辆车有一个刚体,可以像其他刚体一样被推、拉、撞、跳和加速。轨道本身可以被赋予加速度和刹车特性。使用包含的脚本,让您的购物车在...