最近刚刚做完报表的统计,有部分是导出到excel中,有xls格式和csv格式的,刚好看到有人在问答频道问有关问题,在此作一下总结:
1. 导出 .xls 文件 并下载到客户端:
这里使用 spreadsheet_on_rails 插件,安装两个gem就可以了
spreadsheet ,和它依赖的包 ruby-ole
sudo gem install spreadsheet
sudo gem install ruby-ole
*** LOCAL GEMS ***
spreadsheet (0.6.3.1)
ruby-ole (1.2.10)
并在配置文件中添加:
config.gem 'spreadsheet'
我以 user model 为例进行导出:
建议: 一个比较符合rails规范的做法是,请求格式为 xls,如 /users.xls
首先在 config/initializers/mime_types.rb 中添加
Mime::Type.register "text/excel", :xls
这样就可以在view 中可以使用 formatted_users_path 带格式请求了
view中:
<%= link_to "Excel", formatted_users_path(:format => 'xls')%>
请求到 index action,下面是关键的了
def index
@users = User.all
respond_to do |format|
format.xls {
send_data(xls_content_for(@users),
:type => "text/excel;charset=utf-8; header=present",
:filename => "Report_Users_#{Time.now.strftime("%Y%m%d")}.xls")
}
format.html
end
end
private
def xls_content_for(objs)
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "Users"
blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
sheet1.row(0).default_format = blue
sheet1.row(0).concat %w{Username Email}
count_row = 1
objs.each do |obj|
sheet1[count_row,0]=obj.login
sheet1[count_row,1]=obj.email
count_row += 1
end
book.write xls_report
xls_report.string
end
这样就 ok 了,至于里面的样式看看文档己会改了。
2.导出 csv 格式的文件
先安装一个gem fastercsv :
sudo gem install fastercsv
# fastercsv (1.5.0)
添加配置:
config.gem 'fastercsv'
view中:
<%= link_to "CSV", formatted_users_path(:format => 'csv')%>
controller,respond_to 中继续添加:
format.csv {
send_data(csv_content_for(@users),
:type => "text/csv;charset=utf-8; header=present",
:filename => "Report_Users_#{Time.now.strftime("%Y%m%d")}.csv")
}
private
def csv_content_for(objs)
FasterCSV.generate do |csv|
csv << ["Username", "Email"]
objs.each do |record|
csv << [
record.login,
record.email
]
end
end
end
这样csv的也能导出了。
总得来说 功能都实现了,感觉这两个输出的效果差不多,不知一个spreadsheet gem 能不能搞定?
有知道的还请指教,这里先谢了。
分享到:
相关推荐
这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git => ...
Xport 表格数据导出到Excel,CSV等产品特点- column :name, group: :project 列宽- column :name, width: 10 列标题标题- column :name, header: "Full name" 列类型- column :name, type: :string 列样式- column :...
2. **poi**: 包含了处理HSSF(旧版的Excel .xls格式)和XSSF(新的Excel .xlsx格式)的API。 3. **poi-ooxml**: 提供了处理OOXML文档的类,支持.xlsx格式。 4. **poi-ooxml-lite**: 如果只处理.xlsx文件,可以使用轻...
导出为CSV on Rails的 这个简单的插件使您能够调用 to_csv 到一系列活动记录。 除了 :include 之外,构建器选项与 to_json / to_xml 相同。入门 在您的 Gemfile 中: gem 'to_csv-rails' # Last officially released...
在Rails框架中,你可能会在`views`目录下创建一个视图文件来处理CSV导出逻辑,而在`controllers`目录下的控制器文件中处理请求和响应。 在`views`文件夹中,你可以创建一个`.rhtml`或`.erb`文件,如`export.csv.erb...
4. 查看 views 文件,理解数据如何被格式化为特定导出格式。 5. 深入 lib 文件,学习自定义的导出逻辑和文件处理函数。 通过以上分析,我们可以掌握 Rails Exporter 的核心功能和实现方式,这对于提升我们自己的 ...
这个 Rails 插件是导出到 Excel 的最简单方法。 它使您能够调用 to_xls 到一系列活动记录(数组)。 除了 :include 之外,构建器选项与 to_json / to_xml 相同。 注意:IMO 我会使用 to_csv 插件; 它更兼容。 ( )...
通过这个Gem,开发者可以更方便地进行大量数据的导入和导出,这对于数据分析、备份或迁移等场景非常有用。 在Ruby开发中,使用这样的Gem可以极大地提高效率,因为COPY命令比普通的SQL INSERT语句更快,特别是处理...
标签“源码”可能意味着这个CHM文件包含有关Rails 3框架源代码的解释和示例,这对于深入理解Rails的工作原理以及如何自定义和扩展框架非常有用。而“工具”标签可能表示这个文档可以作为开发者日常工作中的一种实用...
这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何利用Rails的强大功能来创建一个允许用户上传、分享和浏览图片的应用。 1. **Rails框架基础**: Rails的核心理念是DRY(Don't...
Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...
《Rails101_by_rails4.0》是一本专注于Rails 4.0.0版本和Ruby 2.0.0版本的自学教程书籍,它定位于中文读者,旨在成为学习Rails框架的参考教材。Rails(Ruby on Rails)是一个采用Ruby语言编写的开源Web应用框架,它...
在这一部分,作者将引导读者如何安装和配置Ruby on Rails环境,包括Ruby语言本身、Rails框架以及相关的工具和库。这里还会涉及如何创建第一个Rails项目,以及如何运行服务器以查看项目。对于新手来说,这一步骤是至...
☆ 资源说明:☆ [Pragmatic Bookshelf] Crafting Rails Applications (英文版) [Pragmatic Bookshelf] Crafting Rails Applications Expert Practices for Everyday Rails Development (E-...[图书格式] PDF 格式
- **定义**:验证是在保存数据之前对模型进行检查的过程,确保数据符合预期的格式和约束条件。 - **类型**:Rails提供了多种内置的验证类型,如`presence`、`uniqueness`、`format`等。 #### 三、关联 - **定义**...
2. **更好的性能**:由于API通常处理的是JSON数据而非HTML,所以Rails API优化了对JSON格式的支持,降低了内存占用和处理时间。 3. **路由优化**:Rails API的路由系统更侧重于资源操作,简化了API路由的定义,方便...
Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY(Don't Repeat Yourself)原则和开发效率。 Rails的核心特性包括: 1. **约定优于配置**(Convention Over Configuration):...
1. **activesupport-2.1.0.gem**:ActiveSupport是Rails的一个重要库,提供了许多实用的工具和方法,如时间区处理、字符串格式化、数组和哈希操作等。它也包含了一些核心的Ruby扩展,帮助开发者编写更简洁、更具表达...
Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,强调“约定优于配置”(Conventions over Configuration)和“Don't Repeat Yourself”(DRY,不要...
这个压缩包很可能包含了 Rails 框架的源代码和其他相关文件,方便开发者进行下载、学习和使用。 标签 "rails ruby" 明确指出这个话题涉及到 Ruby 语言和 Rails 框架。Ruby 是一种面向对象的、动态类型的编程语言,...