红宝石电子表格宝石包装文字可以吗?

时间:2011-01-04 23:36:07

标签: ruby excel spreadsheet

有没有办法使用ruby电子表格gem来生成一个包含文本包装的单元格的电子表格? (如果没有,还有其他方法吗?)

谢谢,   --Paul

P.S。为了回应两个不幸对我不起作用的好建议,我应该注意: 1)此时我无法将我的ruby应用程序转换为JRuby。 2)我在Linux上开发,而不是Windows。

4 个答案:

答案 0 :(得分:10)

请尝试使用Ruby电子表格gem:

 fmt = Spreadsheet::Format.new :text_wrap => true
 sheet.row(y).set_format(x, fmt)

表格在这里:

http://rubyforge.org/forum/forum.php?set=custom&forum_id=2920&style=nested&max_rows=50&submit=Change+View

答案 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 pagequickguide 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副本,因此通常不适合服务器环境。