我正在尝试使用excel-import插件(基于Apache POI)从Grails中的.xslx电子表格中读取一些数据。
它可以很好地处理所有数据类型,除了有一个超链接(可点击)的主标题。-When我只是将列映射成一个字符串(下面的代码),我只得到标题而没有超级链接。我尝试将预期类型指定为"hyperlink“(来自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,然后再解析那些大文件。我试着搜索是否有人有同样的问题,但我找不到任何类似的东西。
发布于 2013-07-12 16:59:31
看看source of the plugin,这看起来是不可能的(有人可能会有不同的看法)。如果你觉得勇敢,也许可以发布一个issue requesting the feature --或者添加功能并提交一个拉取请求;-)
使用原始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'
}
}https://stackoverflow.com/questions/17602924
复制相似问题