Ruby脚本开发求助:读取Excel并生成2万条指定格式随机记录写入
Ruby脚本实现Excel批量生成随机记录
前置依赖
首先安装所需Ruby gem:
gem install rubyXL faker
完整脚本代码
require 'rubyXL' require 'faker' require 'date' # 加载目标Excel文件,替换为你的文件路径 workbook = RubyXL::Parser.parse('your_excel_file.xlsx') worksheet = workbook[0] # 默认操作第一个工作表 # 定位各列的位置(匹配表头) header_cells = worksheet[0].cells.compact sn_col = header_cells.index { |cell| cell.value == 'SN' } serial_col = header_cells.index { |cell| cell.value == 'Serial' } calcode_col = header_cells.index { |cell| cell.value == 'CalCode' } useby_col = header_cells.index { |cell| cell.value == 'UseBy' } # 生成2万条随机记录 20000.times do |idx| # SN:基于现有行数自增,避免重复 sn = (worksheet.row_count - 1) + idx + 1 # Serial:6位字母数字混合字符串(大小写) serial = Faker::Alphanumeric.alphanumeric(number: 6, min_alpha: 1, min_numeric: 1).upcase # CalCode:5位段+连字符+5位段的格式 cal_segment1 = Faker::Alphanumeric.alphanumeric(number: 5, min_alpha: 1, min_numeric: 1).upcase cal_segment2 = Faker::Alphanumeric.alphanumeric(number: 5, min_alpha: 1, min_numeric: 1).upcase calcode = "#{cal_segment1}-#{cal_segment2}" # UseBy:未来随机日期,格式为DD MMM YYYY(如09 Sep 2028) target_date = Faker::Date.between(from: Date.today, to: 10.years.from_now) use_by_str = target_date.strftime('%d %b %Y') # 写入新行数据 new_row = worksheet.add_row new_row[sn_col] = RubyXL::Cell.new(sn) new_row[serial_col] = RubyXL::Cell.new(serial) new_row[calcode_col] = RubyXL::Cell.new(calcode) new_row[useby_col] = RubyXL::Cell.new(use_by_str) end # 保存修改后的文件 workbook.write('updated_excel_file.xlsx') puts "20000条记录已成功追加到Excel文件!"
关键规则实现说明
- Serial:通过
Faker的alphanumeric方法生成6位混合字符,强制包含至少1个字母和1个数字,转大写后匹配示例格式 - CalCode:拆分生成两个独立的5位混合字段,用连字符拼接,保证和要求的
CC3JU-J3GWR格式一致 - UseBy:生成今日起10年内的随机日期,通过
strftime格式化指定为DD MMM YYYY样式(月份为3字母缩写) - SN:基于工作表现有行数自增,确保新记录的序号不重复
使用注意事项
- 替换脚本中的
your_excel_file.xlsx为实际的Excel文件路径 - 若需要调整日期范围,修改
10.years.from_now为其他时间跨度(如5.years.from_now) - 脚本会在现有数据的下方追加新记录,不会覆盖原有内容
内容的提问来源于stack exchange,提问作者Kumar Nikhil
相关产品推荐
相关产品推荐

