Jer*_*rem 6 ruby linux ruby-on-rails spreadsheet export-to-excel
我想在Linux下用Ruby插入现有Excel(.xls)文件的数据.此文件已有数据,它具有一些格式属性,并且包含宏.
我尝试使用电子表格gem将数据插入到文件中,但是当我保存修改时,文件的格式和所有宏都将丢失.
以下是我遇到此问题的简单修改示例:
book = Spreadsheet.open('myOriginalFile.xls')
sheet = book.worksheet 0
sheet.write('C12','hello')
book.write('myModifiedFile.xls')
Run Code Online (Sandbox Code Playgroud)
我尝试了很多东西,在论坛和网络上进行了研究,但我找不到解决方案......有没有人有想法?
我找到了一个解决方案:
我使用Apache 的POI库,它是用 java 和rjb gem(Ruby Java Bridge,允许将 java 库与 ruby 一起使用)编写的。POI 允许保留现有 xls 文件的宏和公式并对其进行修改。
对于那些需要的人,以下是如何设置 rjb 以使用 POI :
# JVM loading
apache_poi_path = File.dirname(__FILE__)+'/poi-3.8/poi-3.8-20120326.jar'
Rjb::load("#{apache_poi_path}", ['-Xmx512M'])
# Java classes import
@file_class = Rjb::import('java.io.FileOutputStream')
@workbook_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFWorkbook')
@poifs_class = Rjb::import('org.apache.poi.poifs.filesystem.POIFSFileSystem')
Rjb::import('org.apache.poi.hssf.usermodel.HSSFCreationHelper')
Rjb::import('org.apache.poi.hssf.usermodel.HSSFFormulaEvaluator')
@cell_reference_class = Rjb::import('org.apache.poi.hssf.util.CellReference')
@cell_class = Rjb::import('org.apache.poi.hssf.usermodel.HSSFCell')
# You can import all java classes that you need
# Java classes utilisation :
@file_input_class = Rjb::import('java.io.FileInputStream')
@file_input = @file_input_class.new(model_file_path)
@fs = @poifs_class.new(@file_input)
@book = @workbook_class.new(@fs)
@worksheet = @book.getSheet('worksheet')
# ...
# You can use your objects like in Java but with a ruby syntax
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2832 次 |
| 最近记录: |