有没有办法使用ruby电子表格gem来生成一个包含文本包装的单元格的电子表格? (如果没有,还有其他方法吗?)
谢谢, --Paul
P.S。为了回应两个不幸对我不起作用的好建议,我应该注意: 1)此时我无法将我的ruby应用程序转换为JRuby。 2)我在Linux上开发,而不是Windows。
答案 0 :(得分:10)
请尝试使用Ruby电子表格gem:
fmt = Spreadsheet::Format.new :text_wrap => true
sheet.row(y).set_format(x, fmt)
表格在这里:
答案 1 :(得分:2)
我同意Phrogz的意见,如果可能的话,你应该使用Win32OLE而不是电子表格gem。这是使用Win32OLE包装单元格文本的方法:
worksheet.Range("A1").WrapText = true
其中worksheet
引用了特定的工作表。
这是一个更完整的例子:
xl = WIN32OLE.new('Excel.Application') # => opens Excel
wb = xl.Workbooks.Add(); # => adds a workbook
worksheet = wb.Worksheets(3) # => 3rd sheet (Excel starts at 1)
worksheet.Range("A1").value = "Hello, how do you do?"
worksheet.Range("A1").WrapText = true # => wraps the text
我希望这会有所帮助。我使用过Win32OLE来处理Excel并喜欢它。
P.S。除非我在某处错过了它,否则看起来好像你可以使用电子表格gem来包装文本。
编辑:由于问题增加了Linux要求,我将其添加为Linux答案。
以下是一些我认为可以与POI Ruby Bindings一起使用的代码:
h = Poi4r::HSSFWorkbook.new
s = h.createSheet("Sheet1")
r = s.createRow(0)
c = r.createCell(0)
t = h.createCellStyle()
t.setWrapText(true)
我没有测试过这个。它已经改编自POI Ruby page和quickguide for POI spreadsheet。
答案 2 :(得分:1)
如果JRuby是一个选项,那么您可以使用优秀的POI库,它可以以其文件格式执行任何Excel。它确实可以设置单元格包装选项。
以下博客文章,我已经多年书签,展示了如何使Java API更像Ruby。它使用POI作为示例。 http://mysterycoder.blogspot.com/2007/04/api-unickifying-with-jruby.html
看起来jruby-poi项目已经采纳了这些想法并使它们成为一颗宝石。 https://github.com/kameeoze/jruby-poi
编辑:不需要JRuby。 MRI有绑定:http://poi.apache.org/poi-ruby.html
答案 3 :(得分:-1)
我建议使用Win32OLE来编写Excel脚本以修改现有文件,而不是使用电子表格gem(从头开始生成具有有限功能的电子表格)。这仅适用于Windows并且安装了可以由Ruby打开的Excel副本,因此通常不适合服务器环境。