2012-09-24 14 views
5

का उपयोग कर उस तालिका में लिखें, मेरे पास एक शब्द दस्तावेज़ है जिसमें कई तालिकाएं हो सकती हैं। तालिका को तालिका नाम से पहचाना जाता है जो शीर्षक के रूप में पहले सेल में लिखा जाता है। अब मुझे टेबल नाम के साथ तालिका मिलनी है और उस तालिका के सेल में से एक में लिखना है। मैंने अपाचे-पोई का उपयोग करने की कोशिश की लेकिन मेरे उद्देश्य के लिए इसका उपयोग करने में असमर्थ। यदि मैं यह बताने में सक्षम नहीं हूं कि दस्तावेज़ कैसा दिखता है, तो कृपया संलग्न स्क्रीन शॉट देखें।शब्द में एक तालिका खोजें और जावा

धन्यवाद as seen in screenshot name of tables are S1 and S2

String fileName = "E:\\a1.doc"; 

    if (args.length > 0) { 
     fileName = args[0]; 
    } 

    InputStream fis = new FileInputStream(fileName); 
    POIFSFileSystem fs = new POIFSFileSystem(fis); 
    HWPFDocument doc = new HWPFDocument(fs); 

    Range range = doc.getRange(); 
    for (int i=0; i<range.numParagraphs(); i++){ 
     Paragraph tablePar = range.getParagraph(i); 

     if (tablePar.isInTable()) { 
      Table table = range.getTable(tablePar); 
      for (int rowIdx=0; rowIdx<table.numRows(); rowIdx++) { 

       for (int colIdx=0; colIdx<row.numCells(); colIdx++) { 
        TableCell cell = row.getCell(colIdx); 
        System.out.println("column="+cell.getParagraph(0).text()); 
       } 
      } 
     } 
    } 

इस मैं क्या कोशिश की है है, लेकिन यह केवल 1 तालिका पढ़ता है।

+0

@ADG, आपको इसे एक प्रतिक्रिया के रूप में पोस्ट करना चाहिए। पीओआई निश्चित रूप से सबसे परिपक्व शब्द पुस्तकालय है। – tom

+0

सेलेनियम टैग हटा दिए गए .. पता नहीं क्यों आपने इसे –

+0

@tom उत्तर के रूप में चिपकाया है;) –

उत्तर

2

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

+0

मैंने अपाचे पीओआई का उपयोग करने की कोशिश की लेकिन एक विशिष्ट तालिका नहीं ढूंढ पाई। – gSr

+0

@gSr कृपया उस कोड को दिखाएं जो आपके पास पहले से है –

+0

जो मैंने कोशिश की है उसे जोड़ा गया है। – gSr

2

मुझे आपको पोई में गलतफहमी मिल गई है। यदि आप सिर्फ एक टेबल को पढ़ना चाहते हैं। बस तालिका की सामग्री लाने के लिए टेबलइटरेटर का उपयोग करें या आपको टेबल की शुरुआत के साथ अपवाद नहीं मिलेगा।

मुझे लगता है कि प्रत्येक तालिका कक्ष में केवल एक पैराग्राफ है।

InputStream fis = new FileInputStream(fileName); 
    POIFSFileSystem fs = new POIFSFileSystem(fis); 
    HWPFDocument doc = new HWPFDocument(fs); 

    Range range = doc.getRange(); 
    TableIterator itr = new TableIterator(range); 
    while(itr.hasNext()){ 
     Table table = itr.next(); 
     for(int rowIndex = 0; rowIndex < table.numRows(); rowIndex++){ 
      TableRow row = table.getRow(rowIndex); 
      for(int colIndex = 0; colIndex < row.numCells(); colIndex++){ 
       TableCell cell = row.getCell(colIndex); 
       System.out.println(cell.getParagraph(0).text()); 
      } 
     } 
    } 
+0

अच्छा, लेकिन यह 2007 से पहले शब्द के साथ काम करता है। – javydreamercsw

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