1

我正在尝试使用 excel-import 插件(基于 Apache POI)从 Grails 中的 .xslx 电子表格中读取一些数据。

它适用于所有数据类型,除了具有超链接(可点击)的主标题。- 当我简单地将列映射到一个字符串(下面的代码)时,我只得到没有超链接的标题。我尝试将预期类型指定为“超链接”(来自 org.apache.poi.ss.usermodel),但它不起作用。

我正在使用 excel-import 示例项目提供的代码

static Map CONFIG_BOOK_COLUMN_MAP = [
        sheet: 'Sheet1',
        startRow: 1,
        columnMap: [
                'A': 'title',
                'C': 'createdBy',
                'D': 'createdDate', 
        ]
]

当我将 Excel 电子表格导出为 .csv 格式时,超链接会丢失,但是当我将其导出为 XML 时,超链接会被保留(但数据似乎嵌套在单元格中?),就像在这个示例中一样:

<Row ss:AutoFitHeight="0" ss:Height="14.99">
   <Cell ss:HRef="http://longLink..." ss:StyleID="ce2">
        <Data ss:Type="String">Some Text</Data></Cell>

我对 grails 和 groovy 还很陌生,最近几天我一直在努力解决这个问题。有没有办法做到这一点,因为我不想将我所有的 XLSX 文件转换为 XML,然后解析那些大文件。我试过搜索是否有人有同样的问题,但我找不到类似的东西。

4

1 回答 1

1

查看插件的来源,似乎不可能(可能有人知道不同)。也许发布一个请求该功能的问题——或者如果你觉得很勇敢,可以添加功能并提交一个拉取请求;-)

可以使用原始 POI 来执行此操作,但如下所示:

import org.apache.poi.hssf.usermodel.*

// Load a workbook with a hyperlink to google in cell 0,0
new File( '/tmp/test.xls' ).withInputStream { ins ->
    new HSSFWorkbook( ins ).with { workbook ->
        workbook.getSheetAt( 0 )
                .getRow( 0 )
                .getCell( 0 ).hyperlink.address == 'http://www.google.com'
    }
}
于 2013-07-12T08:59:30.960 回答