最近经常要替客户做一些二次开发,其中要涉及到数据间的转换,这是客户就会发来一个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函数把它变成字符串,没有办法处理超链接等特殊的格式,不过对我而言,够用就好

。
分享到:
相关推荐
当我们谈论"Cocoa(xls格式)excel解析源码"时,我们关注的是如何在Cocoa环境中读取和处理Excel文件,特别是.xls格式,这是一种早期版本的Excel文件格式,基于二进制。 Excel解析通常涉及将.xls文件的内容转换为编程...
1.2. 使用场景 2. Spring 2.0 的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 更简单的XML配置 2.2.2. 新的bean作用域 2.2.3. 可扩展的XML编写 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@...
14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...
14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...
14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...
14.6. 文档视图(PDF/Excel) 14.6.1. 简介 14.6.2. 配置和安装 14.7. JasperReports 14.7.1. 依赖的资源 14.7.2. 配置 14.7.3. 构造ModelAndView 14.7.4. 使用子报表 14.7.5. 配置Exporter的参数 15. 集成...