2014-03-04 3 views
-2

Мне нужно добавить гиперссылку в ячейку XLS, которая должна быть связана с файлом на моем локальном диске с помощью Java. Вот мой код.Как добавить гиперссылку в ячейку XLS с помощью JAVA

Мне нужно связать соответствующий файл из локальной папки с соответствующей ячейкой в ​​XL.

Я попытался добавить гиперссылку, но я могу добавить только URL-адрес в не файл с локального диска. Пожалуйста, помогите мне

public boolean to_write_xls(int max, List <String> temp_1,List <String> temp_2,List <String> temp_3,List <String> temp_4,List <String> temp_5) { 

HSSFWorkbook workbook = new HSSFWorkbook(); 
HSSFSheet sheet = workbook.createSheet("Analyzed Result"); 
HSSFRow rowhead = sheet.createRow((short) 0); 
CellStyle style = workbook.createCellStyle(); 
style.setFillForegroundColor(HSSFColor.ORANGE.index); 
style.setFillPattern(CellStyle.SOLID_FOREGROUND); 
style.setBorderBottom(HSSFCellStyle.BORDER_MEDIUM); 
style.setBorderTop(HSSFCellStyle.BORDER_THICK); 
style.setBorderRight(HSSFCellStyle.BORDER_THIN); 
style.setBorderLeft(HSSFCellStyle.BORDER_THIN); 

    rowhead.createCell((short) 0).setCellValue("Passed TC's  "); 
    rowhead.createCell((short) 1).setCellValue("CRC:Failure  "); 
    rowhead.createCell((short) 2).setCellValue("unexpected RRC PDU"); 
    rowhead.createCell((short) 3).setCellValue("PCallback Error "); 
    rowhead.createCell((short) 4).setCellValue("Piggybacked NAS PDU"); 

/* for (int i=0; i<5; i++){ 
     // sheet.setColumnWidth(i,4000); 
     sheet.autoSizeColumn((short)i); 


    }*/ 
    Iterator<Cell> ct = rowhead.iterator(); 
    int i=0; 
    while(ct.hasNext()){ 
     Cell cell = (Cell) ct.next(); 
     cell.setCellStyle(style); 
     sheet.autoSizeColumn((short)i); 
     i ++; 
    } 
    CellStyle style_r = workbook.createCellStyle(); 
    style_r.setBorderBottom(HSSFCellStyle.BORDER_THIN); 
    style_r.setBorderTop(HSSFCellStyle.BORDER_THIN); 
    style_r.setBorderRight(HSSFCellStyle.BORDER_THIN); 
    style_r.setBorderLeft(HSSFCellStyle.BORDER_THIN); 

    i=0; 
    while (i < max) { 

     HSSFRow row = sheet.createRow((short) i+2); 

     row.createCell((short) 0).setCellValue(temp_1.get(i)); 
     row.createCell((short) 1).setCellValue(temp_2.get(i)); 
     row.createCell((short) 2).setCellValue(temp_3.get(i)); 
     row.createCell((short) 3).setCellValue(temp_4.get(i)); 
     row.createCell((short) 4).setCellValue(temp_5.get(i)); 

     Iterator<Cell> rw = row.iterator(); 
     while(rw.hasNext()){ 
      Cell cell = (Cell) rw.next(); 
      cell.setCellStyle(style_r); 
     } 
     i++; 
     }  




    try { 

     FileOutputStream Fout = 
    new FileOutputStream(new File(fin+"\\Result.xls")); 
    workbook.write(Fout); 
    Fout.close(); 
    //System.out.println("Excel written successfully..with the file name directory-----> D:\\_Analyzed_Result\\Result.xls"); 
     Runtime.getRuntime().exec("cmd /c start "+fin+"\\Result.xls"); 
    } catch (Exception e) { 
    e.printStackTrace(); 

    return false; 
} 


return true; 

}

+0

Вам действительно нужно предоставить больше информации. Что вы пробовали? Какую структуру вы используете для генерации xls-файлов? ... –

ответ

1

Приведенный выше код не работает. поэтому я нашел какой-то другой код, который работает нормально, который используется для добавления гиперссылки в ячейку.

CellStyle hlink_style = workbook.createCellStyle(); 
Font hlink_font = workbook.createFont(); 
hlink_font.setUnderline(Font.U_SINGLE); 
hlink_font.setColor(Font.COLOR_RED); 
hlink_style.setFont(hlink_font); 
Hyperlink link = createHelper.createHyperlink(Hyperlink.LINK_FILE); 
Cell cell = null;  
cell=row.createCell((short) 1); 
cell.setCellValue("Go to Result"); 
path_f="D://Result.xls"; 
link.setAddress(path_f);   
cell.setHyperlink(link);  
cell.setCellStyle(hlink_style); 

Он работает на 100% отлично !!

0

Разработчики могут добавлять гиперссылки на внешние файлы Excel, вызвав метод Add коллекции Гиперссылки. Метод Add принимает следующие параметры:

Cell Name представляет имя ячейки, где ссылка будет добавлена ​​

Количество строк, представляет количество строк в этом диапазоне гиперссылка

Количество столбцов, представляет собой число столбцов этого диапазона гиперссылка

URL, представляет собой адрес внешнего файла Excel, который будет использоваться в качестве гиперссылки

[Java]

// Инстанцирование объект Workbook

Workbook workbook = new Workbook(); 

// Получение ссылки первого листа.

WorksheetCollection worksheets = workbook.getWorksheets(); 
Worksheet sheet = worksheets.get(0); 

// Установка значения в ячейку "A1"

Cells cells = sheet.getCells(); 
Cell cell = cells.get("A1"); 
cell.setValue("Visit Aspose"); 

// Установка цвета шрифта ячейки Голубой

Style style = cell.getStyle(); 
style.getFont().setColor(Color.getBlue()); 

// Установка шрифта ячейки к Single Подчеркивание

style.getFont().setUnderline(FontUnderlineType.SINGLE); 
cell.setStyle(style); 

HyperlinkCollection hyperlinks = sheet.getHyperlinks(); 

// Добавление lin К во внешний файл

hyperlinks.add("A5", 1, 1, "C:\\book1.xls"); 

// Сохранение файла Excel

workbook.save("c:\\book2.xls"); 
0

Вы можете создать гиперссылку в Excel лист с помощью этого кода Java

File veri1 = new File("your_ file_path"); 
        FileInputStream inputStream_ED1 = new FileInputStream(veri1); 
        HSSFWorkbook workbook_ED1 = new HSSFWorkbook(inputStream_ED1); 
        HSSFSheet sheet_ED1 = workbook_ED1.getSheet("Result"); 
        CreationHelper createHelper = workbook_ED1.getCreationHelper(); 
        HSSFCellStyle hlinkstyle = workbook_ED1.createCellStyle(); 
        HSSFFont hlinkfont = workbook_ED1.createFont(); 
        hlinkfont.setUnderline(HSSFFont.U_SINGLE); 
        hlinkfont.setColor(HSSFColor.BLUE.index); 
        hlinkstyle.setFont(hlinkfont); 
        Iterator<Row> riterator_ED1 = sheet_ED1.iterator(); 
        Row row_ED1 = sheet_ED1.createRow(sheet_ED1.getLastRowNum()+1); 
        if(sheet_ED1.getLastRowNum()==0){ 

        } 


       Cell DeviceName = row_ED1.createCell(0); 
       DeviceName.setCellValue(DeviceID.toString()); 

       Cell Module = row_ED1.createCell(1); 
       Module.setCellValue(module.toString()); 

       Cell SubModule1 = row_ED1.createCell(2); 
       SubModule1.setCellValue(SubModule.toString()); 


       Cell ScenarioID1 = row_ED1.createCell(3); 
       ScenarioID1.setCellValue(ScenarioID.toString()); 

       Cell TestcaseID = row_ED1.createCell(4); 
       TestcaseID.setCellValue(TestCaseID.toString()); 

       Cell TCDescription = row_ED1.createCell(5); 
       TCDescription.setCellValue(testcasedis.toString()); 

       Cell ExpectedResult1 = row_ED1.createCell(6); 
       ExpectedResult1.setCellValue(ExpectedResult.toString()); 

       Cell ActualResult1 = row_ED1.createCell(7); 
       ActualResult1.setCellValue(ActualResult.toString()); 

       Cell Status1 = row_ED1.createCell(8); 
       Status1.setCellValue(Status.toString()); 

       Cell time = row_ED1.createCell(9); 
       time.setCellValue(Time.toString()); 

       Cell ExecutionDate1 = row_ED1.createCell(10); 
       ExecutionDate1.setCellValue(ExecutionDate.toString()); 

       HSSFHyperlink link = (HSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_URL); 
       Cell ss = row_ED1.createCell((short) 11); 
       ss.setCellValue(sspath.toString()); 
       link = (HSSFHyperlink)createHelper.createHyperlink(Hyperlink.LINK_FILE); 
       link.setAddress(sspath.toString()); 
       ss.setHyperlink(link); 
       ss.setCellStyle(hlinkstyle); 

       FileOutputStream 


    os_ED1 = new FileOutputStream(veri1); 
       workbook_ED1.write(os_ED1); 

       os_ED1.close(); 
       workbook_ED1.close(); 
       inputStream_ED1.close(); 
+0

Это старый вопрос и ответ на вопрос, не могли бы вы также объяснить код, который вы опубликовали, или добавить некоторые фундаментальные комментарии в код, так что этот ответ может дать некоторую ценность? – FatTony

Смежные вопросы