स्प्रेडशीट प्रबंधन के साथ काम करना
स्प्रेडशीट प्रबंधन के साथ कार्य करना
Workbook क्लास सभी स्प्रेडशीट ऑपरेशनों के लिए Aspose.Cells FOSS for .NET में मूल ऑब्जेक्ट है। यह WorksheetCollection, परिभाषित नामों, और सहेजने/लोड करने के जीवनचक्र तक पहुंच प्रदान करती है। यह गाइड फॉल्ट-टॉलरेंट लोडिंग, वर्कशीट संगठन, प्रिंट-लेआउट कॉन्फ़िगरेशन, और पंक्ति/स्तंभ/सेल लेआउट नियंत्रणों को कवर करता है।
मरम्मत विकल्पों के साथ वर्कबुक लोड करना
एक मौजूदा XLSX फ़ाइल लोड करने के लिए Workbook कन्स्ट्रक्टर को फ़ाइल पथ पास करें। TryRepairPackage और TryRepairXml को true पर सेट करके LoadOptions ऑब्जेक्ट प्रदान करें ताकि हल्की संरचनात्मक भ्रष्टाचार वाली फ़ाइलों की पुनर्प्राप्ति का प्रयास किया जा सके। जब फ़ाइल अपरिवर्तनीय हो तो एक WorkbookLoadException फेंका जाता है।
using Aspose.Cells_FOSS;
var options = new LoadOptions
{
TryRepairPackage = true,
TryRepairXml = true,
};
try
{
var wb = new Workbook("data.xlsx", options);
Console.WriteLine("Sheets: " + wb.Worksheets.Count);
Console.WriteLine("Cell A1: " + wb.Worksheets[0].Cells["A1"].StringValue);
}
catch (WorkbookLoadException ex)
{
Console.WriteLine("Unrecoverable: " + ex.Message);
}वर्कशीट्स जोड़ना और व्यवस्थित करना
Workbook.Worksheets एक WorksheetCollection लौटाता है। नाम द्वारा नया वर्कशीट जोड़ने के लिए Add(name) को कॉल करें; यह मेथड नई शीट का इंडेक्स लौटाता है। शून्य-आधारित इंडेक्स या नाम द्वारा वर्कशीट्स तक पहुंचें। फ़ाइल खोलते समय कौन सा टैब सक्रिय रहेगा, इसे नियंत्रित करने के लिए WorksheetCollection.ActiveSheetName सेट करें।
using Aspose.Cells_FOSS;
var wb = new Workbook();
// Rename the default sheet
wb.Worksheets[0].Name = "Summary";
// Add sheets
var dataIdx = wb.Worksheets.Add("Data");
var archiveIdx = wb.Worksheets.Add("Archive");
// Set active sheet
wb.Worksheets.ActiveSheetName = "Data";
// Write to sheets by name
wb.Worksheets["Summary"].Cells["A1"].PutValue("Overview total");
wb.Worksheets["Data"].Cells["A1"].PutValue("Raw rows start here");
wb.Save("organised.xlsx");
// Verify
var loaded = new Workbook("organised.xlsx");
Console.WriteLine("Active: " + loaded.Worksheets.ActiveSheetName);
Console.WriteLine("Sheet count: " + loaded.Worksheets.Count);वर्कशीट्स को छिपाना और दिखाना
शीट को हटाए बिना छिपाने के लिए Worksheet.VisibilityType को VisibilityType.Hidden पर सेट करें। छिपी हुई शीट्स XLSX फ़ाइल में संरक्षित रहती हैं और VisibilityType.Visible सेट करके फिर दिखाई दे सकती हैं। टैब का रंग Worksheet.TabColor के माध्यम से सेट किया जाता है।
using Aspose.Cells_FOSS;
var wb = new Workbook();
wb.Worksheets[0].Name = "Visible";
var hiddenIdx = wb.Worksheets.Add("Internal");
var hiddenSheet = wb.Worksheets[hiddenIdx];
hiddenSheet.VisibilityType = VisibilityType.Hidden;
hiddenSheet.Cells["A1"].PutValue("Internal data");
wb.Worksheets["Visible"].TabColor = Color.FromArgb(255, 70, 130, 180);
wb.Save("hidden.xlsx");पृष्ठ सेटअप को कॉन्फ़िगर करना
Worksheet.PageSetup सभी प्रिंट-संबंधी गुणों को उजागर करता है। पोर्ट्रेट और लैंडस्केप के बीच स्विच करने के लिए PageOrientationType का उपयोग करें। कागज़ का आकार चुनने के लिए PaperSizeType का उपयोग करें। प्रिंट एरिया को PrintArea से परिभाषित करें, दोहराए जाने वाली पंक्तियों/स्तंभों को PrintTitleRows/PrintTitleColumns से सेट करें, और मैन्युअल पेज ब्रेक जोड़ने के लिए AddHorizontalPageBreak और AddVerticalPageBreak का उपयोग करें।
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Sample data
for (var r = 0; r < 60; r++)
ws.Cells[r, 0].PutValue("Row " + (r + 1));
var ps = ws.PageSetup;
ps.Orientation = PageOrientationType.Landscape;
ps.PaperSize = PaperSizeType.PaperA4;
ps.LeftMarginInch = 0.5d;
ps.RightMarginInch = 0.5d;
ps.TopMarginInch = 0.75d;
ps.BottomMarginInch = 0.75d;
ps.PrintArea = "$A$1:$H$60";
ps.PrintTitleRows = "$1:$1";
ps.CenterHeader = "Sales Report";
ps.LeftFooter = "Confidential";
ps.RightFooter = "Page &P of &N";
ps.PrintGridlines = true;
ps.CenterHorizontally = true;
ps.AddHorizontalPageBreak(30);
wb.Save("paged.xlsx");
var loaded = new Workbook("paged.xlsx");
Console.WriteLine("Orientation: " + loaded.Worksheets[0].PageSetup.Orientation);
Console.WriteLine("Print area: " + loaded.Worksheets[0].PageSetup.PrintArea);पंक्तियों और कॉलम का आकार निर्धारण
इंडेक्स द्वारा Worksheet.Cells.Rows तक पहुँचें ताकि एक Row ऑब्जेक्ट प्राप्त हो सके। पंक्ति की ऊँचाई नियंत्रित करने के लिए Row.Height (पॉइंट में) सेट करें। पंक्ति को छिपाने के लिए Row.IsHidden को true पर सेट करें। इंडेक्स द्वारा Worksheet.Cells.Columns तक पहुँचें ताकि एक Column ऑब्जेक्ट प्राप्त हो सके। Column.Width (अक्षर इकाइयों में) और Column.IsHidden सेट करें।
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Populate data
for (var r = 0; r < 5; r++)
for (var c = 0; c < 4; c++)
ws.Cells[r, c].PutValue($"R{r + 1}C{c + 1}");
// Row height and visibility
ws.Cells.Rows[0].Height = 28d; // Header taller
ws.Cells.Rows[3].IsHidden = true; // Hide row 4
// Column width and visibility
ws.Cells.Columns[0].Width = 22d;
ws.Cells.Columns[3].IsHidden = true;
wb.Save("layout.xlsx");
var loaded = new Workbook("layout.xlsx");
Console.WriteLine("Row 0 height: " + loaded.Worksheets[0].Cells.Rows[0].Height);
Console.WriteLine("Col 0 width: " + loaded.Worksheets[0].Cells.Columns[0].Width);सेल्स को मर्ज करना
Worksheet.Cells.Merge(firstRow, firstColumn, totalRows, totalColumns) को कॉल करके एक निरंतर आयताकार ब्लॉक को एकल सेल में मर्ज करें। मर्ज किया गया सेल शीर्ष-बाएँ सेल का मान विरासत में लेता है। लोड किए गए वर्कबुक में सभी मर्ज किए गए क्षेत्रों को पढ़ने के लिए Worksheet.Cells.MergedCells का उपयोग करें।
using Aspose.Cells_FOSS;
var wb = new Workbook();
var ws = wb.Worksheets[0];
// Title spanning A1:D1
ws.Cells["A1"].PutValue("Quarterly Sales Report");
ws.Cells.Merge(0, 0, 1, 4);
// Section header spanning A3:D3
ws.Cells["A3"].PutValue("Region: North");
ws.Cells.Merge(2, 0, 1, 4);
// Column headers
ws.Cells["A4"].PutValue("Product"); ws.Cells["B4"].PutValue("Q1");
ws.Cells["C4"].PutValue("Q2"); ws.Cells["D4"].PutValue("Q3");
wb.Save("report.xlsx");
var loaded = new Workbook("report.xlsx");
Console.WriteLine("Merged regions: " + loaded.Worksheets[0].Cells.MergedCells.Count);टिप्स और सर्वोत्तम प्रथाएँ
- फ़ाइल के Excel में खुलने पर सही टैब चयनित हो, यह सुनिश्चित करने के लिए
WorksheetCollection.ActiveSheetNameका उपयोग करें। - पृष्ठ मार्जिन इंच में सेट करें (
LeftMarginInch,TopMarginInch) — ये फ्लोटिंग-पॉइंट मान हैं, पूर्णांक नहीं। - पंक्तियों/कॉलमों को छिपाना (
IsHidden = true) उनका डेटा संरक्षित रखता है; पंक्ति को हटाने से डेटा स्थायी रूप से मिट जाता है। - हर परिवर्तन के बाद कॉल करने के बजाय बैच ऑपरेशन के अंत में
Workbook.Save()को एक बार कॉल करें। - डेटा शीट्स में कोशिकाओं को कम ही मिलाएँ — मर्ज्ड क्षेत्रों के कारण सॉर्टिंग और ऑटो-फ़िल्टर मर्ज्ड क्षेत्र में सही ढंग से काम नहीं करते।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
WorkbookLoadException लोड पर | XLSX में ZIP या XML भ्रष्ट | सेट LoadOptions.TryRepairPackage = true और TryRepairXml = true |
Add(name) गलत सूचकांक लौटाता है | शीट नाम को सूचकांक के रूप में उपयोग करना | Add() एक int सूचकांक लौटाता है; उस सूचकांक का उपयोग करके नई शीट तक पहुँचें |
| पंक्ति की ऊँचाई सहेजी नहीं गई | ऊँचाई 0 या नकारात्मक मान पर सेट की गई | ऐसे सकारात्मक डबल मान का उपयोग करें जैसे 28d |
| विलयित सेल गलत मान दिखा रहा है | मर्ज रेंज की शीर्ष-बाएँ नहीं वाली सेल में मान लिखा गया | Cells.Merge() को कॉल करने से पहले मान को शीर्ष-बाएँ सेल में लिखें |
| पेज ब्रेक दिखाई नहीं दे रहा है | AddHorizontalPageBreak को Save() के बाद कॉल किया गया | Save() को कॉल करने से पहले पृष्ठ विभाजन सेट करें |
FAQ
मैं कितनी वर्कशीट्स जोड़ सकता हूँ?
XLSX फ़ॉर्मेट प्रति वर्कबुक अधिकतम 1024 शीट्स का समर्थन करता है। व्यावहारिक सीमाएँ उपलब्ध मेमोरी और फ़ाइल आकार पर निर्भर करती हैं।
क्या मैं एक वर्कबुक से दूसरी वर्कबुक में वर्कशीट कॉपी कर सकता हूँ?
वर्तमान API सतह क्रॉस-वर्कबुक शीट कॉपीज़ के लिए CopyTo मेथड प्रदान नहीं करती है। दोनों फ़ाइलें लोड करें और डेटा को सेल दर सेल स्थानांतरित करें।
मैं वर्कशीट्स का क्रम कैसे बदलूँ?
WorksheetCollection अनुक्रमांक पहुंच का उपयोग करें और शीट्स का नाम बदलकर उनकी तार्किक क्रम बदलें। सीधे स्थितीय स्थानांतरण वर्तमान API सतह में उपलब्ध नहीं है।
मार्जिन के लिए PageSetup किस इकाई का उपयोग करता है?
सभी मार्जिन प्रॉपर्टीज़ (LeftMarginInch, TopMarginInch, आदि) इंच में हैं, जो double मान हैं।
क्या Cells.Merge मौजूदा सेल डेटा को प्रतिस्थापित करता है?
बाएँ-ऊपर की सेल का मान संरक्षित रहता है; अन्य मर्ज की गई सेल्स के मान साफ़ कर दिए जाते हैं।
API Reference सारांश
| क्लास / मेथड | विवरण |
|---|---|
Workbook | रूट ऑब्जेक्ट — बनाएं, लोड करें, वर्कबुक सहेजें |
Workbook.Worksheets | वापस देता है WorksheetCollection |
Workbook.Save(path) | वर्कबुक को XLSX में सहेजें |
WorksheetCollection.Add(name) | नाम द्वारा नया वर्कशीट जोड़ें |
WorksheetCollection.ActiveSheetName | फ़ाइल खोलने पर सक्रिय टैब |
Worksheet.VisibilityType | VisibilityType.Hidden or Visible |
Worksheet.TabColor | टैब रंग (Color) |
Worksheet.PageSetup | प्रिंट लेआउट सेटिंग्स |
PageSetup.Orientation | PageOrientationType.Landscape या Portrait |
PageSetup.PaperSize | PaperSizeType.PaperA4, आदि. |
PageSetup.AddHorizontalPageBreak(row) | क्षैतिज पृष्ठ विभाजन सम्मिलित करें |
Cells.Rows[index].Height | पंक्तियों की ऊँचाई बिंदुओं में |
Cells.Rows[index].IsHidden | पंक्ति छुपाएँ/दिखाएँ |
Cells.Columns[index].Width | अक्षर इकाइयों में कॉलम की चौड़ाई |
Cells.Columns[index].IsHidden | कॉलम छिपाएँ/दिखाएँ |
Cells.Merge(row, col, numRows, numCols) | एक आयताकार ब्लॉक को मिलाएँ |
Cells.MergedCells | शीट में मर्ज किए गए क्षेत्रों की सूची |
LoadOptions.TryRepairPackage | लोड पर ZIP मरम्मत का प्रयास करें |
LoadOptions.TryRepairXml | लोड पर XML मरम्मत का प्रयास करें |
WorkbookLoadException | जब फ़ाइल अपरिवर्तनीय हो तो फेंका जाता है |