2016-07-28 12 views
0

Excelスプレッドシートからハイパーリンクセルを読み取ろうとしていますが、これを行うことはできません。スプレッドシートに入ってハイパーリンクを削除すると、うまく読み込まれます。私は別の質問(How to get hyperlink address from a cell in excel by using java?)で解決策を見つけましたが、getHyperlinkメソッドはシートだけで動作し、私を混乱させるセルではありません。JXL Javaを使用してExcelからハイパーリンクセルを読み取る

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()); 
} 

これは

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]); 

は、だから私が何をしようとしているものを

Hyperlink h = c2.getHyperlink(); 

でちょうど今私のコードですが、セルで使用するとき、私はgetHyperlinkは動作しません。

enter image description here

そして、私はgetHyperlink()メソッド

enter image description here

が、私はハイパーリンクとして表示され、配列ですが、それは、表示されないシートを使用を追加するオプションを持っていけません。私は近いんだけど、私はちょうどカントの図アウト私は存在しないか、またはリンクの上に私を得るために、間違ったので、任意の助けをやっているが大幅に高く評価されているかのよう

enter image description here

私は事前に、感謝を感じます!

+0

http://www.codejava.net/coding/how-to-read-excel-files-in-java-using-apache-poi)ではなくHSSFのXSSFを使用する必要があります。ですから、私はJXLでどうしたらいいですか? – OhAye

答えて

0

代わりにApache POIを使用することに決めました。その代わりに、getHyperlinkメソッドがあるからです。そしてそれは魅力のように機能します。私はJXLからApache POIへの変更を試みる際に同じ状況にあることが分かった場合、誰かが役に立つと願って下のコードを投稿しました!あなたは.xslx使用している場合も、あなたは私だけでは問題の答えは、Apache POIとしませJXLを使用している実現してきました

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; 

    } 
関連する問題