我正在使用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(工作簿,CONFIG_USER_COLUMN_MAP)
导致
[[姓名:马克,年龄:25],[姓名:Jhon,年龄:46],[姓名:阿尼尔,年龄:62],[姓名:史蒂夫,年龄:32]]
而且我还可以通过使用usersList.get(0)读取每个记录,例如[姓名:马克,年龄:25]。
如何读取每列的值?
我知道我可以读这样的东西
String[] row = usersList.get(0)
for (String s : row)
println s
我想知道插件是否支持任何东西,以便我可以直接读取列值而不是对其进行操作以获得所需的结果。
最佳答案
您的usersList
基本上是List<Map<String, Object>>
( map 列表)。您可以使用在配置中为其指定的名称来读取一列。在您的示例中,您为A列命名,B列为年龄。因此,以您的迭代示例为基础,您可以像这样阅读每一列:
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')
关于grails - 如何使用Grails Excel导入插件读取列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35274094/