2016-06-22 10 views
7

मुझे टेबल सेल को छवियों के रूप में निकालने की आवश्यकता है। कोशिकाओं में मिश्रित सामग्री (टेक्स्ट + छवि) हो सकती है, जिसे मुझे एक छवि में विलय करने की आवश्यकता होती है। मैं कोर टेक्स्ट प्राप्त करने में सक्षम हूं लेकिन मुझे छवि + टेक्स्ट प्राप्त करने का कोई अंदाजा नहीं है। सुनिश्चित नहीं है कि एपेस पीओआई मदद करेगा या नहीं।एमएस वर्ड टेबल सेल को छवि के रूप में निकालना?

क्या किसी ने पहले ऐसा कुछ किया है?

public static void readTablesDataInDocx(XWPFDocument doc) { 
    int tableIdx = 1; 
    int rowIdx = 1; 
    int colIdx = 1; 
    List table = doc.getTables(); 
    System.out.println("==========No Of Tables in Document=============================================" + table.size()); 
    for (int k = 0; k < table.size(); k++) { 
     XWPFTable xwpfTable = (XWPFTable) table.get(k); 
     System.out.println("================table -" + tableIdx + "===Data=="); 
     rowIdx = 1; 
     List row = xwpfTable.getRows(); 
     for (int j = 0; j < row.size(); j++) { 
      XWPFTableRow xwpfTableRow = (XWPFTableRow) row.get(j); 
      System.out.println("Row -" + rowIdx); 
      colIdx = 1; 
      List cell = xwpfTableRow.getTableCells(); 
      for (int i = 0; i < cell.size(); i++) { 
       XWPFTableCell xwpfTableCell = (XWPFTableCell) cell.get(i); 
       if (xwpfTableCell != null) { 
        System.out.print("\t" + colIdx + "- column value: " + xwpfTableCell.getText()); 
       } 
       colIdx++; 
      } 
      System.out.println(""); 
      rowIdx++; 
     } 
     tableIdx++; 
     System.out.println(""); 
    } 
} 

अब मैं इस विधि

System.out.print("\t" + colIdx + "- column value: " + xwpfTableCell.getText()); 

मैं छवि कैसे प्राप्त कर सकता है, तो एक सेल भी एक होता है की मदद से पाठ प्राप्त करने में सक्षम हूँ?

+1

के लिए सेल 'getParagraphs में हो रही पैराग्राफ()', तो कोशिश करें प्रत्येक अनुच्छेद आर, रन 'getRuns() 'प्राप्त करें। यह एक [XWPFRun] (https://poi.apache.org/apidocs/org/apache/poi/xwpf/usermodel/XWPFRun.html) देता है। इसमें एक विधि है जो आपको चित्र प्राप्त करने की अनुमति देती है: 'getEmbedded चित्र() ' – iggymoran

+0

@iggymoran सूची पैरा = xwpfTableCell.get पैराग्राफ(); अगर (पैरा! = शून्य) { XWPFRun xWPFRun = (XWPFRun) पैरा.get (i); (int l = 0; l

+1

आप की तरह कुछ की कोशिश करना चाहते: सत्यापित करें कि वे अशक्त नहीं कर रहे हैं() '' para.getRuns,, और फिर फोन 'run.getEmbeddedPictures()'। – iggymoran

उत्तर

5

इस कोड की कोशिश करें, यह मेरे लिए काम कर रहा है

XWPFDocument doc = new XWPFDocument(new FileInputStream(fileName)); 
      List<XWPFTable> table = doc.getTables(); 
      for (XWPFTable xwpfTable : table) { 
       List<XWPFTableRow> row = xwpfTable.getRows(); 
       for (XWPFTableRow xwpfTableRow : row) { 
        List<XWPFTableCell> cell = xwpfTableRow.getTableCells(); 
        for (XWPFTableCell xwpfTableCell : cell) { 
         if (xwpfTableCell != null) { 
          System.out.println(xwpfTableCell.getText()); 
          String s = xwpfTableCell.getText(); 
          for (XWPFParagraph p : xwpfTableCell.getParagraphs()) { 
           for (XWPFRun run : p.getRuns()) { 
            for (XWPFPicture pic : run.getEmbeddedPictures()) { 
             byte[] pictureData = pic.getPictureData().getData(); 
             System.out.println("picture : " + pictureData); 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
+0

यह ठीक काम कर रहा है ...! –

3

जब आपके पास Cell है, तो आप paragraphs को पकड़ सकते हैं जो सेल बनाते हैं। ये पैराग्राफ बदले में Run एस द्वारा बनाए गए हैं, जिन्हें आप getRuns विधि पर कॉल करके प्राप्त कर सकते हैं। रन में स्वयं एम्बेडेड छवियां हो सकती हैं, जिन्हें आप getEmbeddedPictures विधि को कॉल करके प्राप्त कर सकते हैं।

इसलिए तुम एक विधि है कि एक सेल के एम्बेडेड चित्रों हो जाता है हो सकता है:

public static void printDescriptionOfImagesInCell(XWPFTableCell cell) { 
    List<XWPFParagraph> paragrahs = cell.getParagraphs(); 
    for (XWPFParagraph paragraph : paragraphs) { 
     List<XWPFRun> runs = paragraph.getRuns(); 
     for (XWPFRun run : runs) { 
      List<XWPFPicture> pictures = run.getEmbeddedPictures(); 
      for (XWPFPicture picture : pictures) { 
       //Do anything you want with the picture: 
       System.out.println("Picture: " + picture.getDescription()); 
      } 
     } 
    } 
} 

आप वास्तव में प्राप्त करने के लिए Picture प्रलेखन के साथ वास्तविक चित्रों के बारे में अधिक बातें की खोज के लिए, और बदल विधि में सक्षम होना चाहिए छवि डेटा, नाम, आदि

संबंधित मुद्दे