अपाचे 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