العمل مع إدارة 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()) |