2016-03-20 14 views
0

ayar değil ve çizgi bir bağlantı içerdiğinde, böyle bağlantıya önceki hücrenin köprüyü ayarlayın: BenJava POI Bir metin dosyasından okumak için çalışıyorum önceki hücre köprüyü

while (scanner.hasNextLine()) { 

    String nextToken = scanner.nextLine(); 
    if (nextToken.startsWith("<")) { 

     temp = Jsoup.parse(nextToken); 
     url = temp.select("a").first(); 
     link.setAddress(url.attr("href")); 
     System.out.println(link.getAddress()); 
     prevCol = currRow.getCell(col - 1); 
     System.out.println(row + ", " + col -1); 
     prevCol.setHyperlink(link); 

    } else { 
     currCol.setCellValue(nextToken); 
     col++; 
     currCol = currRow.createCell(col); 
    } 

    if (nextToken.isEmpty()) { 
     row++; 
     col = 0; 
     currRow = sheet.createRow(row); 
     currCol = currRow.createCell(col); 
    } 

} 

Linklerin, olması gereken hücrede ayarlandığından emin olmak için her bağlantıyı ve hücre koordinatlarını konsola yazdırmak, ve onlar. Ama benim sorunum sadece tüm hücrelerdeki son hücreye bağlı bir köprü oluyor. Herhangi bir fikir neden? daha yararlı bulanlar için

Tam kodu:

public static void main(String[] args) throws EncryptedDocumentException, InvalidFormatException, IOException { 
    File file = new File("C:\\Users\\Jester\\Desktop\\data scrap payday\\finishedformat.txt"); 
    FileInputStream fis = new FileInputStream(
      new File("C:\\Users\\Jester\\Desktop\\data scrap payday\\Payday 2 Rewards.xlsx")); 
    XSSFWorkbook workbook = new XSSFWorkbook(fis); 
    CreationHelper createHelper = workbook.getCreationHelper(); 
    XSSFSheet sheet = workbook.createSheet("Achievement Rewards"); 
    Document temp; 
    Element url; 
    Scanner scanner = new Scanner(file, "UTF-8"); 
    XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_URL); 
    int row = 0; 
    int col = 0; 
    XSSFRow currRow = sheet.createRow(row); 
    XSSFCell currCol = currRow.createCell(col); 
    XSSFCell prevCol; 

    XSSFCellStyle hlinkstyle = workbook.createCellStyle(); 
    XSSFFont hlinkfont = workbook.createFont(); 
    hlinkfont.setUnderline(XSSFFont.U_SINGLE); 
    hlinkfont.setColor(HSSFColor.BLUE.index); 
    hlinkstyle.setFont(hlinkfont); 
    while (scanner.hasNextLine()) { 

     String nextToken = scanner.nextLine(); 
     if (nextToken.startsWith("<")) { 

      temp = Jsoup.parse(nextToken); 
      url = temp.select("a").first(); 
      link.setAddress(url.attr("href")); 
      System.out.println(link.getAddress()); 
      prevCol = currRow.getCell(col - 1); 
      System.out.println(row + ", " + col); 
      prevCol.setHyperlink(link); 
      prevCol.setCellStyle(hlinkstyle); 
      System.out.println(prevCol.getHyperlink().getAddress()); //This is returning the desired link to the console too, sooooo.... 

     } else { 
      currCol.setCellValue(nextToken); 
      col++; 
      currCol = currRow.createCell(col); 
     } 

     if (nextToken.isEmpty()) { 
      row++; 
      col = 0; 
      currRow = sheet.createRow(row); 
      currCol = currRow.createCell(col); 
     } 

    } 

    fis.close(); 
    FileOutputStream fos = new FileOutputStream(
      new File("C:\\Users\\Jester\\Desktop\\data scrap payday\\Payday 2 Rewards.xlsx")); 
    workbook.write(fos); 
    fos.close(); 

} 

Girdi biçimi böyle gibidir:

Hail to the King, Baby 
In the Golden Grin Casino heist, kill "The King" and complete the heist in stealth 
<a href="http://payday.wikia.com/wiki/Golden_Grin_Casino" title="Golden Grin Casino">Golden Grin Casino</a> 
"Sports Utility Mask" mask 
<a href="http://payday.wikia.com/wiki/Masks_(Payday_2)#The_Golden_Grin_Casino_Heist_DLC" title="Masks (Payday 2)">Sports Utility Mask</a> 
"Carpet" material 
<a href="http://payday.wikia.com/wiki/Materials#The_Golden_Grin_Casino_Heist_DLC" title="Materials">Carpet</a> 
"Dices" pattern 
<a href="http://payday.wikia.com/wiki/Patterns#The_Golden_Grin_Casino_Heist_DLC" title="Patterns">Dices</a> 

cevap

1

Bu kapsam konudur. If ifadesinin içindeki link nesnesini yaratın.

  if (nextToken.startsWith("<")) { 
      XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_URL); 
      temp = Jsoup.parse(nextToken); 
      url = temp.select("a").first(); 
      link.setAddress(url.attr("href")); 
      System.out.println(link.getAddress()); 
      prevCol = currRow.getCell(col - 1); 
      System.out.println(row + ", " + col); 
      prevCol.setHyperlink(link); 
      prevCol.setCellStyle(hlinkstyle); 
      System.out.println(prevCol.getHyperlink().getAddress()); //This is returning the desired link to the console too, sooooo. 
+0

Bu hile yaptı, teşekkürler! – JesterXIII