grails - 如何使用Grails Excel导入插件读取列值?

标签 grails apache-poi xlsx

我正在使用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/

相关文章:

java - 获得两列的不同组合

php - 在 php 中使用 simplexlsx 读取 excel xlsx 文件

java - 使用 Apache POI 在 java 中读取 excel (xlsx) 文件(得到奇怪的数字)

hibernate - 如何批量删除 Grails/GORM 中的记录?

grails - 将 Grails 生产模式与 Intellij IDEA 结合使用

image - Grails应用程序镜像路径?

java - 使用 Apache-POI 编写工作簿后出现问题

java - 如何使用 Apache POI 将 HSSFWorkbook 转换为 XSSFWorkbook?

java - Apache POI setCellType 未正确设置数值的单元格类型

python - 打开多个 Excel 文件,打开每个文件的每个工作表,然后保存图像