حماية وإلغاء الحماية لورق العمل
حماية الأوراق العمل
عندما تكون ورقة العمل محمية، تقتصر الإجراءات التي يمكن للمستخدم القيام بها. على سبيل المثال، لا يمكنه إدخال البيانات، أو إدراج أو حذف الصفوف أو الأعمدة إلخ. إجمالًا، الخيارات العامة للحماية في Microsoft Excel هي:
- المحتويات
- الكائنات
- السيناريوهات
الورقات المحمية لا تخفي أو تحمي البيانات الحساسة، لذا فإنها تختلف عن تشفير الملف. بشكل عام، حماية ورقة العمل مناسبة لأغراض العرض التقديمي. إنها تمنع المستخدم النهائي من تعديل البيانات والمحتوى والتنسيق في ورقة العمل.
إضافة أو إزالة الحماية
توفر Aspose.Cells فئة، Workbook، التي تمثل ملف Microsoft Excel. تحتوي فئة Workbook على مجموعة من الصفحات والتي تسمح بالوصول إلى كل ورقة عمل في ملف Excel. تمثل ورقة العمل بواسطة الفئة Worksheet.
توفر فئة الورقة العمل الطريقة Protect التي تستخدم لتطبيق الحماية على ورقة عمل. تقبل الطريقة Protect المعلمات التالية:
- نوع الحماية، نوع الحماية المطبقة على ورقة العمل. يتم تطبيق نوع الحماية بمساعدة تعداد ProtectionType.
- كلمة المرور الجديدة ، كلمة المرور الجديدة المستخدمة لحماية ورقة العمل.
- كلمة مرور قديمة، كلمة المرور القديمة، إذا كانت ورقة العمل محمية بالفعل بكلمة مرور. إذا لم تكن ورقة العمل محمية بكلمة مرور بالفعل، فقط قم بتمرير قيمة فارغة.
تحتوي تعداد ProtectionType على أنواع الحمايات المحددة مسبقًا التالية:
أنواع الحماية | الوصف |
---|---|
ALL | لا يمكن للمستخدم تعديل أي شيء على هذه الورقة |
CONTENTS | لا يمكن للمستخدم إدخال البيانات في هذه الورقة |
OBJECTS | لا يمكن للمستخدم تعديل كائنات الرسم |
SCENARIOS | لا يمكن للمستخدم تعديل السيناريوهات المحفوظة |
STRUCTURE | لا يمكن للمستخدم تعديل الهيكل المحفوظ |
WINDOWS | لا يمكن للمستخدم تعديل النوافذ المحفوظة |
NONE | لا حماية |
المثال أدناه يوضح كيفية حماية ورقة عمل بكلمة مرور.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(ProtectingWorksheet.class) + "worksheets/"; | |
// Instantiating a Excel object by excel file path | |
Workbook excel = new Workbook(dataDir + "book1.xls"); | |
// Accessing the first worksheet in the Excel file | |
WorksheetCollection worksheets = excel.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
Protection protection = worksheet.getProtection(); | |
// The following 3 methods are only for Excel 2000 and earlier formats | |
protection.setAllowEditingContent(false); | |
protection.setAllowEditingObject(false); | |
protection.setAllowEditingScenario(false); | |
// Protects the first worksheet with a password "1234" | |
protection.setPassword("1234"); | |
// Saving the modified Excel file in default format | |
excel.save(dataDir + "ProtectingWorksheet_out.xls"); | |
// Print Message | |
System.out.println("Sheet protected successfully."); |
بعد استخدام الكود أعلاه لحماية ورقة العمل، تحقق من الحماية على ورقة العمل عن طريق فتحها. بمجرد فتح الملف ومحاولة إضافة بعض البيانات إلى ورقة العمل، يتم عرض الحوار التالي:
تحذير يفيد بعدم إمكانية للمستخدم تعديل ورقة العمل
للعمل على ورقة العمل، قم بإلغاء حماية الورقة العمل بتحديد الحماية ثم إلغاء حماية الورقة من عنصر قائمة الأدوات كما هو موضح أدناه.
اختيار عنصر قائمة إلغاء حماية الورقة
يتم فتح حوار يطالب بكلمة مرور.
إدخال كلمة المرور لإلغاء حماية الورقة
حماية بعض الخلايا
قد تكون هناك حالات معينة حيث تحتاج إلى قفل بعض الخلايا فقط في ورقة العمل. إذا كنت ترغب في قفل بعض الخلايا المحددة في ورقة العمل، يجب أن تقوم بفتح جميع الخلايا الأخرى في ورقة العمل. جميع الخلايا في ورقة العمل مهيئة مسبقًا للقفل، يمكنك التحقق من هذا بفتح أي ملف إكسيل في برنامج مايكروسوفت إكسيل والنقر على التنسيق|الخلايا… لعرض حوار مربع تنسيق الخلايا ثم النقر على علامة التبويب الحماية ورؤية خانة اختيار مسمى “مقفل” محددة افتراضيًا.
فيما يلي الطريقتان لتنفيذ المهمة.
الطريقة1:
تصف النقاط التالية كيفية قفل بعض الخلايا باستخدام MS Excel. ينطبق هذا الأسلوب على Microsoft Office Excel 97 و 2000 و 2002 و 2003 والإصدارات الأحدث.
-
حدد جدول البيانات بالكامل عن طريق النقر فوق زر تحديد الكل (المستطيل الرمادي مباشرة فوق رقم الصف للصف 1 وعلى اليسار من رقم العمود للعمود A).
-
انقر على الخلايا في قائمة التنسيق، ثم انقر على علامة التبويب الحماية، ثم قم بإلغاء تحديد خانة القفل.
هذا يفتح جميع الخلايا على الورقة العمل
- حدد فقط الخلايا التي تريد تأمينها وكرر الخطوة 2، ولكن هذه المرة حدد خانة القفل.
- في قائمة الأدوات، حدد الحماية، انقر على حماية الورقة، ثم انقر على موافق.
الأسلوب2:
في هذه الطريقة، نستخدم واجهة برمجة التطبيقات Aspose.Cells فقط للقيام بالمهمة.
المثال التالي يوضح كيفية تأمين بعض الخلايا في جدول البيانات. يتم فتح جميع الخلايا في جدول البيانات أولاً ثم يتم تأمين 3 خلايا (A1، B1، C1) فيه. أخيرًا، يتم حماية جدول البيانات. تحتوي الصف/العمود على واجهة برمجة التطبيقات (API) تحتوي بدورها على طريقة Locked. يمكنك استخدام هذه الطريقة لتأمين أو فتح الصف/العمود.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(ProtectingSpecificCellsinaWorksheet.class) + "worksheets/"; | |
// Create a new workbook. | |
Workbook wb = new Workbook(); | |
// Create a worksheet object and obtain the first sheet. | |
Worksheet sheet = wb.getWorksheets().get(0); | |
// Define the style object. | |
Style style; | |
// Define the styleflag object. | |
StyleFlag flag; | |
flag = new StyleFlag(); | |
flag.setLocked(true); | |
// Loop through all the columns in the worksheet and unlock them. | |
for (int i = 0; i <= 255; i++) { | |
style = sheet.getCells().getColumns().get(i).getStyle(); | |
style.setLocked(false); | |
sheet.getCells().getColumns().get(i).applyStyle(style, flag); | |
} | |
// Lock the three cells...i.e. A1, B1, C1. | |
style = sheet.getCells().get("A1").getStyle(); | |
style.setLocked(true); | |
sheet.getCells().get("A1").setStyle(style); | |
style = sheet.getCells().get("B1").getStyle(); | |
style.setLocked(true); | |
sheet.getCells().get("B1").setStyle(style); | |
style = sheet.getCells().get("C1").getStyle(); | |
style.setLocked(true); | |
sheet.getCells().get("C1").setStyle(style); | |
// Save the excel file. | |
wb.save(dataDir + "PSpecificCellsinaWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Cells protected successfully."); |
حماية صف في ورقة العمل
تسمح Aspose.Cells لك بقفل أي صف بسهولة في ورقة العمل. هنا، يمكننا الاستفادة من طريقة applyStyle() في فئة Row لتطبيق النمط على صف معين في ورقة العمل. تأخذ هذه الطريقة معها معلمتين: كائن Style وهيكل StyleFlag الذي يحتوي على جميع أعضاء التنسيق المطبقة.
يوضح المثال التالي كيفية تأمين صف في جدول البيانات. يتم فتح جميع الخلايا في جدول البيانات أولاً ثم يتم تأمين الصف الأول فيه. أخيرًا، يتم حماية جدول البيانات. تحتوي الصف/العمود على واجهة برمجة التطبيقات (API) الخاصة بها التي تحتوي على طريقة setCellLocked. يمكنك تأمين أو فتح الصف/العمود باستخدام هيكل StyleFlag.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(ProtectRowWorksheet.class) + "worksheets/"; | |
// Create a new workbook. | |
Workbook wb = new Workbook(); | |
// Create a worksheet object and obtain the first sheet. | |
Worksheet sheet = wb.getWorksheets().get(0); | |
// Define the style object. | |
Style style; | |
// Define the styleflag object. | |
StyleFlag flag; | |
// Loop through all the columns in the worksheet and unlock them. | |
for (int i = 0; i <= 255; i++) { | |
style = sheet.getCells().getRows().get(i).getStyle(); | |
style.setLocked(false); | |
flag = new StyleFlag(); | |
flag.setLocked(true); | |
sheet.getCells().getRows().get(i).applyStyle(style, flag); | |
} | |
// Get the first Roww style. | |
style = sheet.getCells().getRows().get(1).getStyle(); | |
// Lock it. | |
style.setLocked(true); | |
// Instantiate the flag. | |
flag = new StyleFlag(); | |
// Set the lock setting. | |
flag.setLocked(true); | |
// Apply the style to the first row. | |
sheet.getCells().getRows().get(1).applyStyle(style, flag); | |
sheet.protect(ProtectionType.ALL); | |
// Save the excel file. | |
wb.save(dataDir + "ProtectRowWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Row protected successfully."); |
حماية عمود في ورقة العمل
تسمح Aspose.Cells لك بقفل أي عمود بسهولة في ورقة العمل. هنا، يمكننا الاستفادة من الطريقة applyStyle() في فئة Column لتطبيق النمط على عمود معين في ورقة العمل. تأخذ هذه الطريقة معها معلمتين: كائن Style وهيكل StyleFlag الذي يحتوي على جميع أعضاء التنسيق المطبقة.
يوضح المثال التالي كيفية تأمين عمود في جدول البيانات. يتم فتح جميع الخلايا في جدول البيانات أولاً ثم يتم تأمين العمود الأول فيه. أخيرًا، يتم حماية جدول البيانات. تحتوي الصف/العمود على واجهة برمجة التطبيقات (API) الخاصة بها التي تحتوي على طريقة setCellLocked. يمكنك تأمين أو فتح الصف/العمود باستخدام هيكل StyleFlag.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(ProtectColumnWorksheet.class) + "worksheets/"; | |
// Create a new workbook. | |
Workbook wb = new Workbook(); | |
// Create a worksheet object and obtain the first sheet. | |
Worksheet sheet = wb.getWorksheets().get(0); | |
// Define the style object. | |
Style style; | |
// Define the styleflag object. | |
StyleFlag flag; | |
// Loop through all the columns in the worksheet and unlock them. | |
for (int i = 0; i <= 255; i++) { | |
style = sheet.getCells().getColumns().get(i).getStyle(); | |
style.setLocked(false); | |
flag = new StyleFlag(); | |
flag.setLocked(true); | |
sheet.getCells().getColumns().get(i).applyStyle(style, flag); | |
} | |
// Get the first column style. | |
style = sheet.getCells().getColumns().get(0).getStyle(); | |
// Lock it. | |
style.setLocked(true); | |
// Instantiate the flag. | |
flag = new StyleFlag(); | |
// Set the lock setting. | |
flag.setLocked(true); | |
// Apply the style to the first column. | |
sheet.getCells().getColumns().get(0).applyStyle(style, flag); | |
sheet.protect(ProtectionType.ALL); | |
// Save the excel file. | |
wb.save(dataDir + "PColumnWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Column protected successfully."); |
إلغاء حماية ورقة العمل
حماية أوراق البيانات وإعدادات الحماية المتقدمة منذ إكسل XP يناقشان أساليب مختلفة لحماية أوراق البيانات. ماذا لو احتاج المطور إلى إزالة الحماية من ورقة بيانات محمية أثناء التشغيل حتى يمكن إجراء بعض التغييرات على الملف؟ يمكن القيام بذلك بسهولة باستخدام Aspose.Cells.
استخدام Microsoft Excel
لإزالة الحماية من ورقة العمل:
من قائمة الأدوات, حدد الحماية تلاها إلغاء حماية الورقة.
تحديد إلغاء حماية الورقة
يتم إزالة الحماية، ما لم تكن الورقة منحماة بكلمة مرور. في هذه الحالة، يتم توجيه صندوق حوار لإدخال كلمة المرور.
إدخال كلمة المرور لإلغاء حماية الورقة
استخدام Aspose.Cells
يمكن إلغاء حماية الورقة عن طريق استدعاء فئة Worksheet وطريقة Unprotect. يمكن استخدام الطريقة Unprotect بطريقتين، كما هو موضح أدناه.
إلغاء حماية ورقة محمية بشكل بسيط
ورقة محمية بشكل بسيط هي ورقة ليست محمية بكلمة مرور. يمكن إلغاء حماية مثل هذه الأوراق عن طريق استدعاء الطريقة unprotect بدون تمرير معلمة.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UnprotectingSimplyProtectedWorksheet.class) + "worksheets/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
WorksheetCollection worksheets = workbook.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
Protection protection = worksheet.getProtection(); | |
// The following 3 methods are only for Excel 2000 and earlier formats | |
protection.setAllowEditingContent(false); | |
protection.setAllowEditingObject(false); | |
protection.setAllowEditingScenario(false); | |
// Unprotecting the worksheet | |
worksheet.unprotect(); | |
// Save the excel file. | |
workbook.save(dataDir + "USPWorksheet_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Worksheet unprotected successfully."); |
إلغاء حماية ورقة محمية بكلمة مرور
ورقة محمية بكلمة مرور هي واحدة محمية بكلمة المرور. يمكن إلغاء حماية مثل هذه الأوراق عن طريق استدعاء النسخة المحمية من طريقة Unprotect التي تأخذ كلمة المرور كمعلمة.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(UnprotectProtectSheet.class) + "worksheets/"; | |
// Instantiating a Workbook object | |
Workbook workbook = new Workbook(dataDir + "book1.xls"); | |
WorksheetCollection worksheets = workbook.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
// Unprotecting the worksheet | |
worksheet.unprotect("aspose"); | |
// Save the excel file. | |
workbook.save(dataDir + "UnprotectProtectSheet_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Worksheet unprotected successfully."); |
إعدادات الحماية المتقدمة منذ Excel XP
حماية الأوراق تناول حماية الورقة في Microsoft Excel 97 و 2000. ولكن منذ إصدار Excel 2002 أو XP، أضافت Microsoft العديد من إعدادات الحماية المتقدمة. تقوم هذه الإعدادات بتقييد أو السماح للمستخدمين بـ:
- حذف الصفوف أو الأعمدة.
- تحرير المحتويات أو الكائنات أو السيناريوهات.
- تنسيق الخلايا أو الصفوف أو الأعمدة.
- إدراج الصفوف أو الأعمدة أو الروابط الفرعية.
- تحديد الخلايا المقفلة أو غير المقفلة.
- استخدام الجداول المحورية وأكثر من ذلك بكثير.
Aspose.Cells يدعم جميع إعدادات الحماية المتقدمة المقدمة من قبل Excel XP والإصدارات اللاحقة.
إعدادات الحماية المتقدمة باستخدام Excel XP والإصدارات اللاحقة
لعرض إعدادات الحماية المتاحة في Excel XP:
-
من القائمة الأدوات, حدد الحماية تلاها حماية الورقة. يتم عرض مربع حوار.
مربع حوار لإظهار خيارات الحماية في Excel XP
- السماح أو تقييد ميزات صفحات العمل أو تطبيق كلمة مرور.
إعدادات الحماية المتقدمة باستخدام Aspose.Cells
تدعم Aspose.Cells جميع إعدادات الحماية المتقدمة.
توفر Aspose.Cells فئة، Workbook، التي تمثل ملف Microsoft Excel. تحتوي فئة Workbook على مجموعة WorksheetCollection تتيح الوصول إلى كل صفحة عمل (ورقة عمل) في ملف Excel. تُمثّل ورقة العمل بواسطة فئة Worksheet.
يوفر فئة Worksheet خاصية Protection التي تُستخدم لتطبيق هذه الإعدادات المتقدمة للحماية. تكون خاصية Protection في الواقع كائنًا من فئة Protection الذي يغلّف عدة خصائص بوليانية لتمكين أو تعديل القيود.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(AdvancedProtectionSettingsUsingAsposeCells.class) + "worksheets/"; | |
// Instantiating a Workbook object by excel file path | |
Workbook excel = new Workbook(dataDir + "book1.xlsx"); | |
WorksheetCollection worksheets = excel.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
Protection protection = worksheet.getProtection(); | |
// Restricting users to delete columns of the worksheet | |
protection.setAllowDeletingColumn(false); | |
// Restricting users to delete row of the worksheet | |
protection.setAllowDeletingRow(false); | |
// Restricting users to edit contents of the worksheet | |
protection.setAllowEditingContent(false); | |
// Restricting users to edit objects of the worksheet | |
protection.setAllowEditingObject(false); | |
// Restricting users to edit scenarios of the worksheet | |
protection.setAllowEditingScenario(false); | |
// Restricting users to filter | |
protection.setAllowFiltering(false); | |
// Allowing users to format cells of the worksheet | |
protection.setAllowFormattingCell(true); | |
// Allowing users to format rows of the worksheet | |
protection.setAllowFormattingRow(true); | |
// Allowing users to insert columns in the worksheet | |
protection.setAllowInsertingColumn(true); | |
// Allowing users to insert hyperlinks in the worksheet | |
protection.setAllowInsertingHyperlink(true); | |
// Allowing users to insert rows in the worksheet | |
protection.setAllowInsertingRow(true); | |
// Allowing users to select locked cells of the worksheet | |
protection.setAllowSelectingLockedCell(true); | |
// Allowing users to select unlocked cells of the worksheet | |
protection.setAllowSelectingUnlockedCell(true); | |
// Allowing users to sort | |
protection.setAllowSorting(true); | |
// Allowing users to use pivot tables in the worksheet | |
protection.setAllowUsingPivotTable(true); | |
// Saving the modified Excel file Excel XP format | |
excel.save(dataDir + "APSettingsUsingAsposeCells_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Worksheet protected successfully."); |
فيما يلي مثال تطبيقي صغير. يفتح ملف Excel ويستخدم معظم إعدادات الحماية المتقدمة المدعومة من Excel XP والإصدارات اللاحقة.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(AdvancedProtection.class) + "worksheets/"; | |
// Instantiating a Workbook object by excel file path | |
Workbook excel = new Workbook(dataDir + "book1.xls"); | |
WorksheetCollection worksheets = excel.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
Protection protection = worksheet.getProtection(); | |
// Restricting users to delete columns of the worksheet | |
protection.setAllowDeletingColumn(false); | |
// Restricting users to delete row of the worksheet | |
protection.setAllowDeletingRow(false); | |
// Restricting users to edit contents of the worksheet | |
protection.setAllowEditingContent(false); | |
// Restricting users to edit objects of the worksheet | |
protection.setAllowEditingObject(false); | |
// Restricting users to edit scenarios of the worksheet | |
protection.setAllowEditingScenario(false); | |
// Restricting users to filter | |
protection.setAllowFiltering(false); | |
// Allowing users to format cells of the worksheet | |
protection.setAllowFormattingCell(true); | |
// Allowing users to format rows of the worksheet | |
protection.setAllowFormattingRow(true); | |
// Allowing users to insert columns in the worksheet | |
protection.setAllowInsertingColumn(true); | |
// Allowing users to insert hyperlinks in the worksheet | |
protection.setAllowInsertingHyperlink(true); | |
// Allowing users to insert rows in the worksheet | |
protection.setAllowInsertingRow(true); | |
// Allowing users to select locked cells of the worksheet | |
protection.setAllowSelectingLockedCell(true); | |
// Allowing users to select unlocked cells of the worksheet | |
protection.setAllowSelectingUnlockedCell(true); | |
// Allowing users to sort | |
protection.setAllowSorting(true); | |
// Allowing users to use pivot tables in the worksheet | |
protection.setAllowUsingPivotTable(true); | |
// Saving the modified Excel file Excel XP format | |
excel.save(dataDir + "AdvancedProtection_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Worksheet protected successfully."); |
مشكلة قفل الخلية
إذا كنت ترغب في تقييد مستخدمين من تحرير الخلايا يجب أن تكون الخلايا مقفلة قبل تطبيق أي إعدادات حماية. وإلا يمكن تحرير الخلايا حتى لو تم حماية صفحة العمل. في Microsoft Excel XP، يمكن قفل الخلايا من خلال مربع الحوار التالي:
مربع حوار لقفل الخلايا في Excel XP
من الممكن قفل الخلايا باستخدام واجهة برمجة التطبيقات Aspose.Cells أيضًا. كل خلية تحتوي على واجهة برمجة تطبيقات Style تحتوي بدورها على طريقة setLocked. استخدمها لقفل أو فتح الخلايا.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java | |
// The path to the documents directory. | |
String dataDir = Utils.getSharedDataDir(LockCell.class) + "worksheets/"; | |
// Instantiating a Workbook object by excel file path | |
Workbook excel = new Workbook(dataDir + "Book1.xlsx"); | |
WorksheetCollection worksheets = excel.getWorksheets(); | |
Worksheet worksheet = worksheets.get(0); | |
worksheet.getCells().get("A1").getStyle().setLocked(true); | |
// Saving the modified Excel file Excel XP format | |
excel.save(dataDir + "LockCell_out.xls", FileFormatType.EXCEL_97_TO_2003); | |
// Print Message | |
System.out.println("Cell Locked successfully."); |