利用 DataMapper 写入数据到 Excel 文件中
程序员文章站
2022-03-17 17:27:52
...
begin_time = Time.now puts "Begin: #{begin_time}" require 'rubygems' require 'datamapper' require "spreadsheet/excel" require "iconv" include Spreadsheet ic = Iconv.new("GB2312//IGNORE", "UTF-8//IGNORE") workbook = Excel.new("D:/xampp/htdocs/rubyshell/sources/demodatas/abc.xls") DataMapper.setup(:default, 'mysql://localhost/demo_nobel_test') #固定资产 class FixedAsset include DataMapper::Resource storage_names[:default] = 'www_fixed_assets' property :id, Serial property :type, Integer property :kindergarten_id, Integer property :dept_id, Integer property :sn, String property :name, String property :specification, String property :category_id, Integer end #日常易耗品 class ExpendableItem include DataMapper::Resource storage_names[:default] = 'www_expendable_items' property :id, Serial property :category_id, Integer property :sn, String property :name, String property :pinyin, String property :specification, String property :unit_id, Integer property :quantity, Integer property :price, Float property :amount, Float property :early_warning_value, Integer property :created, Integer property :updated, Integer end #日常易耗品分类 class GoodCategory include DataMapper::Resource storage_names[:default] = 'www_goods_categories' property :id, Serial property :name, String property :parent_id, Integer end # Log for processed class Log def initialize end def write now = Time.now puts now end end # 生成日常易耗品报表 begin times = 0 good_categories = GoodCategory.all(:parent_id.gt => 0) good_categories.each do |good_category| worksheet = workbook.add_worksheet(ic.iconv(good_category.name)) i = 0 worksheet.write(0, 0, ic.iconv('序号')) worksheet.write(0, 2, ic.iconv('编号')) worksheet.write(0, 3, ic.iconv('品名')) worksheet.write(0, 4, ic.iconv('规格')) i += 1 expendable_items = ExpendableItem.all(:conditions => {:category_id => good_category.id}) expendable_items.each do |item| worksheet.write(i, 0, i) worksheet.write(i, 2, item.sn) worksheet.write(i, 3, ic.iconv(item.name)) worksheet.write(i, 4, ic.iconv(item.specification)) i += 1 times += 1 puts "Processing #{times} record, Please watting......" end end workbook.close end_time = Time.now puts "End: #{end_time}" puts ic.iconv("向 Excel 文件中写入 #{times} 条数据,耗时: #{end_time.to_i - begin_time.to_i} 秒。") # 生成日常易耗品报表 end