`

rails 导入导出csv文件及编码问题

 
阅读更多

1.controller层代码:

def index  #导出功能
 @products = Product.order(:name)
  respond_to do |format|
    format.html
    format.csv { send_data @products.to_csv }
    format.xls # { send_data @products.to_csv(col_sep: "\t") }
  end
end
def import_file
  Product.import(params[:file])
  render :text=>"ok"
end

 

 

2.model层代码:(product.rb)

#导出功能
def self.to_csv(options = {})
       CSV.generatee(options) do |csv|
          csv << column_names
          all.each do |product|
               csv << product.attributes.values_at(*column_names)
          end
       end
end

#导入功能
def self.import file   #这里的file为页面通过multipart编码传递过来的文件
        CSV.foreach(file.path, encoding: "GBK:UTF-8", headers: true) do |row|  
            if !row[3].blank?
                product = Product.new(
                      :yqf_activity_id=>row[0]||0,
                      :name=>row[1]||""
                )
                product.save!
          end
        end
    end

 

3.views代码:

<!--导出-->
<p>
  Download:
  <%= link_to "CSV", products_path(format: "csv") %> |
  <%= link_to "Excel", products_path(format: "xls") %>
</p>

<!--导入-->
<%=form_tag ..., :multipart=>true do %>
     <%=file_field_tag "file", nil%>
     <%=submit_tag "提交"%>
<%end%>

 4.在config/application.rb文件中添加

 

require 'csv'

分享到:
评论

相关推荐

    ruby导出csv文件

    在Rails框架中,你可能会在`views`目录下创建一个视图文件来处理CSV导出逻辑,而在`controllers`目录下的控制器文件中处理请求和响应。 在`views`文件夹中,你可以创建一个`.rhtml`或`.erb`文件,如`export.csv.erb...

    to_csv-rails:导出到 csv 文件

    导出为CSV on Rails的 这个简单的插件使您能够调用 to_csv 到一系列活动记录。 除了 :include 之外,构建器选项与 to_json / to_xml 相同。入门 在您的 Gemfile 中: gem 'to_csv-rails' # Last officially released...

    ParseCSV:Rails应用解析CSV文件

    在项目目录中运行: $rails s我的方法思考过程当我得到问题陈述时,这些是我最初的指导性问题: 从用户的角度来看,真正的问题是什么? 成功会是什么样? 我需要测试什么才能确保其正常工作? 我将如何对数据建模?...

    Rails中上传文件保存中文文件名乱码

    在Rails框架中处理文件上传时,经常会遇到一个问题,那就是当用户尝试上传包含中文名称的文件时,文件名可能会出现乱码。这个问题主要是由于字符编码不兼容导致的。Rails默认使用UTF-8编码,但文件系统或者某些外部...

    xport:将Rails模型导出到XLSX,CSV

    Xport 表格数据导出到Excel,CSV等产品特点- column :name, group: :project 列宽- column :name, width: 10 列标题标题- column :name, header: "Full name" 列类型- column :name, type: :string 列样式- column :...

    Ruby-此Gem将使您的AR模型能够使用PostgreSQLCOPY命令以CSV格式导入导出数据

    总结来说,这个Ruby Gem是针对Ruby on Rails应用的一个实用工具,它让开发者能够利用PostgreSQL的高效COPY命令处理CSV数据,从而优化大数据量的导入导出操作,提高应用程序的性能。通过集成这个Gem,开发者可以避免...

    Rails的中文乱码问题

    标题中的“Rails的中文乱码问题”涉及到的是在使用Ruby on Rails框架开发Web应用时,遇到的中文字符编码不正确的问题。Rails是一个基于Ruby语言的开源Web开发框架,它遵循MVC(Model-View-Controller)架构模式。在...

    rails-exporter-源码.rar

    3. Views:视图文件可能包含模板,用于定义导出文件的结构和样式,如 CSV 文件的列名或 Excel 文件的单元格样式。 4. Lib:Rails Exporter 的核心逻辑可能存在于 lib 目录下的文件,这些文件可能包含了导出的通用...

    rails2.3.2gem本地安装包及使用说明

    - 如果你遇到任何问题,查阅 Rails 2.3.2 的官方文档或社区资源,例如 Stack Overflow 上的相关问题,可能会有所帮助。 6. **安全与升级** - 考虑到 Rails 2.3.2 已经非常过时,可能存在大量的安全漏洞。在生产...

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件.zip

    rails_layout, 为各种前端框架生成 Rails 应用程序布局文件 RailsLayout gem使用这里 gem 可以设置你选择的前端框架的布局文件:Zurb基础 5.3Bootstrap 4.0Bootstrap 3.3它还将为 Bootstrap 或者基础设置设计视图。...

    Enrollment-App:具有搜索和导入导出功能的数据库管理系统

    附加的功能: 搜索-允许您根据某些属性过滤注册列表导出-搜索结果将导出到本地CSV文件。 导入-通过导入CSV文件来添加或更新注册记录。 表排序,分页等#安装说明查看。 或在您的本地环境中: 设置Ruby和Rails环境后...

    Rails、Sqlite的dll文件及安装

    标题“Rails、Sqlite的dll文件及安装”指的是在Ruby on Rails框架中使用SQLite数据库时,涉及的一些关键知识点。SQLite是一个轻量级的嵌入式数据库,常用于开发Web应用程序,尤其是开发阶段,因为它简单易用且不需要...

    csv_builder:Rails 3的CSV模板处理程序

    CSV生成器CSV Builder Rails插件提供了一个简单的模板系统,用于为您的应用程序中的动态生成的CSV文件提供服务。要求当前版本的CSV Builder已通过以下测试(至少是手动完成,并非全部通过CI): Rails 4.2.x,5.2.x...

    Task5:导入导出文件

    标题中的"Task5:导入导出文件"暗示了本次任务主要关注的是在应用程序中处理文件导入和导出的功能。在IT行业中,导入和导出文件是数据交换、备份以及系统间集成的重要环节。通常,这涉及到读取和写入不同格式的文件,...

    to_xls-rails:将Rails ActiveRecord或Mongid数据导出到Excel文件

    这个简单的插件使您能够调用to_xls到Rails的数组集合。 数组元素支持对象:ActiveRecord,Mongid,哈希。 在您的Gemfile中: gem 'to_xls-rails' # Last officially released gem # gem "to_xls-rails", :git =&gt; ...

    mira:从CSV文件创建简单的API

    米拉Mira是Ruby on Rails应用程序,为您提供了一个用于CSV文件的简单HTTP API。概括您创建一个Mira项目。 一个项目只是一个或多个CSV文件以及datapackage.json文件的存放地。 现在更多... 通过将datapackage.json...

    rails 文件上传

    4. **ActiveStorage**: Rails 5.2及更高版本引入了ActiveStorage,这是Rails内置的文件存储解决方案。它与ActiveRecord紧密集成,支持直接关联模型,同时支持多种云存储服务(如Amazon S3、Google Cloud Storage和...

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成.zip

    jquery-fileupload-rails, 用于 Rails的jQuery文件上传集成 Rails 文件上传jQuery-File-Plugin 是一个文件上传插件,由的Tschan 。 jQuery文件上传功能多文件选择。drag&拖放支持。进度栏和jQuery预览图像。 支持...

    导出数据库的所有数据成YML文件

    这个gem提供了一个命令行工具,能够将数据库中的数据导出为YML格式,或者从YML文件中导入数据到数据库。 2. **安装依赖**:如果你选择使用`yaml_db`,你需要先确保你的系统中已经安装了Ruby环境,并通过RubyGems来...

    Rails的文件附件扩展Paperclip.zip

    Paperclip 是 Rails 框架的一个插件,用于扩展 ActiveRecord 以支持简单的文件附件的功能。 标签:Paperclip

Global site tag (gtag.js) - Google Analytics