Rails中用CSV导出中文真心有技巧-程序员宅基地

技术标签: json  

require 'csv'

class PartRequestsController < ApplicationController
  def render_csv_header(filename = nil)
    filename ||= params[:action]
    filename += '.csv'
    if request.env['HTTP_USER_AGENT'] =~ /msie/i
      headers['Pragma'] = 'public'
      headers["Content-type"] = "text/plain"
      headers['Cache-Control'] = 'no-cache, must-revalidate, post-check=0, pre-check=0'
      headers['Content-Disposition'] = "attachment; filename=\"#{filename}\""
      headers['Expires'] = "0"
    else
      headers["Content-Type"] ||= 'text/csv'
      headers["Content-Disposition"] = "attachment; filename=\"#{filename}\""
    end
  end

  def index
    @part_requests = PartRequest.where(:status => params[:status]).order('id DESC')
    @status = params[:status]

    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @part_requests }
      format.csv do
        render_csv_header 'Part_Request_Report'
        csv_res = CSV.generate do |csv|
          csv << PartRequest.new.attributes.keys
          @part_requests.each do |o|
            o.part_request_details.each do |d|
              csv << o.attributes.values
            end
          end
        end
        send_data "\xEF\xBB\xBF"<<csv_res.force_encoding("ASCII-8BIT")
      end
    end
  end
end
      end
    end
  end
end

  

转载于:https://www.cnblogs.com/goody9807/p/4794567.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30613343/article/details/99231445

智能推荐

java实现简单闹钟_java实现动态时钟并设置闹钟功能-程序员宅基地

文章浏览阅读2k次。本文实例为大家分享了java实现动态时钟设置闹钟功能,供大家参考,具体内容如下显示如上图所示的动态时钟,并且可以设置闹钟,播放mp3。首先用到的是时钟(Timer)和日历(Calendar)得到系统的当前时间。代码如下:import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.geom.Ellipse2D;import ..._java 动态闹钟

关于升级第三方组件报错 com.android.builder.dexing.DexArchiveBuilderException: com.android.builder.dexing.DexArc_com.android.builder.dexing.dexarchivebuildex index-程序员宅基地

文章浏览阅读700次。最近项目安全风险整改,目前项目里面使用的组件版本比较低,存在一些安全漏洞,需要升级第三方组件的版本。先贴一下我的报错,有三个组件的升级会涉及到这一类报错,区别是三个组件报错涉及的包名不一样,分别是 (1)Gson 升级到 2.8.6(2)OKhttp3 升级到 4.9.0(3)Rxjava 升级到 3.0.6百度上大多数的说法都是没有使用 java 8 导致的,于是我加上了这段配置compileOptions { sourceCompatibility JavaVers_com.android.builder.dexing.dexarchivebuildex index9 out of bounds

postgresql 替换空格 换行和回车_postgres空格转换-程序员宅基地

文章浏览阅读1.9k次。UPDATE table set name = trim(name);//用来删除数据前后的空格UPDATE table set name = rtrim(name);//用来删除数据前的空格UPDATE table set name = ltrim(name);//用来删除数据后的空格UPDATE table set name = REPLACE(name,' ','');//用来删除数据中的空格UPDATE table set name =REPLACE(name, CHR(10), ._postgres空格转换

[机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析_"args.plottree=list(ftype=\"i\",fsize=1)"-程序员宅基地

文章浏览阅读386次。[机器学习&数据挖掘]机器学习实战决策树plotTree函数完全解析http://www.cnblogs.com/fantasy01/p/4595902.html点击打开链接import matplotlib.pyplot as plt#这里是对绘制是图形属性的一些定义,可以不用管,主要是后面的算法decisionNode = dict(boxstyle="sawto_"args.plottree=list(ftype=\"i\",fsize=1)"

SpringBoot 项目报错 spring boot Configuration Annotation Proessor not found in classpath_springboot configuration annotation peocessor-程序员宅基地

文章浏览阅读811次。报错spring boot Configuration Annotation Proessor not found in classpath这是因为@ConfigurationProperties(prefix=”author”) 没有指定classpath时,IDEA提示没有找到classpath。而spring boot1.5以上版本@ConfigurationProperties..._springboot configuration annotation peocessor

使用 Nmon 监控 Linux 的系统性能-程序员宅基地

文章浏览阅读62次。Nmon(得名于 Nigel 的监控器)是IBM的员工 Nigel Griffiths 为 AIX 和 Linux 系统开发的一款计算机性能系统监控工具。Nmon 可以把操作系统的统计数据展示在屏幕上或者存储到一份数据文件里,来帮助了解计算机资源的使用情况、调整方向和系统瓶颈。这个系统基准测试工具只需要使用一条命令就能得到大量重要的性能数据。使用 Nmon 可以很轻..._使用nmon瞬间完成

随便推点

论文阅读《FSCE: Few-Shot Object Detection via Contrastive Proposal Encoding》-程序员宅基地

文章浏览阅读3.3k次,点赞8次,收藏52次。提出了一种对比表征嵌入的方法来来实现小样本目标检测,动机是观察到使用不同的 IoU 来检测物体与对比学习方法中对比不同“正对”和“负对”来实现检测有异曲同工之妙。本文实验证明模型的错误更有可能是误分类而不是定位,文本解决这一问题的方法是对“正对”和“负对”施加了对比嵌入损失(CPE loss),使“正对”的得分远大于“负对”的得分,在当时的 PASCAL VOC 和 COCO 数据集上均达到了 SOTA。“正对”“负对”示例..._fsce

python在线评测系统_关于开源OJ_在线评测系统(Online Judge)设计与实现的研究与分析...-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏3次。标签:OJ是Online Judge系统的简称,用来在线检测程序源代码的正确性。著名的OJ有TYVJ、RQNOJ、URAL等。国内著名的题库有北京大学题库、浙江大学题库、电子科技大学题库、杭州电子科技大学等。国外的题库包括乌拉尔大学、瓦拉杜利德大学题库等。Online Judge系统最初使用于ACM-ICPC国际大学生程序设计竞赛和OI信息学奥林匹克竞赛中的自动判题和排名。现广泛应用于世界各地高校..._python oj文件评测

好程序员大数据学习路线hive内部函数-程序员宅基地

文章浏览阅读74次。好程序员大数据学习路线hive内部函数,持续为大家更新了大数据学习路线,希望对正在学习大数据的小伙伴有所帮助。1、取随机数函数:...

mplayer音乐软件_MPlayer音乐播放器项目讲解-程序员宅基地

文章浏览阅读874次。MPlayer音乐播放器项目讲解一、简要介绍MPlyer音乐播放器MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布。此款软件可在各主流操作系统使用,例如Linux和其他类Unix系统、Windows及Mac OS X系统。二、在开发板实现MPlayer功能具体如何实现mute 0 静音,为什么用这个命令不用我们做,我们要做的是在开发板上获取出界面后,按下相应按钮实现相应的功能,即对..._音乐播放器项目父进程子进程简介

Eclipse使用初步_初步使用eclipse-程序员宅基地

文章浏览阅读1.2k次。一、Eclipse启动参数大全二、Eclipse启动参数研究三、Eclipse优化启动参数-vmargs -Xmx详解四、Eclipse使用秘笈一、Eclipse启动参数大全转自:http://beansoft.blogchina.com/blog/article_10442.637044.html只留下了中文版本,要看英文版本请去原贴.Eclipse 运行命令行参数大_初步使用eclipse

poj50题留念~积少成多,无欲则刚_循环积少成多的例子-程序员宅基地

文章浏览阅读338次。虽然说因为天赋和环境关系,自己放弃了学校的集训,不过当作学习学习算法,培养编程语感也是不错的,坚持!每日一题~一年后就可能有350题哦!_循环积少成多的例子