का उपयोग कर एक्सेल फ़ाइल की खाली कोशिकाओं को कैसे पढ़ा जाए, मैंने पीओआई का उपयोग करके एक्सेल फ़ाइल पढ़ने की कोशिश की है और फिर मैं उस डेटा को JTable
में रखना चाहता था।POI
एक्सेल फ़ाइल है,
जैसा कि आप देख सकते हैं, वहाँ उपरोक्त तालिका में दो रिक्त कक्षों कर रहे हैं, एक बार मैं एक JTable
मैं परिणाम के बाद गया में उपरोक्त डेटा को पढ़ने,
मेरे JTable
में, खाली कोशिकाएं गलत जगह पर चली गई हैं, मैंने इस परिणाम को प्राप्त करने के लिए निम्नलिखित कोडों का उपयोग किया है, कृपया सही परिणाम प्राप्त करने में मेरी सहायता करें,
private XLSContainer xLSContainer;
Vector cellVectorHolder;
private int noOfCells=0;
public XLSContainer readXLS(XLSFile xLSFile) {
cellVectorHolder = new Vector();
try {
FileInputStream inputStream = new FileInputStream(xLSFile.getFileName());
POIFSFileSystem pOIFSFileSystem = new POIFSFileSystem(inputStream);
HSSFWorkbook hSSFWorkbook = new HSSFWorkbook(pOIFSFileSystem);
HSSFSheet hSSFSheet = hSSFWorkbook.getSheetAt(0);
Iterator rowIter = hSSFSheet.rowIterator();
while (rowIter.hasNext()) {
HSSFRow row = (HSSFRow) rowIter.next();
if(row.getRowNum()==0){
noOfCells = row.getLastCellNum();
}
Iterator cellIter = row.cellIterator();
Vector cellStoreVector = new Vector();
while (cellIter.hasNext()) {
HSSFCell hSSFCell = (HSSFCell) cellIter.next();
//System.out.println(hSSFCell.getCellNum());
cellStoreVector.addElement(hSSFCell);
}
cellVectorHolder.addElement(cellStoreVector);
}
} catch (Exception e) {
e.printStackTrace();
}
feedXLSContainer();
return xLSContainer;
}//readXLS
private void feedXLSContainer() {
xLSContainer = new XLSContainer();
for (int i = 0; i < cellVectorHolder.size(); i++) {
Vector cellStoreVector = (Vector) cellVectorHolder.elementAt(i);
Vector item = new Vector();
for (int j = 0; j < cellStoreVector.size(); j++) {
HSSFCell cell = (HSSFCell) cellStoreVector.elementAt(j);
item.add(cell.toString());
}
if (i == 0) {
xLSContainer.addHeader(item);
} else {
xLSContainer.addRow(item);
}
}
}
क्या मैं ऊपर किया एक वर्ग xLSContainer
कहा जाता है में अलग वैक्टर में शीर्षकों और डेटा पंक्तियों डाल दिया जाता है और फिर एक JTable
में उन वैक्टर डाल दिया है।
यहाँ कैसे मैं इसे और अधिक गूगल खोज के बाद समाधान कर लिया है :-)
private XLSContainer xLSContainer;
public XLSContainer readXLS(XLSFile xLSFile) {
try {
WorkbookSettings ws = new WorkbookSettings();
ws.setLocale(new Locale("en", "EN"));
Workbook workbook = Workbook.getWorkbook(new File(xLSFile.getFileName()), ws);
Sheet s = workbook.getSheet(0);
System.out.println("Sheet Content::" + s.getName());
readDataSheet(s);
workbook.close();
} catch (Exception e) {
e.printStackTrace();
}
return xLSContainer;
}
private void readDataSheet(Sheet s) {
xLSContainer = new XLSContainer();
int noOfRows = s.getRows();
int noOfCols = s.getColumns();
for (int i = 0; i < noOfRows; i++) {
Vector item = new Vector();
for (int j = 0; j < noOfCols; j++) {
if (s.getCell(j, i).getContents() == "") {
item.add("");
} else {
item.add(s.getCell(j, i).getContents());
}
}
if (i == 0) {
xLSContainer.addHeader(item);
}else{
xLSContainer.addRow(item);
}
}
}
अंत में मैंने पीओआई एपीआई छोड़ दी और मुझे परिणाम मिला जो मैं jxl.jar का उपयोग करना चाहता था। यह अभी ठीक काम करता है। – Harsha