2013-07-11 6 views
1

Я пытаюсь прочитать некоторые данные из таблицы .xslx в Grails, используя плагин excel-import (который основан на POI Apache).Grails Excel импортирует гиперссылки

Он хорошо работает со всеми типами данных, за исключением основного названия, имеющего гиперссылку (возможность нажатия кнопки). -Когда я просто сопоставляю столбцы с строкой (код ниже), я получаю только название без гиперссылки. Я попытался указать ожидаемый тип как «гиперссылку» (из org.apache.poi.ss.usermodel), но это не сработало.

Я использую код предоставленный образец проекта первенствует-импортного

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> 

Я довольно новый для Грааль и заводным, и я застрял в течение последних нескольких дней, пытаясь решить Эта проблема. Есть ли способ сделать это, потому что я не хочу преобразовывать все мои файлы XLSX в XML и затем анализировать эти огромные файлы. Я пробовал искать, если у кого-то была такая же проблема, но я не мог найти ничего подобного.

ответ

1

Глядя на 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' 
    } 
} 
Смежные вопросы