You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Ruby转换波浪线分隔文件为xlsx时遇版本冲突错误

解决axlsx与rubyzip版本冲突问题

问题原因

axlsx 2.0.1对rubyzip的版本依赖是~> 1.0.0,但你的环境中安装了更高版本的rubyzip 2.3.2,两者版本不兼容导致激活失败,单纯卸载重装不会自动处理版本依赖匹配问题。

解决方案

方案1:锁定rubyzip到1.x兼容版本

如果需要保留axlsx 2.0.1,手动指定兼容的rubyzip版本:

  • 若使用Bundler,在Gemfile中添加:

    gem 'rubyzip', '~> 1.3.0'
    gem 'axlsx', '2.0.1'
    

    执行bundle install完成依赖安装。

  • 若不使用Bundler,直接通过gem命令安装指定版本:

    gem uninstall rubyzip -v 2.3.2
    gem install rubyzip -v 1.3.0
    gem install axlsx -v 2.0.1
    

方案2:升级axlsx到支持rubyzip 2.x的版本

axlsx从3.0.0版本开始兼容rubyzip 2.x系列,直接升级axlsx即可解决冲突:

gem uninstall axlsx -v 2.0.1
gem install axlsx # 安装最新稳定版,或指定3.x版本如3.1.0

代码优化提示

你提供的代码中,嵌套的each_with_index会把每个单元格单独作为一行插入Excel,不符合预期。可以简化为直接传入整行数据:

# Load the tilde-delimited file
csv = Roo::Spreadsheet.open(fid, extension: :csv, col_sep: '~')

# Create a new Excel workbook
Axlsx::Package.new do |p|
  p.workbook.add_worksheet(name: 'Sheet1') do |sheet|
    csv.each do |row|
      sheet.add_row(row)
    end
  end
  p.serialize(fidx)
end

内容的提问来源于stack exchange,提问作者Jeff Seeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 00:12:12