अपाचे POI - स्प्रेडशीट

यह अध्याय बताता है कि एक स्प्रेडशीट कैसे बनाई जाए और जावा का उपयोग करके उसमें हेरफेर किया जाए। स्प्रेडशीट एक एक्सेल फाइल में एक पेज है; इसमें विशिष्ट नामों वाली पंक्तियाँ और स्तंभ हैं।

इस अध्याय को पूरा करने के बाद, आप एक स्प्रेडशीट बनाने और उस पर रीड ऑपरेशन करने में सक्षम होंगे।

एक स्प्रेडशीट बनाएँ

सबसे पहले, आइए पहले के अध्यायों में चर्चा की गई संदर्भित कक्षाओं का उपयोग करके एक स्प्रेडशीट बनाएं। पिछले अध्याय का पालन करके, पहले एक कार्यपुस्तिका बनाएं और फिर हम एक शीट बना सकते हैं।

स्प्रेडशीट बनाने के लिए निम्न कोड स्निपेट का उपयोग किया जाता है।

//Create Blank workbook
XSSFWorkbook workbook = new XSSFWorkbook();

//Create a blank spreadsheet
XSSFSheet spreadsheet = workbook.createSheet("Sheet Name");

स्प्रेडशीट पर पंक्तियाँ

स्प्रैडशीट में एक ग्रिड लेआउट होता है। पंक्तियों और स्तंभों की पहचान विशिष्ट नामों से की जाती है। कॉलम को अक्षर और पंक्तियों के साथ संख्याओं के साथ पहचाना जाता है।

पंक्ति बनाने के लिए निम्न कोड स्निपेट का उपयोग किया जाता है।

XSSFRow row = spreadsheet.createRow((short)1);

स्प्रेडशीट में लिखें

आइए हम कर्मचारी डेटा के एक उदाहरण पर विचार करें। यहां कर्मचारी डेटा सारणीबद्ध रूप में दिया गया है।

ईएम आईडी Emp नाम पद
Tp01 गोपाल तकनीक प्रबंधक
TP02 मनीषा प्रमाण पाठक
Tp03 Masthan तकनीकी लेखक
Tp04 सतीश तकनीकी लेखक
Tp05 कृष्णा तकनीकी लेखक

उपरोक्त कोड को स्प्रैडशीट में लिखने के लिए निम्न कोड का उपयोग किया जाता है।

import java.io.File;
import java.io.FileOutputStream;

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Writesheet {
   public static void main(String[] args) throws Exception {

      //Create blank workbook
      XSSFWorkbook workbook = new XSSFWorkbook(); 

      //Create a blank sheet
      XSSFSheet spreadsheet = workbook.createSheet(" Employee Info ");

      //Create row object
      XSSFRow row;

      //This data needs to be written (Object[])
      Map < String, Object[] > empinfo = 
      new TreeMap < String, Object[] >();
      empinfo.put( "1", new Object[] { "EMP ID", "EMP NAME", "DESIGNATION" });
      empinfo.put( "2", new Object[] { "tp01", "Gopal", "Technical Manager" });
      empinfo.put( "3", new Object[] { "tp02", "Manisha", "Proof Reader" });
      empinfo.put( "4", new Object[] { "tp03", "Masthan", "Technical Writer" });
      empinfo.put( "5", new Object[] { "tp04", "Satish", "Technical Writer" });
      empinfo.put( "6", new Object[] { "tp05", "Krishna", "Technical Writer" });
      
      //Iterate over data and write to sheet
      Set < String > keyid = empinfo.keySet();
      int rowid = 0;

      for (String key : keyid) {
         row = spreadsheet.createRow(rowid++);
         Object [] objectArr = empinfo.get(key);
         int cellid = 0;

         for (Object obj : objectArr) {
            Cell cell = row.createCell(cellid++);
            cell.setCellValue((String)obj);
         }
      }

      //Write the workbook in file system
      FileOutputStream out = new FileOutputStream(new File("Writesheet.xlsx"));
      workbook.write(out);
      out.close();
      System.out.println("Writesheet.xlsx written successfully");
   }
}

ऊपर दिए गए Java कोड को इस तरह सेव करें Writesheet.java, और फिर संकलन और कमांड प्रॉम्प्ट से इसे निम्नानुसार चलाएं -

$javac Writesheet.java
$java Writesheet

यह नाम की एक एक्सेल फाइल बनाने के लिए संकलित और निष्पादित करेगा Writesheet.xlsx आपकी वर्तमान निर्देशिका में और आपको कमांड प्रॉम्प्ट में निम्न आउटपुट मिलेगा।

Writesheet.xlsx written successfully

Writesheet.xlsx फ़ाइल निम्नानुसार है।

स्प्रेडशीट से पढ़ें

आइए उपरोक्त उपरोक्त एक्सेल फाइल पर विचार करें Writesheet.xslxइनपुट के रूप में। निम्नलिखित कोड का निरीक्षण करें; इसका उपयोग स्प्रेडशीट के डेटा को पढ़ने के लिए किया जाता है।

import java.io.File;
import java.io.FileInputStream;

import java.util.Iterator;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

public class Readsheet {
   static XSSFRow row;
   public static void main(String[] args) throws Exception {
      FileInputStream fis = new FileInputStream(new File("WriteSheet.xlsx"));
      
      XSSFWorkbook workbook = new XSSFWorkbook(fis);
      XSSFSheet spreadsheet = workbook.getSheetAt(0);
      Iterator < Row >  rowIterator = spreadsheet.iterator();
      
      while (rowIterator.hasNext()) {
         row = (XSSFRow) rowIterator.next();
         Iterator < Cell >  cellIterator = row.cellIterator();
         
         while ( cellIterator.hasNext()) {
            Cell cell = cellIterator.next();
            
            switch (cell.getCellType()) {
               case Cell.CELL_TYPE_NUMERIC:
                  System.out.print(cell.getNumericCellValue() + " \t\t ");
                  break;
               
               case Cell.CELL_TYPE_STRING:
                  System.out.print(
                  cell.getStringCellValue() + " \t\t ");
                  break;
            }
         }
         System.out.println();
      }
      fis.close();
   }
}

हमें उपरोक्त कोड अंदर रखना है Readsheet.java फ़ाइल, और फिर संकलित करें और कमांड प्रॉम्प्ट से इसे निम्नानुसार चलाएं -

$javac Readsheet.java
$java Readsheet

यदि आपका सिस्टम वातावरण POI लाइब्रेरी से कॉन्फ़िगर किया गया है, तो यह कमांड प्रॉम्प्ट में निम्न आउटपुट उत्पन्न करने के लिए संकलित और निष्पादित करेगा।

EMP ID   EMP NAME       DESIGNATION 
 tp01     Gopal       Technical Manager 
 tp02     Manisha     Proof Reader 
 tp03     Masthan     Technical Writer 
 tp04     Satish      Technical Writer 
 tp05     Krishna     Technical Writer