في تطوير البرمجيات المعاصرة، تلعب القدرة على استخراج ومعالجة البيانات الوصفية من الملفات دورًا محوريًا في التطبيقات المختلفة. توفر البيانات التعريفية، التي تشمل بيانات مثل التأليف وتواريخ الإنشاء وخصائص المستند، رؤى قيمة حول الملفات وتسهل إدارة الملفات بشكل فعال. بالنسبة لملفات Excel بتنسيق .xlsx على وجه التحديد، فقد أثبت الوصول إلى البيانات التعريفية برمجيًا أنه مفيد بشكل خاص. يتعمق هذا الدليل في عملية كيفية قراءة البيانات التعريفية من XLSX باستخدام لغة برمجة Java. ستجد هنا الخطوات الأساسية بالإضافة إلى مثال التعليمات البرمجية الذي يوضح كيفية قراءة البيانات التعريفية لـ XLSX باستخدام Java.
خطوات قراءة البيانات التعريفية من XLSX باستخدام Java
- قم بإعداد IDE الخاص بك لاستخدام GroupDocs.Metadata for Java لاستخراج البيانات التعريفية من ملفات XLSX
- قم بإنشاء مثيل للفئة Metadata، وقم بتمرير مسار الملف لملف XLSX كوسيطة إلى منشئه
- قم بإنشاء قاعدة أو شرط لفحص كافة سمات بيانات التعريف
- تحديد شرط للأسلوب Metadata.findProperties
- حلقة من خلال الخصائص المستردة
يعد XLSX بمثابة تنسيق ملف مستخدم على نطاق واسع لجداول البيانات، ولا سيما المرتبط ببرنامج Microsoft Excel. إلى جانب البيانات الفعلية لجدول البيانات، تشتمل ملفات XLSX على بيانات وصفية توضح بالتفصيل الجوانب المختلفة للملف. تتضمن هذه البيانات التعريفية معلومات مثل عنوان المستند والتأليف وتاريخ الإنشاء والتعديل والمزيد. يؤدي الوصول برمجيًا إلى بيانات التعريف هذه إلى تمكين المطورين من أتمتة المهام أو إجراء التحليل أو إثراء تجارب المستخدم داخل تطبيقاتهم. تتوافق التعليمات المقدمة مع أنظمة التشغيل الشائعة مثل Windows وmacOS وLinux، على افتراض تثبيت Java لديك. ليست هناك حاجة إلى عمليات تثبيت برامج إضافية لاستخراج البيانات التعريفية لـ XLSX في Java. بعد تكوين المكتبة الموصى بها وضبط مسارات الملفات وفقًا لذلك، يجب أن يتم دمج الكود التالي في مشاريعك بسلاسة ودون أي مشاكل.
رمز لقراءة البيانات التعريفية من XLSX باستخدام Java
import com.groupdocs.metadata.Metadata; | |
import com.groupdocs.metadata.core.FileFormat; | |
import com.groupdocs.metadata.core.IReadOnlyList; | |
import com.groupdocs.metadata.core.MetadataProperty; | |
import com.groupdocs.metadata.core.MetadataPropertyType; | |
import com.groupdocs.metadata.licensing.License; | |
import com.groupdocs.metadata.search.FallsIntoCategorySpecification; | |
import com.groupdocs.metadata.search.OfTypeSpecification; | |
import com.groupdocs.metadata.search.Specification; | |
import com.groupdocs.metadata.tagging.Tags; | |
import java.util.Calendar; | |
import java.util.Date; | |
import java.util.regex.Matcher; | |
import java.util.regex.Pattern; | |
public class ReadMetadataFromXLSXUsingJava { | |
public static void main(String[] args) { | |
// Set License to avoid the limitations of Metadata library | |
License license = new License(); | |
license.setLicense("GroupDocs.Metadata.lic"); | |
Metadata metadata = new Metadata("input.xlsx"); | |
if (metadata.getFileFormat() != FileFormat.Unknown && !metadata.getDocumentInfo().isEncrypted()) { | |
System.out.println(); | |
// Fetch all metadata properties that fall into a particular category | |
IReadOnlyList<MetadataProperty> properties = metadata.findProperties(new FallsIntoCategorySpecification(Tags.getContent())); | |
System.out.println("The metadata properties describing some characteristics of the file content: title, keywords, language, etc."); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties having a specific type and value | |
int year = Calendar.getInstance().get(Calendar.YEAR); | |
properties = metadata.findProperties(new OfTypeSpecification(MetadataPropertyType.DateTime).and(new ReadMetadataFromXLSXUsingJava().new YearMatchSpecification(year))); | |
System.out.println("All datetime properties with the year value equal to the current year"); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
// Fetch all properties whose names match the specified regex | |
Pattern pattern = Pattern.compile("^author|company|(.+date.*)$", Pattern.CASE_INSENSITIVE); | |
properties = metadata.findProperties(new ReadMetadataFromXLSXUsingJava().new RegexSpecification(pattern)); | |
System.out.println(String.format("All properties whose names match the following regex: %s", pattern.pattern())); | |
for (MetadataProperty property : properties) { | |
System.out.println(String.format("Property name: %s, Property value: %s", property.getName(), property.getValue())); | |
} | |
} | |
} | |
// Define your own specifications to filter metadata properties | |
public class YearMatchSpecification extends Specification { | |
public YearMatchSpecification(int year) { | |
setValue(year); | |
} | |
public final int getValue() { | |
return auto_Value; | |
} | |
private void setValue(int value) { | |
auto_Value = value; | |
} | |
private int auto_Value; | |
public boolean isSatisfiedBy(MetadataProperty candidate) { | |
Date date = candidate.getValue().toClass(Date.class); | |
if (date != null) { | |
Calendar calendar = Calendar.getInstance(); | |
calendar.setTime(date); | |
return getValue() == calendar.get(Calendar.YEAR); | |
} | |
return false; | |
} | |
} | |
public class RegexSpecification extends Specification { | |
private Pattern pattern; | |
public RegexSpecification(Pattern pattern) { | |
this.pattern = pattern; | |
} | |
@Override | |
public boolean isSatisfiedBy(MetadataProperty metadataProperty) { | |
Matcher matcher = pattern.matcher(metadataProperty.getName()); | |
return matcher.find(); | |
} | |
} | |
} |
بفضل مكتبة البيانات التعريفية، يعد استخراج الرؤى من البيانات التعريفية لملف XLSX باستخدام Java أمرًا مباشرًا. تتيح هذه المكتبة للمطورين الوصول إلى المعلومات الهامة المخزنة داخل ملفات XLSX ودمجها بسهولة في تطبيقاتهم. سواء أكانت إدارة المستندات تلقائية، أو إجراء تحليل البيانات، أو تحسين تجارب المستخدم، فإن الوصول برمجيًا إلى بيانات تعريف XLSX يقدم ثروة من الفرص لمطوري Java. تهانينا! لقد أتقنت بنجاح تقنية الحصول على بيانات تعريف XLSX في Java.
في محادثة سابقة، قدمنا برنامجًا تعليميًا مفصلاً حول استخراج البيانات الوصفية من ملفات DOCX باستخدام Java. للحصول على فهم أعمق لهذا الموضوع، نقترح الرجوع إلى دليلنا الشامل حول كيفية قراءة البيانات الوصفية من DOCX باستخدام Java.