स्प्रेडशीट प्रबंधन के साथ कार्य करना

स्प्रेडशीट प्रबंधन के साथ कार्य करना

स्प्रेडशीट प्रबंधन के साथ काम करना

यह गाइड दिखाता है कि Aspose.Cells FOSS for Java का उपयोग करके Excel वर्कबुक कैसे बनाएँ, लोड करें, संशोधित करें और सहेजें। आप Workbook, WorksheetCollection, Worksheet, Cells, और Cell क्लासों के साथ अंत-से-अंत स्प्रेडशीट प्रबंधन कैसे किया जाता है, सीखेंगे।


नया वर्कबुक बनाना

बिना-आर्ग्युमेंट वाले कंस्ट्रक्टर का उपयोग करके एक खाली वर्कबुक बनाएँ। Sheet1 नामक एकल खाली वर्कशीट स्वचालित रूप से जोड़ी जाती है।

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1

फ़ाइल से वर्कबुक लोड करना

एक मौजूदा .xlsx या .ods फ़ाइल खोलने के लिए Workbook(fileName) कंस्ट्रक्टर को फ़ाइल पथ पास करें। जब आपको फ़ॉर्मेट डिटेक्शन या पासवर्ड हैंडलिंग को नियंत्रित करने की आवश्यकता हो तो Workbook(fileName, options) का उपयोग करके LoadOptions प्रदान करें।

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;

// Simple load
Workbook workbook = new Workbook("data/report.xlsx");

// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);

स्ट्रीम से वर्कबुक लोड करना

Workbook(stream) और Workbook(stream, options) किसी भी java.io.InputStream को स्वीकार करते हैं। यह तब उपयोगी होता है जब फ़ाइल नेटवर्क संसाधन, डेटाबेस BLOB, या मेमोरी में बाइट एरे से आती है।

import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;

try (InputStream is = new FileInputStream("data/template.xlsx")) {
    Workbook workbook = new Workbook(is);
    System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}

वर्कशीट्स तक पहुँच और प्रबंधन

Workbook.getWorksheets() एक WorksheetCollection लौटाता है। इंडेक्स या नाम द्वारा शीट्स प्राप्त करें, सभी शीट्स पर इटरैट करें, और आवश्यकता अनुसार शीट्स जोड़ें या हटाएँ।

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();

// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1

// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");

// Iterate all sheets
for (Worksheet ws : sheets) {
    System.out.println("Sheet: " + ws.getName());
}

// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());

सेल मानों को पढ़ना और लिखना

सेल तक नेविगेट करने के लिए Worksheet.getCells() का उपयोग करें, जो एक Cells संग्रह लौटाता है। नाम (जैसे "A1") या शून्य-आधारित पंक्ति/स्तंभ इंडेक्स द्वारा एक Cell प्राप्त करें। प्रिमिटिव मान लिखने के लिए putValue() का उपयोग करें और उन्हें पढ़ने के लिए getValue() / getStringValue() का उपयोग करें।

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();

// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");

// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");

Cell b2 = cells.get(1, 1);
b2.putValue(1200);

// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue());       // 1200

सेल फ़ॉर्मूले सेट करना

सेल को setFormula() के माध्यम से फ़ॉर्मूला स्ट्रिंग असाइन करें। Aspose.Cells वर्कबुक को सहेजे जाने पर या जब गणना स्पष्ट रूप से ट्रिगर की जाए, फ़ॉर्मूले का मूल्यांकन करता है।

import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;

Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();

cells.get("A1").putValue(100);
cells.get("A2").putValue(200);

Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)

वर्कबुक को सहेजना

डिस्क पर वर्कबुक लिखने के लिए Workbook.save(fileName) का उपयोग करें। आउटपुट फ़ॉर्मेट फ़ाइल एक्सटेंशन द्वारा निर्धारित होता है; Excel वर्कबुक के लिए .xlsx का उपयोग करें।

import com.aspose.cells.foss.Workbook;

Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");

// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");

संसाधनों को मुक्त करना

Workbook AutoCloseable को लागू करता है। उपयोग के बाद वर्कबुक के आंतरिक संसाधनों को शीघ्रता से मुक्त करने के लिए try-with-resources ब्लॉक का उपयोग करें।

import com.aspose.cells.foss.Workbook;

try (Workbook workbook = new Workbook("data/large.xlsx")) {
    workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automatically

टिप्स और सर्वोत्तम प्रथाएँ

  • बड़े फ़ाइलों के लिए हमेशा try-with-resources (try (Workbook wb = new Workbook(...))) का उपयोग करें ताकि फ़ाइल हैंडल खुला न रहे।
  • हॉट लूप्स में cells.get(cellName) की बजाय cells.get(row, column) को प्राथमिकता दें; इंटीजर ओवरलोड पुनः-पुन्हा सेल-नाम पार्सिंग से बचाता है।
  • इंडेक्स द्वारा शीट्स तक पहुँचने से पहले workbook.getWorksheets().getCount() को कॉल करें ताकि IndexOutOfBoundsException से बचा जा सके।
  • अपने शीट्स को स्पष्ट रूप से setName() के साथ add() के बाद नाम दें ताकि डाउनस्ट्रीम कोड उन्हें नाम से खोज सके, न कि नाज़ुक इंडेक्स से।
  • फ़ॉर्मूला परिणामों पर तुरंत setFormula() के बाद भरोसा न करें; पहले सहेजें या यदि आपको उसी सत्र में गणना किए गए मानों की आवश्यकता हो तो पुनः लोड करें।

सामान्य समस्याएँ

समस्याकारणसमाधान
WorkbookLoadException पर new Workbook(fileName)फ़ाइल पथ गलत है या फ़ाइल लॉक हैपथ मौजूद है और पढ़ा जा सकता है, यह सत्यापित करें; फ़ाइल को धारण करने वाले अन्य अनुप्रयोगों को बंद करें
get(index) फेंकता है IndexOutOfBoundsExceptionशीट इंडेक्स getCount() - 1 से आगे हैएक्सेस करने से पहले sheets.getCount() जांचें; नई शीट बनाने के लिए add() का उपयोग करें
फ़ॉर्मूला सेल खाली getValue() लौटाता हैफ़ॉर्मूले मेमोरी में स्वतः गणना नहीं होतेफ़ॉर्मूला परिणाम प्राप्त करने के लिए वर्कबुक को सहेजें और पुनः लोड करें
save() के बाद आउटपुट फ़ाइल भ्रष्ट हो गई हैफ़ाइल एक्सटेंशन गलत हैसुनिश्चित करें कि फ़ाइल नाम .xlsx पर समाप्त हो; फ़ॉर्मैट एक्सटेंशन से अनुमानित किया जाता है

FAQ

मैं किसी वर्कशीट का नाम कैसे बदलूँ?

इंडेक्स द्वारा WorksheetCollection से Worksheet ऑब्जेक्ट प्राप्त करें और नए डिस्प्ले नाम के साथ setName(name) को कॉल करें:

workbook.getWorksheets().get(0).setName("Sales Data");

मैं यह कैसे जांचूँ कि वर्कबुक में कितनी शीट्स हैं?

Workbook.getWorksheets() द्वारा लौटाए गए WorksheetCollection पर getCount() को कॉल करें ताकि कुल वर्कशीट्स की संख्या प्राप्त हो सके:

int count = workbook.getWorksheets().getCount();

क्या मैं एक ही कॉल में कई शीट्स जोड़ सकता हूँ?

संख्या। worksheets.add(sheetName) को प्रत्येक शीट पर एक बार कॉल करें। प्रत्येक कॉल नए बनाए गए शीट का सूचकांक लौटाता है।

मैं सेल मान के प्रकार की जाँच कैसे करूँ?

नाम से Cell प्राप्त करें और getType() को कॉल करें, जो एक CellValueType enum मान लौटाता है:

Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum value

API Reference सारांश

क्लास / मेथडविवरण
Workbook()एक खाली कार्यपुस्तिका बनाता है जिसमें एक खाली शीट होती है
Workbook(fileName)फ़ाइल पथ से एक कार्यपुस्तिका लोड करता है
Workbook(stream)एक InputStream से कार्यपुस्तिका लोड करता है
Workbook(fileName, options)कार्यपुस्तिका को LoadOptions के साथ लोड करता है
Workbook.getWorksheets()वापस देता है WorksheetCollection
Workbook.save(fileName)फ़ाइल में सहेजता है (फ़ॉर्मेट एक्सटेंशन से अनुमानित)
Workbook.save(stream, format)स्पष्ट SaveFormat के साथ स्ट्रीम में सहेजता है
WorksheetCollection.get(index)शून्य-आधारित सूचकांक द्वारा शीट वापस देता है
WorksheetCollection.get(name)नाम द्वारा शीट लौटाता है
WorksheetCollection.add(sheetName)नामित शीट जोड़ता है; उसका इंडेक्स लौटाता है
WorksheetCollection.getCount()वर्कबुक में शीटों की संख्या
WorksheetCollection.removeAt(sheetName)नाम द्वारा शीट हटाता है
Worksheet.getCells()इस शीट के लिए Cells संग्रह लौटाता है
Worksheet.getName() / setName()शीट टैब नाम प्राप्त करता है या सेट करता है
Cells.get(cellName)नाम द्वारा एक Cell लौटाता है (जैसे “A1”)
Cells.get(row, column)शून्य-आधारित पंक्ति/स्तंभ द्वारा एक Cell लौटाता है
Cell.putValue(value)सेल में मान लिखता है
Cell.getValue()सेल मान को Object के रूप में पढ़ता है
Cell.getStringValue()सेल मान को एक String के रूप में पढ़ता है
Cell.setFormula(formula)फ़ॉर्मूला स्ट्रिंग सेट करता है (उदा. “=SUM(A1:A2)”)
LoadOptionsवर्कबुक लोडिंग के लिए कॉन्फ़िगरेशन
SaveFormatफ़ॉर्मेट स्थिरांक का एनम (फ़ॉर्मेट फ़ाइल एक्सटेंशन से अनुमानित किया जाता है; save() को पास नहीं किया जाता)

यह भी देखें

 हिन्दी