2016-07-28 15 views
0

Ich versuche, eine Hyperlink-Zelle aus meiner Excel-Tabelle zu lesen, aber ich kann dies nicht tun. Wenn ich in die Tabelle gehe und den Hyperlink lösche, liest es sich gut. Ich bin unten auf eine Lösung in einer anderen Frage gestoßen (How to get hyperlink address from a cell in excel by using java?), aber die Methode getHyperlink funktioniert nur mit dem Blatt und nicht mit der Zelle, die mich verwirrt.JXL lesen Hyperlink-Zelle aus Excel mit Java

Workbook wb = WorkbookFactory.create(new File("test.xls")); 
Sheet s = wb.getSheetAt(0); 
Row r2 = s.getRow(1); // Rows in POI are 0 based 
Cell cB2 = r2.getCell(1); // Cells are 0 based 

Hyperlink h = cB2.getHyperlink(); 
if (h == null) { 
    System.err.println("Cell B2 didn't have a hyperlink!"); 
} else { 
    System.out.println("B2 : " + h.getLabel() + " -> " + h.getAddress()); 
} 

Dies ist mein Code jetzt nur

import jxl.Cell; 
import jxl.Sheet; 
import jxl.Workbook; 
import jxl.read.biff.BiffException; 

public String[] readUsernameFromExcel() { 
     File src = new File("C:/filepath.xls"); 
     String ex[] = new String[10]; 

     try { 

      Workbook wb = Workbook.getWorkbook(src); 
      Sheet sh1 = wb.getSheet(0); 

      Cell a3 = sh1.getCell(0, 2); 
      Cell b3 = sh1.getCell(1,2); 


      Cell c2 = sh1.getCell(2,1); //this is the cell I want to read the hyperlink from 

      ex[0] = a3.getContents().trim(); 
      ex[1] = b3.getContents().trim(); 
      ex[2] = c2.getContents().trim(); 

      System.out.println(ex[0]); 
      System.out.println(ex[1]); 
      System.out.println(ex[2]); 

Also, was ich zu tun haben versucht,

Hyperlink h = c2.getHyperlink(); 

Aber ich getHyperlink, wenn sie mit einer Zelle verwendet nicht funktioniert.

enter image description here

und ich nicht die Möglichkeit haben, getHyperlink() -Methode

enter image description here

hinzufügen, aber wenn ich das Blatt verwenden es scheint, obwohl erscheint als Hyperlinks und ein Array ist.

enter image description here

Ich fühle mich, als ob ich so nahe bin, aber ich, was einfach nicht herausfinden, ich bin fehlt oder falsch so jede Hilfe tut mir über die Verbindung zu bekommen ist sehr zu schätzen, Dank im Voraus!

+0

ich nur die Antwort in dieser Frage haben erkannt, wird mit Apache POI und nicht JXL. Also ich denke die Frage ist, wie mache ich das in JXL? – OhAye

Antwort

0

Ich habe mich gerade dafür entschieden, stattdessen den Apache POI zu verwenden, da dies die Methode getHyperlink ist. Und es funktioniert wie ein Zauber. Ich habe meinen Code unten gepostet in der Hoffnung, dass jemand es nützlich findet, wenn er sich in der gleichen Situation befindet, wenn er versucht, von JXL zu Apache POI zu wechseln! Auch wenn Sie verwenden .xslx dann müssen Sie XSSF verwenden, statt HSSF (http://www.codejava.net/coding/how-to-read-excel-files-in-java-using-apache-poi)

public String[] readUsernameFromExcel() { 
     String ex[] = new String[10]; 
     try { 

      FileInputStream fileInputStream = new FileInputStream("filepath.xls"); 
      HSSFWorkbook workbook = new HSSFWorkbook(fileInputStream); 
      HSSFSheet worksheet = workbook.getSheetAt(0); 
      HSSFRow row1 = worksheet.getRow(2); 
      HSSFCell cellA3 = row1.getCell(0); 
      ex[0] = String.valueOf(cellA3.getNumericCellValue()).trim(); 

      HSSFRow row2 = worksheet.getRow(2); 
      HSSFCell cellB3 = row2.getCell(1); 
      ex[1] = cellB3.getStringCellValue(); 

      HSSFRow row3 = worksheet.getRow(1); 

      HSSFCell cellC2 = row3.getCell(2); 
      Hyperlink h = cellC2.getHyperlink(); 
      ex[2] = h.getAddress(); 

      System.out.println("A3: " + ex[0]); 
      System.out.println("B3: " + ex[1]); 
      System.out.println("C2: " + ex[2]); 

     }catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     }catch (IOException e) { 
      e.printStackTrace();} 


return ex; 

    }