`

rails导出excel表单

阅读更多
spreadsheet官网
本地gem下载
本地plugin下载

关于,excel的ruby处理,

如果,你想看更复杂的例子, 请点击这里
如果,你想看更简单的解析excel文件的例子,请点击这里
如果,你想了解windows下操作excel的特有方法,请点击这里
如果,你想考虑另外的插件roo来操作excel,请点击这里
如果,你还想考虑rails的一个插件railsxls,请点击这里


require ‘rubygems’
require ’spreadsheet/excel’
include Spreadsheet

# Builds an excel report.   
def report   
  # Grab time span for report   
  get_span   
  
  # Define stats levels to include.   
  status = %w(high medium low lost won)   
  
  # Create workbook.   
  file = "#{session[:user_id]}_#{Time.now.strftime("%m%d%G%s")}_forecast.xls"  
  workbook = Excel.new("#{RAILS_ROOT}/reports/#{file}")   
  
  heading = Format.new(   
     :color     => "green",   
     :bold      => true,   
     :underline => true  
  )   
  
  data = Format.new(   
     :color     => "black",   
     :bold      => false,   
     :underline => false  
  )   
  
  workbook.add_format(heading)   
  workbook.add_format(data)   
  
  # Cycle through each status level   
  status.each do |status|   
    start_column, start_row = 2, 3   
    worksheet = workbook.add_worksheet(status)   
    opportunities = get_opportunities_that_are(status)   
  
    #Cycle through the opportunities   
    row = start_row   
    totals, dates = [], []   
  
    for opp in opportunities   
      worksheet.write(row,start_column,opp.client,heading)   
  
      column = start_column + 1   
      opp.find_forecasts_within(@span[0],@span[-1]).each do |i|   
        worksheet.write(row,column,i.volume,data)   
        totals[column] = i.volume + totals[column].to_i   
        dates[column] = i.date.strftime("%b '%y")   
        column += 1   
      end       
  
      row += 1   
    end  
  
    # Generate the totals row and monthly headings   
    column = start_column+1   
    @span.length.times do  
      worksheet.write(row,column,totals[column],heading)   
      worksheet.write(start_row-1,column,dates[column],heading)   
      column += 1   
    end  
  
  end  
  
  workbook.close   
  redirect_to :action => 'show'   
end  


另一个例子:

def export_excel
	if @request.env['HTTP_USER_AGENT'] =~ /msie/i
		@headers['Pragma'] = ''
		@headers['Cache-Control'] = ''
	else
		@headers['Pragma'] = 'no-cache'
		@headers['Cache-Control'] = 'no-cache, must-revalidate'
	end

	@employee_id = @params["employee_id"]
	@geotag_id = @params["geotag_id"]
	firm_id = @session[:user].id
	corrected_server_date = (Time.now).strftime('%Y-%m-%d 00:00:00')
	@time_entries = TimeEntry.find(:all, :conditions =>["time_entries.firm_id = 
? AND employee_id like ? and geotag_id like ?", firm_id, 
"%#{@employee_id}%", "%#{@geotag_id}%"], :order => "time_entries.start_time 
DESC", :include=>[:employee,:geotag])


	wb = Excel.new("test/timesheets.xls")
	version = Excel::VERSION

	# Preferred way to add a format
	f1 = wb.add_format(:color=>"black",:bold=>1,:italic=>true)

	f4 = Format.new(:num_format => "d mmm yyyy")
	f5 = Format.new(:num_format => 0x0f)
	wb.add_format(f4)
	wb.add_format(f5)

	ws1 = wb.add_worksheet("timesheets")
	#headers
	@header = ['Employee','Address','Zip','City','Duration','Start','Stop']
	#headers afprinten op de 1ste rij
	0.upto(@header.length - 1) do |i|
		ws1.write(0,i, at header[i], f1)
	end

	rij = 1 #de gegevens worden getoond vanaf de 2de rij
	#time entries afprinten
	 for time_entry in @time_entries
		ws1.write(rij,0,time_entry.employee.last_name + " " + 
time_entry.employee.first_name)
		ws1.write(rij,1,time_entry.geotag.address1)
		ws1.write(rij,2,time_entry.geotag.zip)
		ws1.write(rij,3,time_entry.geotag.city)

		if time_entry.stop_time.nil?
			ws1.write(rij,4,"")
			ws1.write(rij,5,time_entry.start_time.strftime("%d/%m/%Y %H:%M"))
			ws1.write(rij,6,"")
		else
			ws1.write(rij,4,time_entry.duration)
			ws1.write(rij,5,time_entry.start_time.strftime("%d/%m/%Y %H:%M"))
			ws1.write(rij,6,time_entry.stop_time.strftime("%d/%m/%Y %H:%M"))
		end

		rij = rij + 1
	 end
	ws1.format_column(0..1,20,f1)
	ws1.format_column(2,5,f1)
	ws1.format_column(3..4,10,f1)
	ws1.format_column(5..6,15,f1)
	wb.close

	redirect_to :action=>"list_times"
end
分享到:
评论
1 楼 乌龙饭 2012-12-03  
请教个问题,这个format能否设置单元格的背景色?

相关推荐

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

    poi导出excel需要的jar

    "poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...

    Ruby-SimpleForm轻松处理Rails表单

    在Ruby on Rails框架中,构建表单是一项常见的任务,而Simple Form gem就是为了简化这一过程而设计的。Simple Form是一款强大的表单构建器,它提供了一种简洁、直观的方式来创建复杂的表单,使得开发者能更专注于...

    Ruby on Rails:Rails中的表单处理.docx

    Ruby on Rails:Rails中的表单处理.docx

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

    judge:Rails的客户端表单验证

    通过将许多ActiveModel::Validation功能移植到JavaScript,Judge可以轻松地对Rails进行客户端表单验证。 最常见的验证通过存储在HTML5数据属性中的JSON字符串进行,并且仅在客户端执行。 无论您在何处,Judge都为...

    rails-exporter-源码.rar

    Rails Exporter 是一个用于 Rails 应用程序的开源工具,主要用于数据导出功能。源码分析将帮助我们深入理解其内部工作原理,以便更好地利用它来优化我们的应用。 一、Rails 框架基础 Rails 是 Ruby 语言的一个 web ...

    to_csv-rails:导出到 csv 文件

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

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    rails2-sample

    同时,表单是Web应用中不可或缺的部分,Rails提供了丰富的API来处理表单的创建和验证。此外,布局(Layouts)允许开发者在多个页面中重用公共的HTML代码,如头部和尾部,从而提高开发效率。 #### 7. Ajax and Web ...

    关于rails 3.1 cucumber-rails 1.2.0

    Rails 3.1 和 Cucumber-Rails 1.2.0 是两个在Web开发领域非常重要的工具,尤其对于Ruby on Rails框架的测试和自动化流程。本文将深入探讨这两个组件,以及它们如何协同工作来增强软件开发的效率和质量。 首先,...

    rails 2.3.2离线安装rails 2.3.2离线安装

    rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...

    Ruby on Rails Guides v2 - Ruby on Rails 4.2.5

    - **学习路径**:继续深入学习Rails的高级特性,如Active Record模式、表单构建器等。 - **社区资源**:加入Rails官方论坛、Stack Overflow等社区获取帮助和支持。 #### 十一、文档编写技巧 - **重要性**:良好的...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    rails指南 中文版

    Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...

    使用Aptana+Rails开发Rails Web应用(中文)

    在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...

    Ruby on Rails安装指南(Ruby 1.8.6+Rails 2.0.2)

    Ruby on Rails 安装指南 Ruby on Rails 安装指南是指安装 Ruby 1.8.6 和 Rails 2.0.2 的详细步骤。首先,需要下载 Ruby One-Click Installer 版本,并安装 Ruby。然后,下载 Rails 2.0.2 版本,并安装。接下来,...

    simple_form:简化Rails的表单! 它与简单的DSL绑定,对标记无意见

    Rails表单变得容易。 简单表单旨在在帮助您使用功能强大的组件创建表单的同时尽可能地灵活。 Simple Form的基本目标是不触及定义布局的方式,而是让您为眼睛找到更好的设计。 大多数DSL都是从Formtastic继承的,...

    Rails recipes

    Rails Recipes是一本针对Ruby on Rails框架的实用书籍,它收集了一系列高效解决问题的技巧和方法,也被称为“Rails开发者的宝典”。作者们通过分享自己的经验和见解,为Rails程序员提供了一本既有实际操作指导又有...

Global site tag (gtag.js) - Google Analytics