我想在
Linux下用
Ruby插入现有Excel(.xls)文件的数据.此文件已有数据,它具有一些格式属性,并且包含宏.
我尝试使用电子表格gem将数据插入到文件中,但是当我保存修改时,文件的格式和所有宏都将丢失.
以下是我遇到此问题的简单修改示例:
book = Spreadsheet.open('myOriginalFile.xls') sheet = book.worksheet 0 sheet.write('C12','hello') book.write('myModifiedFile.xls')
我尝试过很多东西,在论坛和网络上做过研究,但我找不到解决方案……
有没有人有想法?
解决方法
我找到了解决方案:
我使用POI的Apache库,它是用java编写的rjb gem(Ruby Java Bridge,它允许使用带有ruby的java库). 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
原文地址:https://www.jb51.cc/ruby/265135.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。