使用gem axlsx,我如何在一个程序中创建多个工作簿?

理查德·G

使用基本的axlsx代码,我需要创建一个工作簿,将其关闭并在同一程序中创建一个新的工作簿。工作簿将具有生成的名称,并创建一个变量号。此时,我可以创建所需的工作表,但是根据我的要求,我有重复的工作表名称。无论如何,我需要创建多个文件。

我正在从基本的github示例中进行工作:

Axlsx::Package.new do |p|
  p.workbook.add_worksheet(:name => "Pie Chart") do |sheet|
    sheet.add_row ["Simple Pie Chart"]
    %w(first second third).each { |label| sheet.add_row [label, rand(24)+1] }
    sheet.add_chart(Axlsx::Pie3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "example 3: Pie Chart") do |chart|
      chart.add_series :data => sheet["B2:B4"], :labels => sheet["A2:A4"],  :colors => ['FF0000', '00FF00', '0000FF']
    end
  end
  p.serialize('simple.xlsx')
end
理查德·G

以简化的运行代码为例。它使用to_stream方法,但是似乎关键是每个工作簿使用不同的包。将to_stream方法与块一起使用将在文件完成后关闭文件。

class Unload < ApplicationController
  require 'axlsx'

  package = Axlsx::Package.new
  workbook = package.workbook

  puts "Companies"
  workbook.add_worksheet(name: "Companies") do |sheet|
    sheet.add_row ["Name", "Domain", "Prefix"]
    Company.all.each do |a|
      sheet.add_row [a.name, a.domain, a.prefix]
    end
  end

  stream = package.to_stream()
  File.open('db/unloaded/Joint.xlsx', 'wb') { |f| f.write(stream.read) }
  workbook = nil
  stream   = nil
  package  = nil

  Company.all.each do |c|
    puts "Company is: " << c.name
    ActsAsTenant.with_tenant(c) do
      c.package  = Axlsx::Package.new
      c.workbook = c.package.workbook
      company_name = c.blank? ? "Invalid Company" : c.name

      puts "Associates for #{company_name}"
      c.workbook.add_worksheet(name: "Associates") do |sheet|
        sheet.add_row ["Logon", "Name", "Email", "Cell", "Company"]
        Associate.all.each do |a|
          sheet.add_row [a.logon, a.name, a.email, a.cell, company_name]
        end
      end

      puts "Serializing for #{company_name}"
      stream = c.package.to_stream()
      File.open("db/unloaded/#{company_name}.xlsx", 'wb') { |f| f.write(stream.read) }
      c.workbook = nil
      stream     = nil
      c.package  = nil

    end
  end

end

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用python循环在一个数据帧的一个excel工作簿中创建多个excel表

来自分类Dev

如何在另一个Eclipse工作区中创建的项目中使用另一个程序包中一个程序包的类

来自分类Dev

Alasql-如何在一个工作簿中创建多个工作表?

来自分类Dev

如何使用rails config gem?

来自分类Dev

如何使用与 gem 同名的模型?

来自分类Dev

如何使用openXML将两个工作表聚合到一个工作簿中?

来自分类Dev

选择多个工作簿,将每个工作簿中的“第一个”选项卡合并到同一工作簿中的“新建”选项卡,“使用文件名重命名”选项卡

来自分类Dev

使用多个工作表对来自另一个工作簿的值求和的宏

来自分类Dev

如何使用aspose.cell将一个工作表复制到工作簿中的另一个工作表

来自分类Dev

使用一个工作簿中的列中的值来搜索另一工作簿中的列

来自分类Dev

如何创建一个假的 Rails 的“请求”对象来使用 rspec 测试 gem

来自分类Dev

如何使用`business_time` gem获得一个月的最后一个工作日

来自分类Dev

如何使用VBA将多个工作簿的第一列合并到其他工作簿的工作表中

来自分类Dev

如何使用私人存储库中的gem?

来自分类Dev

如何使用Rails中的gem布局?

来自分类Dev

在另一个工作簿的公式中使用一个工作簿的引用

来自分类Dev

使用续集gem进行多个聚合查询

来自分类Dev

使用续集gem进行多个汇总查询

来自分类Dev

使用RubyInline gem创建C结构

来自分类Dev

使用 CanCanCan gem 和 ActiveAdmin 创建授权

来自分类Dev

使用捆绑程序构建撬插件(gem)

来自分类Dev

我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

来自分类Dev

管理gem install强制我使用Kaminari?

来自分类Dev

如何使用gem在Ubuntu上安装Rails

来自分类Dev

如何正确使用Mongoid-rspec gem?

来自分类Dev

如何使用PublicActivity gem加入多态模型

来自分类Dev

如何使用Money gem正确兑换

来自分类Dev

如何使用devise gem配置RubyMine?

来自分类Dev

如何使用RVM从Github源码安装gem

Related 相关文章

  1. 1

    使用python循环在一个数据帧的一个excel工作簿中创建多个excel表

  2. 2

    如何在另一个Eclipse工作区中创建的项目中使用另一个程序包中一个程序包的类

  3. 3

    Alasql-如何在一个工作簿中创建多个工作表?

  4. 4

    如何使用rails config gem?

  5. 5

    如何使用与 gem 同名的模型?

  6. 6

    如何使用openXML将两个工作表聚合到一个工作簿中?

  7. 7

    选择多个工作簿,将每个工作簿中的“第一个”选项卡合并到同一工作簿中的“新建”选项卡,“使用文件名重命名”选项卡

  8. 8

    使用多个工作表对来自另一个工作簿的值求和的宏

  9. 9

    如何使用aspose.cell将一个工作表复制到工作簿中的另一个工作表

  10. 10

    使用一个工作簿中的列中的值来搜索另一工作簿中的列

  11. 11

    如何创建一个假的 Rails 的“请求”对象来使用 rspec 测试 gem

  12. 12

    如何使用`business_time` gem获得一个月的最后一个工作日

  13. 13

    如何使用VBA将多个工作簿的第一列合并到其他工作簿的工作表中

  14. 14

    如何使用私人存储库中的gem?

  15. 15

    如何使用Rails中的gem布局?

  16. 16

    在另一个工作簿的公式中使用一个工作簿的引用

  17. 17

    使用续集gem进行多个聚合查询

  18. 18

    使用续集gem进行多个汇总查询

  19. 19

    使用RubyInline gem创建C结构

  20. 20

    使用 CanCanCan gem 和 ActiveAdmin 创建授权

  21. 21

    使用捆绑程序构建撬插件(gem)

  22. 22

    我可以在单元格公式内的另一个打开的工作簿中使用另一个打开的工作簿的 VBA 函数吗?

  23. 23

    管理gem install强制我使用Kaminari?

  24. 24

    如何使用gem在Ubuntu上安装Rails

  25. 25

    如何正确使用Mongoid-rspec gem?

  26. 26

    如何使用PublicActivity gem加入多态模型

  27. 27

    如何使用Money gem正确兑换

  28. 28

    如何使用devise gem配置RubyMine?

  29. 29

    如何使用RVM从Github源码安装gem

热门标签

归档