`
renzhen
  • 浏览: 251156 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用JRuby读取Excel文件

阅读更多
  最近经常要替客户做一些二次开发,其中要涉及到数据间的转换,这是客户就会发来一个Excel文件,其中记录着数据间的关系,比如:001代表经理等,而我将这些数据转成其它的形式,如:php的array形式或放到一个数据库表中等等。
  Ruby则是我处理这类事的利器,它内置了CSV的操作,可以轻松处理表格数据,以前,我经常将客户发给我的Excel另存为CSV,然后处理,我非常喜欢CSV类库读取文件的语法,感觉它非常的优美,当然,Ruby类库的语法都很舒服,写Ruby这是享受。
 
    CSV.open("code.csv","r") do |row|
      #process each csv row
    end

  

  直到一个客户,它的数据转换信息很多,在一个Excel中,不同的转换内容放在不同的Sheet中,我要将sheet一个个另存为csv,然后处理?No,于是我想还是找一个处理Excel的类库,由于我比较熟悉Java,找到了JXL类库。并通过JRuby调用JXL完成转换。代码如下:
 
 require 'java'
require 'jar/jxl.jar'

def jxl
  Java::Jxl
end

import jxl.Workbook
import jxl.Sheet
import jxl.Cell

cities=[]
workbook=Workbook.getWorkbook(java.io.File.new("Customer_Desc.xls"))
sheet=workbook.getSheet(0)
rownum=sheet.getRows
0.upto(rownum-1) do |i|
  #process each row
  cells=sheet.getRow(i)
  cells.each{|cell| 
    #process each cell
  }
end
workbook.close


  

  真是不舒服,比起CSV类库的写法,这太丑了,于是我对JXL进行了封装,使其尽量和CSV类库操作相一致,现在封装效果如下:
   Excel.open("Customer_Desc.xls") do |wb|
     wb.each{|sheet| 
        sheet.each{|row|
          #process with each row
        }
     }
  
     wb.current_sheet.each{|row|
        #process with each row
     }

      wb.sheet(sheetnum or sheetname).each{|row|
        #process with each row
      }
   end
 

  由于我只用到了Excel的读取,就没有将写入Excel做封装,对Cell的处理,也仅仅是通过getContent函数把它变成字符串,没有办法处理超链接等特殊的格式,不过对我而言,够用就好
  • jxl.rar (648.8 KB)
  • 下载次数: 9
分享到:
评论

相关推荐

    jruby_windows_1_6_4安装文件

    标题中的“jruby_windows_1_6_4安装文件”指的是JRuby的一个特定版本——1.6.4,特别针对Windows操作系统设计的安装包。 **JRuby的优势** 1. **跨平台兼容性**:JRuby利用Java虚拟机(JVM)的优势,可以在任何支持...

    如何安装与配置JRuby

    - **'cmd' 错误提示**: 如果在运行 JRuby 脚本时出现 `'cmd' 不是内部或外部命令,也不是可运行的程序或批处理文件` 的错误,可能是因为 JRuby 的批处理文件 `jruby.bat` 与系统之间存在冲突。一种临时解决方案是...

    org.jruby.rar

    标题 "org.jruby.rar" 暗示我们正在讨论一个与 JRuby 相关的压缩文件,其中可能包含了 JRuby 的源代码、库文件或者其他相关资源。JRuby 是一种 Java 实现的 Ruby 解释器,它允许 Ruby 代码在 JVM(Java 虚拟机)上...

    jruby1.7.8版本呢

    3. 使用 JRuby 的 `irb` (交互式 Ruby shell) 或者运行 Ruby 脚本,如 `jruby your_script.rb`。 **4. JRuby 与 Java 交互** JRuby 提供了多种方式来实现 Java 和 Ruby 代码的交互: - **Java 方法调用**:可以...

    jruby-bin-1.3.1.zip

    - **安装**:解压zip文件后,将`jruby-1.3.1/bin`目录添加到PATH环境变量中,即可在命令行中使用`jruby`命令。 - **运行Ruby代码**:通过`jruby your_script.rb`命令运行Ruby脚本。 - **与Java集成**:使用`jruby...

    jruby-src-1.0

    这个压缩包“jruby-src-1.0.zip”包含了JRuby 1.0版本的所有源代码文件,对于开发者来说,这是一份宝贵的学习和定制JRuby的资源。 在了解JRuby之前,我们先来看一下Ruby语言。Ruby是由松本行弘(Yukihiro Matsumoto...

    使用JRuby开发Web Service全攻略

    本文介绍了如何用JRuby开发Web Service。用JRuby开发Web Service,需要安装ActionWebService。安装完毕之后便可以开始调用及部署了。

    如何监控JRuby脚本的执行

    此外,还需要在Class Path中添加JRuby相关的jar文件,如bsf.jar和jruby.jar,以便jprofiler能够识别和监控JRuby的运行。 在jprofiler的配置中,"Main class or executable JAR"字段填写`org.jruby.Main`,...

    jruby-1.5.5+OperaWatir+RSpec

    文件列表中只提到 "jruby-1.5.5",可能是因为其余部分如 OperaWatir 和 RSpec 的库已经被包含在 JRuby 的环境中,或者它们是以其他文件形式存在,如 Gem 文件或其他配置文件。 对于开发者来说,了解如何将这些工具...

    jruby-1.7.9.zip

    标题 "jruby-1.7.9.zip" 暗示了我们正在处理一个与 JRuby 相关的文件,JRuby 是一个流行的 Java 实现的 Ruby 语言版本。它允许开发者在 Java 平台上运行 Ruby 代码,利用 JVM (Java Virtual Machine) 的性能和生态...

    jruby-bin-0.9.0.tar.gz

    **标题解析:**"jruby-...总之,"jruby-bin-0.9.0.tar.gz"是一个包含早期版本JRUBY的压缩文件,为开发者提供了在Java平台上使用和开发Ruby代码的能力,结合了两种语言的优点,为开发工作带来了更大的灵活性和便利性。

    jruby-complete-1.7.19.jar

    jruby-complete-1.7.19.jar,java版本的ruby解析器

    ython读取由ruby/jruby生成的yml数据

    用python读取由ruby/jruby生成的yml数据

    走近JRuby

    而“工具”标签则可能意味着博主会介绍一些使用JRuby的实用工具或框架,例如与Java库的互操作性、持续集成工具(如Jenkins)、测试框架(如JUnit或RSpec),以及如何在Java项目中集成JRuby脚本以提高开发效率。...

    JRuby+Netbeans开发攻略之用JRuby调用JFreeChart

    在本文中,我们将探讨如何使用JRuby和Netbeans进行开发,并着重讲解如何在JRuby环境中调用JFreeChart库来创建图表。JRuby是Java平台上的Ruby解释器,它允许Ruby开发者利用Java丰富的库资源,比如JFreeChart,这是一...

    Ruby-JRuby一个Ruby语言的Java实现

    为了开始使用JRuby,你需要下载并安装JRuby,配置环境变量,然后可以像使用普通Ruby那样运行Ruby代码。开发过程中,你可以使用像`jirb`(JRuby交互式 shell)这样的工具,或者通过`bundle`管理Gem(Ruby的包管理系统...

    jruby-core-1.7.12.zip

    3. JRuby 支持使用 JRuby-Rack 运行 Rails 应用,可以在 Java 应用服务器上部署 Ruby on Rails 项目。 4. JRuby 还可以作为 Java 代码调用 Ruby 代码的桥梁,通过 JRuby API 实现 Java 和 Ruby 之间的互操作。 关于...

    jruby_windows1.7and bin1.7

    jruby安装包 和 jruby的lib库 JRuby是面向Ruby、基于Java虚拟机(JVM)的一种解释程序,它结合了Ruby语言的简易性和功能强大的JVM的执行机制,包括与Java库 全面集成。Rails彻底加快及简化了Web应用的开发,不过它让...

Global site tag (gtag.js) - Google Analytics