2013-07-11 132 views
1

我想使用excel導入插件 (基於Apache POI)從Grails中的.xslx電子表格中讀取一些數據。Grails Excel導入超鏈接

它適用於除具有超鏈接(可點擊)的主標題以外的所有數據類型。 - 當我簡單地將列映射到字符串(下面的代碼)時,我只得到沒有超鏈接的標題。我嘗試將期望的類型指定爲「超鏈接」(來自org.apache.poi.ss.usermodel),但它不起作用。

我使用由Excel中導入示例項目

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,然後解析這些大文件。我試着搜索是否有人遇到同樣的問題,但我找不到類似的東西。

回答

1

看着source of the plugin,看起來這是不可能的(有人可能會有不同的理解)。也許張貼issue requesting the feature - 或添加功能,並提交pull請求,如果你感覺勇敢;-)

這是可能做到這一點使用原始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' 
    } 
}