0 0

用rails 导出数据到excel,打开生成的文件时,报错说:文件格式无效5

我手边有个现成的记录用的excel文档,本意是想从数据库里面导出数据,然后添加到文档的后面。
所以我写了个方法,先去打开这个文件,追加数据,之后再写出去,但是得到的文件,打开的时候都报错说 文件格式无效, 原因不明,谁知道这可能是什么原因引起的么?

code:
def export(user_id,product_title)
    Spreadsheet.client_encoding='GBK'
    filepath =Rails.root+"public/excel_results/import1.xls"
    book = Spreadsheet.open filepath
    sheet1 = book.worksheet 0
    rowno=sheet1.rows.size+1
    puts sheet1.row(0)       #这里能看的取出来的数据正常
      sheet1.row(rowno).push rowno
      sheet1.row(rowno).push user_id
      sheet1.row(rowno).push product_title      
    puts sheet1.row(rowno)     #数据也确实塞进去了
    book.write filepath      
end

很奇怪的是,如果说是 完全建个新个excel,就能正常显示。

def self.export(products)
    Spreadsheet.client_encoding='UTF-8'
    book = Spreadsheet::Workbook.new
    sheet1 = book.create_worksheet
    sheet1.name = 'Product List'
    # to set data
    sheet1.row(0).concat %w{id title description image_url price}
    rowno=1
    products.each do |product|
      sheet1.row(rowno).push product.id
      sheet1.row(rowno).push product.title
      sheet1.row(rowno).push product.description
      sheet1.row(rowno).push product.image_url
      sheet1.row(rowno).push product.price
      rowno+=1
    end
    filepath=Rails.root+"public/excel_results/product_list_#{Time.now.to_i}.xls"
    book.write filepath
  end

求原因,求解决思路
2012年1月31日 13:26

1个答案 按时间排序 按投票排序

0 0

Spreadsheet.client_encoding='GBK' 改成Spreadsheet.client_encoding='UTF-8'

2012年9月13日 18:51

相关推荐

    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 => ...

    rails-exporter-源码.rar

    数据导出是 web 应用中常见的需求,例如生成 CSV、Excel 或 PDF 文件供用户下载。Exporter 类库通常包含一系列方法,用于格式化数据、生成文件并提供下载链接。Rails Exporter 可能会利用 ActiveRecord 查询数据,并...

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    **Ruby-GoOnRails:利用Rails生成器构建Golang应用** Ruby on Rails(简称Rails)是一种流行的Web开发框架,以其“约定优于配置”的理念和高效的开发速度受到开发者喜爱。而Go(Golang)则是一种静态类型、编译型的...

    ruby导出csv文件

    要从Ruby程序中导出数据到CSV文件,我们可以利用`FasterCSV`库,它为处理CSV文件提供了高效且灵活的方法。尽管在Ruby 1.9及更高版本中,`FasterCSV`已经被`csv`标准库所取代,但在某些情况下,开发者可能仍选择使用`...

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

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

    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 :...

    poi导出excel需要的jar

    Apache POI 是一个开源项目,专门...总结起来,"poi导出excel需要的jar"是指在Java项目中使用Apache POI库导出Excel文件时,需要确保正确地包含了Apache POI的相关依赖,并且理解如何使用其API来创建、操作Excel文档。

    在rails中 使用RSpec生产CHM文档

    标题 "在Rails中使用RSpec生产CHM文档" 暗示了这个话题是关于如何在Ruby on Rails(简称Rails)框架中使用RSpec测试工具来创建帮助文档,特别是以CHM(Microsoft Compiled HTML Help)格式。CHM文件是一种常见的...

    rails_多文件上传

    5. 文件上传进度:插件使用 JavaScript 代码实现文件上传进度的显示,当文件上传时,会显示上传进度条,直到文件上传完成。 使用示例 以下是一个简单的使用示例: ```html 要提交的路径" method="post" enctype=...

    to_csv-rails:导出到 csv 文件

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

    终于知道怎么把rails Web程序打包成可执行文件了

    这里,我们主要探讨如何将Rails应用转化为独立的可执行文件,结合提供的标题和描述,我们可以推测这个过程涉及到的主要技术包括源码打包和使用某种工具进行封装。 首先,Rails应用通常是基于Ruby语言,依赖于Ruby...

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

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

    swagger-docs, 为 Rails api生成 swagger ui json文件,使用简单的DSL.zip

    swagger-docs, 为 Rails api生成 swagger ui json文件,使用简单的DSL Swagger::Docs使用api为 Rails 应用生成swagger的ui json文件。 你可以向控制器类添加 swagger DSL,然后运行一个rake任务来生成json文件。 ...

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

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

    rails 文件上传

    本篇文章将深入探讨Rails中的文件上传机制,并结合给定的“rails 文件上传”主题,提供关于如何在Rails应用中实现文件上传的详细知识。 1. **ActionDispatch::Http::UploadedFile**: 当用户通过表单上传文件时,...

    Rails的精简版本Rails::API.zip

    Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...

    使用sitemap_generator来为rails网站生成Sitemap

    这篇博文将讨论如何使用`sitemap_generator` gem在Rails应用中实现这一功能。 首先,让我们了解什么是Sitemap。Sitemap是一个XML文件,它列出了网站的所有页面,包括URL、更新频率和页面重要性等信息。这有助于搜索...

    Ruby on Rails入门例子

    2. 创建资源:使用`rails generate controller Posts`生成控制器,再用`rails generate scaffold Post title:string content:text`生成模型和相关的控制器、视图及路由。 3. 迁移数据库:编写迁移文件,更新数据库表...

Global site tag (gtag.js) - Google Analytics