العمل مع إدارة Spreadsheet

العمل مع إدارة Spreadsheet

العمل مع إدارة Spreadsheet

تظهر هذه الدورة كيفية إنشاء ، تحميل ، تعديل وحفظ كتب عمل Excel باستخدام Aspose.Cells FOSS لـ Java . سوف تتعلم كيف تعمل مع 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

تحميل دفتر عمل من ملف

إعطاء مسار ملف إلى الموقع. Workbook(fileName) البنّاء لفتح موجودة .xlsx أو .ods الملف. استخدم 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() يعيد a 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(),، والذي يعيد a Cells جمعية. استرداد a Cell بالاسم (مثل:. "A1") أو عن طريق مؤشر الصفوف/الصفوف على أساس صفر. استخدام 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) للكتابة إلى القرص. تنسيق الخروج هو يحددها تمديد الملفات، واستخدام .xlsx لكتب العمل في Excel.

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.استخدام بلوك محاولة مع الموارد لضمان يتم إطلاق الموارد الداخلية لكتاب العمل فورا بعد الاستخدام.

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 (Workbook wb = new Workbook(...))) للقيمة الكبيرة الملفات لتجنب الاحتفاظ بمقابض المستند مفتوحة.
  • تفضلين cells.get(row, column) انتهى cells.get(cellName) في حلقات ساخنة ؛ الحمل الزائد للأعداد الكاملة يتجنب تحليل أسماء الخلايا المتكررة.
  • اتصلوا workbook.getWorksheets().getCount() قبل الوصول إلى الصفحات حسب المؤشر لتجنب IndexOutOfBoundsException.
  • أسموا ورقتكم بوضوح مع: setName() بعد ذلك add() لذا يمكن للشفرة التالية أن ابحث عن الاسماء بدلا من التعريف الهش.
  • لا تعتمد على نتائج الصيغة مباشرة بعد تناول العلاج. setFormula();؛ إما أن تحفظ أولاً أو إعادة شحن إذا كنت بحاجة إلى قيم محوسبة في نفس الجلسة.

القضايا المشتركة

القضيةالسببإصلاح
WorkbookLoadException في new Workbook(fileName)مسار الملف غير صحيح أو ملف مقفلتحقق من وجود المسار وقراءته؛ أغلق التطبيقات الأخرى التي تحتوي على الملف
get(index) يرمي IndexOutOfBoundsExceptionمؤشر الصفحة بعد ذلك getCount() - 1التحقق sheets.getCount() قبل الوصول، واستخدام add() لإنشاء ورقة جديدة
الخلية الصيغية تعود فارغة getValue()الصيغ غير المحسوبة تلقائياً في الذاكرةحفظ دفتر العمل وإعادة تحميله للحصول على نتائج الصيغة
ملف الخروج فاسد بعد … save()تمديد الملفات الخطأتأكد من أن اسم الملف ينتهي بـ: .xlsx;؛ النمط يستنبأ من الإضافة

FAQ

كيف أعيد تسمية ورقة عمل؟?

استعادة الملفات Worksheet كائن حسب المؤشر من WorksheetCollection و اتصل به setName(name) مع اسم العرض الجديد:

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

كيف يمكنني التحقق من عدد الصفحات التي يحتوي عليها دفتر العمل؟?

اتصلوا getCount() في WorksheetCollection أعادها Workbook.getWorksheets() للحصول على العدد الإجمالي للورقات:

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

هل يمكنني إضافة العديد من الصفحات في مكالمة واحدة؟?

لا، اتصل بي. worksheets.add(sheetName) مرة واحدة لكل ورقة. كل مكالمة تعيد مؤشر الموقع ورقة جديدة تم إنشاؤها.

كيف يمكنني التحقق من نوع قيمة الخلية؟?

استعادة الملفات Cell بالاسم واللقب getType(),، والذي يعيد a CellValueType قيمة enum:

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

إشارة API

الفئة / الطريقةوصف
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)يعود a Cell بالاسم (مثل “A1”)
Cells.get(row, column)يعود a Cell على أساس الصفر في صف/عمود
Cell.putValue(value)يكتب قيمة إلى الخلية
Cell.getValue()تقرأ قيمة الخلية على أنها: Object
Cell.getStringValue()يقرأ قيمة الخلية كـ: String
Cell.setFormula(formula)يضع سلسلة صيغ (مثل “=SUM(A1:A2)”)
LoadOptionsتكوين لتحميل دفتر العمل
SaveFormatعدد ثابتات الشكل (الشكل يُستنتج من تمديد الملف، لا يتم نقله إلى save())

انظر أيضا

 العربية