在groovy中读取Excel文件的最简单方法?

时间:2011-05-27 19:57:57

标签: java groovy spock

是否有任何warappers / utils可用于在Groovy中读取Excel文件。我正在寻找类似于Groovy SQL的函数的东西,如下面的spock测试示例所示。我的目的是将其用于data driven testing using excel in Spock test framework

import groovy.sql.Sql

import spock.lang.*

class DatabaseDriven extends Specification {
  @Shared sql = Sql.newInstance("jdbc:h2:mem:", "org.h2.Driver")

  // normally an external database would be used,
  // and the test data wouldn't have to be inserted here
  def setupSpec() {
    sql.execute("create table maxdata (id int primary key, a int, b int, c int)")
    sql.execute("insert into maxdata values (1, 3, 7, 7), (2, 5, 4, 5), (3, 9, 9, 9)")
  }

  def "maximum of two numbers"() {
    expect:
    Math.max(a, b) == c

    where:
    [a, b, c] << sql.rows("select a, b, c from maxdata")
  }
} 

3 个答案:

答案 0 :(得分:14)

我的一位GUG成员创建了一个使用Apache POI处理Excel的工具,其方式与您描述的方式非常相似。它尚未正式化为图书馆(AFAIK),但可以在他的博客上找到。

它允许您编写如下代码:

new ExcelBuilder("customers.xls").eachLine([labels:true]) {
  new Person(name:"$firstname $lastname",
    address:address, telephone:phone).save()
}

请在此处查看:http://www.technipelago.se/content/technipelago/blog/44

答案 1 :(得分:4)

POI是你的http://poi.apache.org/之后的Java Lib,因此你可以在Groovy中使用它。不知道在任何地方是否有Groovy包装器

答案 2 :(得分:0)

我还建议您使用Groovy Spreadsheet Builder。它在maven存储库中可用(与0444相反),还具有富有表现力的Groovy语法:

ExcelBuilder

或者:

SpreadsheetQuery query = PoiSpreadsheetCriteria.FACTORY.forFile(file)                      // <1>

Collection  cells = query.query {
    sheet {                                                                            
        row {                                                                           
            cell {
                value 'B'
            }
        }
    }
}

assert cells.size() == 1
assert cells.first().value == 'B'

文档包含许多示例。 它甚至可能以相同的方式写入Excel文件!