我使用Grails excel导入插件导入excel文件。
static Map propertyConfigurationMap = [
name:([expectedType: ExcelImportService.PROPERTY_TYPE_STRING, defaultValue:null]),
age:([expectedType: ExcelImportService.PROPERTY_TYPE_INT, defaultValue:0])]
static Map CONFIG_BOOK_COLUMN_MAP = [
sheet:'Sheet1',
startRow: 1,
columnMap: [
//Col, Map-Key
'A':'name',
'B':'age',
]
]
我可以使用代码段检索数组列表:
def usersList = excelImportService.columns(workbook,CONFIG_USER_COLUMN_MAP)
导致
[[姓名:Mark,年龄:25],[姓名:Jhon,年龄:46],[姓名:Anil,年龄:62],[姓名:Steve,年龄:32]]
我也能通过使用usersList.get(0)来阅读每个记录[name:Mark,age:25]
如何阅读每列值? 我知道我可以读到这样的东西
String[] row = usersList.get(0)
for (String s : row)
println s
我想知道插件是否支持任何东西,以便我可以直接读取列值而不是操纵它来获得所需的结果。
答案 0 :(得分:1)
您的usersList
基本上是List<Map<String, Object>>
(地图列表)。您可以使用配置中给出的名称来读取列。在您的示例中,您将列A name 和列B age 命名为。因此,使用迭代示例作为基础,您可以像这样阅读每一列:
Map row = usersList.get(0)
for(Map.Entry entry : row) {
println entry.value
}
Groovy使Object.each(Closure)
:
row.each { key, value ->
println value
}
如果您想阅读特定的列值,可以采用以下几种方法:
println row.name // One
println row['name'] // Two
println row.getAt('name') // Three
提示:这些最终都会调用row.getAt('name')