1

我在尝试使用 Apache POI 打开 XLS 文件时遇到问题。我正在将 HSSF 集成到 Rails 应用程序中。

我的代码是这样的:

require "rjb"

  Rjb::add_jar(File.expand_path('demo/poi-3.9/poi-3.9-20121203.jar'))
  Rjb::add_jar(File.expand_path('demo/poi-3.9/commons-codec-1.7.jar'))

  Black = Rjb::import 'org.apache.poi.hssf.util.HSSFColor$BLACK'
  HSSFCell = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFCell'
  HSSFCellStyle = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFCellStyle'
  HSSFFont = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFFont'
  HSSFWorkbook = Rjb::import 'org.apache.poi.hssf.usermodel.HSSFWorkbook'
  IOUtils = Rjb::import 'org.apache.poi.util.IOUtils'
  JavaFont = Rjb::import 'java.awt.Font'
  FileInputStream = Rjb::import 'java.io.FileInputStream'
  FileOutputStream = Rjb::import 'java.io.FileOutputStream'

def self.export_xls (params)
    file = "tmp/#{Time.now.to_formatted_s(:number)}_#{abc}.xls"
    @book = HSSFWorkbook.new
    @sheet1 = @book.createSheet l(:report_name)
    @drawing = @sheet1.createDrawingPatriarch()
    @number_of_column = 0
    @number_of_column_to_merge = 10
    black = Black.index

    @styleTableTitle = @book.createCellStyle()       
    @styleTableTitle.setBorderBottom(HSSFCellStyle.BORDER_THIN)
    @styleTableTitle.setBottomBorderColor(black)

    out = FileOutputStream.new("#{Rails.root}/" + file)
    @book.write(out)
    out.close()
    file
end

异常抛出:

RuntimeError (java.lang.ClassNotFoundException: org.apache.poi.hssf.util.HSSFColor$BLACK)

导入的罐子(Apache POI):

poi-3.9-20121203 poi-3.7-20101029 commons-codec-1.7

4

0 回答 0