Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在groovy中读取Excel文件的最简单方法?_Java_Groovy_Spock - Fatal编程技术网

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

Java 在groovy中读取Excel文件的最简单方法?,java,groovy,spock,Java,Groovy,Spock,Groovy中是否有可用于读取Excel文件的warappers/util。我正在寻找类似于GroovySQL的rows函数的东西,如下面的spock测试示例所示。我的意图是将此用于 导入groovy.sql.sql 导入spock.lang* 类数据库驱动的扩展规范{ @共享sql=sql.newInstance(“jdbc:h2:mem:,“org.h2.Driver”) //通常会使用外部数据库, //测试数据不需要插入到这里 def setupSpec(){ execute(“创建表ma

Groovy中是否有可用于读取Excel文件的warappers/util。我正在寻找类似于GroovySQL的rows函数的东西,如下面的spock测试示例所示。我的意图是将此用于

导入groovy.sql.sql
导入spock.lang*
类数据库驱动的扩展规范{
@共享sql=sql.newInstance(“jdbc:h2:mem:,“org.h2.Driver”)
//通常会使用外部数据库,
//测试数据不需要插入到这里
def setupSpec(){
execute(“创建表maxdata(id int主键,a int,b int,c int)”)
execute(“插入maxdata值(1,3,7,7),(2,5,4,5),(3,9,9)”)
}
def“最多两个数字”(){
期望:
数学最大值(a,b)=c
哪里:

[a,b,c]POI是您的Java库,因此您可以从Groovy中使用它。不确定是否在任何地方都有Groovy包装器

我的一位GUG同事创建了一个使用ApachePOI使用Excel的工具,其方式与您描述的方式非常相似。它尚未正式化为库(AFAIK)但是可以在他的博客上找到

它允许您编写如下代码:

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

在这里查看:

我也可以推荐使用。它可以在maven repository中获得(与
ExcelBuilder
相反),并且还具有丰富的Groovy语法:

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文件!

为了让人们更容易,我将Goran的代码转换成github repo。我还对其进行了修改,使用Grab作为依赖项,使用xlsx文件,只为每个单元格返回字符串。使用单元格类型给我的工作带来了麻烦。
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'
Collection rows = query.query {
    sheet(name({ name.startsWith('Con') })) {
        row(1)
    }
}.rows