การป้องกันแถวในเวิร์กชีตโดยใช้ Aspose.Cells

การแนะนำ

การทำงานกับไฟล์ Excel ด้วยโปรแกรมมักเป็นงานที่ไม่เพียงแต่ต้องจัดการข้อมูลเท่านั้น แต่ยังต้องปกป้องข้อมูลด้วย ไม่ว่าคุณจะต้องปกป้องข้อมูลที่ละเอียดอ่อนหรือป้องกันการแก้ไขโดยไม่ได้ตั้งใจ การปกป้องแถวในเวิร์กชีตก็ถือเป็นขั้นตอนที่สำคัญ ในบทช่วยสอนนี้ เราจะเจาะลึกถึงวิธีปกป้องแถวเฉพาะในเวิร์กชีต Excel โดยใช้ Aspose.Cells สำหรับ .NET เราจะแนะนำขั้นตอนที่จำเป็นทั้งหมด ตั้งแต่การเตรียมสภาพแวดล้อมของคุณไปจนถึงการนำคุณลักษณะการปกป้องไปใช้ในลักษณะที่เรียบง่ายและทำตามได้ง่าย

ข้อกำหนดเบื้องต้น

ก่อนที่คุณจะเริ่มปกป้องแถวในเวิร์กชีต คุณจะต้องมีบางสิ่งบางอย่างดังต่อไปนี้:

  1. Aspose.Cells สำหรับ .NET: ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง Aspose.Cells สำหรับ .NET ไว้ในเครื่องพัฒนาของคุณแล้ว หากคุณยังไม่ได้ติดตั้ง คุณสามารถดาวน์โหลดได้อย่างง่ายดายจากหน้าดาวน์โหลดเซลล์ Aspose.
  2. Visual Studio หรือ IDE .NET ใดๆ: หากต้องการนำโซลูชันนี้ไปใช้ คุณต้องมีการตั้งค่าสภาพแวดล้อมการพัฒนา Visual Studio เป็นตัวเลือกที่ดี แต่ IDE ที่เข้ากันได้กับ .NET ตัวใดก็ได้ก็สามารถใช้ได้
  3. ความรู้พื้นฐานเกี่ยวกับ C#: ความเข้าใจพื้นฐานการเขียนโปรแกรม C# จะช่วยให้คุณทำตามบทช่วยสอนและปรับเปลี่ยนโค้ดตัวอย่างให้เหมาะกับความต้องการของคุณ
  4. เอกสารประกอบ API ของ Aspose.Cells: ทำความคุ้นเคยกับเอกสาร Aspose.Cells สำหรับ .NET เพื่อรับภาพรวมของโครงสร้างคลาสและวิธีการที่ใช้ในไลบรารี หากคุณเตรียมทุกอย่างให้พร้อมแล้ว เราก็สามารถเริ่มดำเนินการได้เลย

แพ็คเกจนำเข้า

ในการเริ่มต้น คุณต้องนำเข้าแพ็คเกจที่จำเป็น ไลบรารีเหล่านี้มีความสำคัญต่อการโต้ตอบกับไฟล์ Excel ในโครงการ C# ของคุณ

using System.IO;
using Aspose.Cells;

เมื่อคุณได้นำเข้าแพ็คเกจที่จำเป็นแล้ว คุณสามารถเริ่มเขียนโค้ดได้ ตอนนี้เรามาแบ่งกระบวนการออกเป็นขั้นตอนย่อยๆ เพื่อให้คุณปฏิบัติตามได้ง่ายยิ่งขึ้น แต่ละขั้นตอนจะเน้นที่ส่วนเฉพาะของการใช้งาน เพื่อให้คุณเข้าใจและนำไปใช้ได้อย่างรวดเร็ว

ขั้นตอนที่ 1: สร้างสมุดงานและแผ่นงานใหม่

ก่อนที่คุณจะใช้การตั้งค่าการป้องกันใดๆ คุณต้องสร้างเวิร์กบุ๊กใหม่และเลือกเวิร์กชีตที่คุณต้องการใช้งาน นี่จะเป็นเอกสารการทำงานของคุณ

// เส้นทางไปยังไดเร็กทอรีเอกสาร
string dataDir = "Your Document Directory";
// สร้างไดเร็กทอรีหากยังไม่มีอยู่
bool IsExists = System.IO.Directory.Exists(dataDir);
if (!IsExists)
	System.IO.Directory.CreateDirectory(dataDir);
// สร้างสมุดงานใหม่
Workbook wb = new Workbook();
// สร้างวัตถุเวิร์กชีตและรับแผ่นงานแรก
Worksheet sheet = wb.Worksheets[0];

ในตัวอย่างนี้ เราจะสร้างเวิร์กบุ๊กใหม่ด้วยเวิร์กชีตเดียว (ซึ่งเป็นการตั้งค่าเริ่มต้นเมื่อคุณสร้างเวิร์กบุ๊กใหม่โดยใช้ Aspose.Cells) จากนั้น เราจะคว้าเวิร์กชีตแรกในเวิร์กบุ๊ก ซึ่งจะเป็นเป้าหมายสำหรับการป้องกันแถวของเรา

ขั้นตอนที่ 2: กำหนดสไตล์และวัตถุ StyleFlag

ขั้นตอนต่อไปคือการกำหนดอ็อบเจ็กต์สไตล์และแฟล็กสไตล์ อ็อบเจ็กต์เหล่านี้ช่วยให้คุณสามารถปรับเปลี่ยนคุณสมบัติของเซลล์ได้ เช่น ว่าเซลล์ถูกล็อกหรือปลดล็อก

// กำหนดวัตถุสไตล์
Style style;
// กำหนดวัตถุ styleflag
StyleFlag flag;

คุณจะใช้วัตถุเหล่านี้ในขั้นตอนถัดไปเพื่อปรับแต่งคุณสมบัติเซลล์และนำไปใช้กับเวิร์กชีตของคุณ

ขั้นตอนที่ 3: ปลดล็อคคอลัมน์ทั้งหมดในเวิร์กชีต

ตามค่าเริ่มต้น เซลล์ทั้งหมดในเวิร์กชีต Excel จะถูกล็อกไว้ อย่างไรก็ตาม เมื่อคุณป้องกันเวิร์กชีต สถานะการล็อกจะถูกบังคับใช้ หากต้องการให้แน่ใจว่ามีการป้องกันเฉพาะแถวหรือเซลล์ที่ระบุเท่านั้น คุณสามารถปลดล็อกคอลัมน์ทั้งหมดก่อน ขั้นตอนนี้มีความจำเป็นหากคุณต้องการป้องกันเฉพาะแถวบางแถวเท่านั้น

// วนซ้ำผ่านคอลัมน์ทั้งหมดในเวิร์กชีตและปลดล็อคพวกเขา
for (int i = 0; i <= 255; i++)
{
    style = sheet.Cells.Columns[(byte)i].Style;
    style.IsLocked = false;
    flag = new StyleFlag();
    flag.Locked = true;
    sheet.Cells.Columns[(byte)i].ApplyStyle(style, flag);
}

ในโค้ดนี้ เราจะวนซ้ำผ่านคอลัมน์ทั้งหมด 256 คอลัมน์ในเวิร์กชีต (เวิร์กชีต Excel มีคอลัมน์สูงสุด 256 คอลัมน์ โดยมีดัชนีตั้งแต่ 0 ถึง 255) และตั้งค่า…IsLocked ทรัพย์สินที่จะfalseการดำเนินการนี้จะช่วยให้แน่ใจว่าคอลัมน์ทั้งหมดถูกปลดล็อค แต่เราจะยังล็อคแถวที่เจาะจงในภายหลังอีกด้วย

ขั้นตอนที่ 4: ล็อคแถวแรก

เมื่อคุณปลดล็อกคอลัมน์แล้ว ขั้นตอนต่อไปคือการล็อกแถวเฉพาะที่คุณต้องการปกป้อง ในตัวอย่างนี้ เราจะล็อกแถวแรก วิธีนี้จะช่วยให้ผู้ใช้ไม่สามารถแก้ไขได้ในขณะที่แถวอื่นๆ ยังไม่ได้ปลดล็อก

//รับสไตล์แถวแรก
style = sheet.Cells.Rows[0].Style;
// ล็อคมันไว้
style.IsLocked = true;
//สร้างอินสแตนซ์ของธง
flag = new StyleFlag();
// ตั้งค่าการล็อค
flag.Locked = true;
// ใช้สไตล์กับแถวแรก
sheet.Cells.ApplyRowStyle(0, style, flag);

ที่นี่เราเข้าถึงรูปแบบของแถวแรกและตั้งค่าIsLocked ทรัพย์สินที่จะtrue . หลังจากนั้นเราก็ใช้ApplyRowStyle() วิธีการใช้รูปแบบการล็อกกับทั้งแถว คุณสามารถทำซ้ำขั้นตอนนี้เพื่อล็อกแถวอื่น ๆ ที่คุณต้องการปกป้อง

ขั้นตอนที่ 5: ปกป้องแผ่นงาน

ตอนนี้เราได้ปลดล็อกและล็อกแถวที่จำเป็นแล้ว ถึงเวลาที่จะปกป้องเวิร์กชีต การป้องกันจะรับประกันว่าไม่มีใครสามารถแก้ไขแถวหรือเซลล์ที่ถูกล็อกได้ เว้นแต่จะลบรหัสผ่านการป้องกัน (ถ้ามีให้)

// ป้องกันแผ่นงาน
sheet.Protect(ProtectionType.All);

ในขั้นตอนนี้เราจะใช้การป้องกันกับแผ่นงานทั้งหมดโดยใช้ProtectionType.Allการป้องกันประเภทนี้หมายถึงการป้องกันทุกด้านของชีต รวมถึงแถวและเซลล์ที่ถูกล็อก คุณสามารถปรับแต่งการป้องกันนี้ได้โดยระบุประเภทการป้องกันที่แตกต่างกันหากจำเป็น

ขั้นตอนที่ 6: บันทึกสมุดงาน

สุดท้ายนี้ เราจำเป็นต้องบันทึกเวิร์กบุ๊กหลังจากใช้รูปแบบและการป้องกันที่จำเป็นแล้ว เวิร์กบุ๊กสามารถบันทึกได้ในรูปแบบต่างๆ เช่น Excel 97-2003, Excel 2010 เป็นต้น

// บันทึกไฟล์ Excel
wb.Save(dataDir + "output.out.xls", SaveFormat.Excel97To2003);

บรรทัดโค้ดนี้จะบันทึกเวิร์กบุ๊กในรูปแบบ Excel 97-2003 พร้อมการเปลี่ยนแปลงที่นำไปใช้ คุณสามารถเปลี่ยนรูปแบบไฟล์ตามความต้องการของคุณได้โดยเลือกจากตัวเลือกต่างๆSaveFormat ตัวเลือก

บทสรุป

และแล้วคุณก็ทำได้! คุณได้เรียนรู้วิธีการป้องกันแถวในเวิร์กชีตโดยใช้ Aspose.Cells สำหรับ .NET สำเร็จแล้ว โดยทำตามขั้นตอนข้างต้น คุณสามารถปลดล็อกหรือล็อกแถวหรือคอลัมน์ใดๆ ตามต้องการ และใช้การป้องกันเพื่อให้แน่ใจว่าข้อมูลของคุณมีความสมบูรณ์

คำถามที่พบบ่อย

ฉันจะป้องกันหลายแถวพร้อมกันได้อย่างไร?

คุณสามารถวนซ้ำผ่านหลายแถวและใช้รูปแบบการล็อกกับแต่ละแถวได้ทีละแถว เพียงแค่แทนที่0 ด้วยดัชนีแถวที่คุณต้องการล็อค

ฉันสามารถตั้งรหัสผ่านสำหรับการป้องกันแผ่นงานได้หรือไม่?

ใช่ครับ! คุณสามารถส่งรหัสผ่านไปที่sheet.Protect() วิธีการบังคับใช้การป้องกันด้วยรหัสผ่าน

ฉันสามารถปลดล็อคเซลล์แทนคอลัมน์ทั้งหมดได้ไหม

ใช่! แทนที่จะปลดล็อกคอลัมน์ คุณสามารถปลดล็อกเซลล์แต่ละเซลล์ได้โดยการแก้ไขคุณสมบัติรูปแบบของเซลล์เหล่านั้น

จะเกิดอะไรขึ้นหากฉันพยายามแก้ไขแถวที่ได้รับการป้องกัน?

เมื่อมีการป้องกันแถว Excel จะป้องกันไม่ให้มีการแก้ไขใดๆ เกิดขึ้นกับเซลล์ที่ถูกล็อค เว้นแต่คุณจะยกเลิกการป้องกันแผ่นงานนั้น

ฉันสามารถปกป้องช่วงเฉพาะในแถวเดียวกันได้หรือไม่

ใช่! คุณสามารถล็อกช่วงแต่ละช่วงในแถวได้โดยการตั้งค่าIsLocked คุณสมบัติสำหรับเซลล์เฉพาะภายในช่วง