簡體   English   中英

c#使用EPPLUS使工作表名稱只讀?

[英]c# using EPPLUS make name of the sheet read only?

我已經用密碼鎖定了excel單元格並生成了excel文件,但是工作表的名稱仍可編輯。 如何使其無法編輯? 請幫忙。

格式代碼:

      string schoolHeader = "A2:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "2";
        string addressHeader = "A3:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "3";
        string classHeader = "A5:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "5";
        string subjectHeader = "A7:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "7";
        string examHeader = "A8:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "8";
        string headerRange = "A10:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + "10";

        string rangeupdate = (StudentCount + 11).ToString();
        string unprotectedRange = "F11:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + rangeupdate;
        string EntryRange = "A11:" + Char.ConvertFromUtf32(headerRow[0].Length + 64) + rangeupdate;

        subject.Cells[schoolHeader].Merge = true;
        subject.Cells[addressHeader].Merge = true;
        subject.Cells[classHeader].Merge = true;
        subject.Cells[subjectHeader].Merge = true;
        subject.Cells[examHeader].Merge = true;

        subject.Cells[schoolHeader].Value = Header;
        subject.Cells[schoolHeader].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[schoolHeader].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
        subject.Cells[schoolHeader].Style.Font.Bold = true;
        subject.Cells[schoolHeader].Style.Font.Size = 16;

        subject.Cells[addressHeader].Value = place;
        subject.Cells[addressHeader].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[addressHeader].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
        subject.Cells[addressHeader].Style.Font.Bold = true;
        subject.Cells[addressHeader].Style.Font.Size = 11;

        subject.Cells[classHeader].Value = name;
        subject.Cells[classHeader].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[classHeader].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
        subject.Cells[classHeader].Style.Font.Bold = true;

        subject.Cells[subjectHeader].Value = subject;
        subject.Cells[subjectHeader].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[subjectHeader].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
        subject.Cells[subjectHeader].Style.Font.Bold = true;
        subject.Cells[subjectHeader].Style.Font.Size = 12;

        subject.Cells[examHeader].Value = date;
        subject.Cells[examHeader].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[examHeader].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
        subject.Cells[examHeader].Style.Font.Bold = true;

        subject.Cells[headerRange].LoadFromArrays(headerRow);

        subject.Cells[headerRange].Style.VerticalAlignment = OfficeOpenXml.Style.ExcelVerticalAlignment.Center;
        subject.Cells[headerRange].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Left;
        subject.Cells[headerRange].Style.Font.Bold = true;
        subject.Cells[headerRange].Style.Font.Size = 12;
        subject.Cells[headerRange].Style.Font.Color.SetColor(System.Drawing.Color.White);
        subject.Cells[headerRange].Style.Fill.PatternType = OfficeOpenXml.Style.ExcelFillStyle.Solid;
        subject.Cells[headerRange].Style.Fill.BackgroundColor.SetColor((System.Drawing.Color.MediumPurple));

        subject.Cells[headerRange].Style.Border.Top.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
        subject.Cells[headerRange].Style.Border.Bottom.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
        subject.Cells[headerRange].Style.Border.Left.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;
        subject.Cells[headerRange].Style.Border.Right.Style = OfficeOpenXml.Style.ExcelBorderStyle.Thin;

        subject.Cells[EntryRange].Style.Font.Bold = true;
        subject.Cells[EntryRange].Style.Font.Size = 12;

        subject.Cells[subject.Dimension.Address].AutoFitColumns();
        subject.Cells[headerRange].Style.Locked = true;
        subject.Cells[unprotectedRange].Style.Locked = false;
        subject.Protection.IsProtected = true;
        subject.Protection.AllowFormatColumns = true;
        subject.Protection.SetPassword(pass.ToString());

這只能鎖定單元格,不能鎖定工作表名稱。 即使設置密碼似乎也不會鎖定工作表名稱。 您可以更改名稱,但不執行任何操作。

您還需要保護工作簿:

package.Workbook.Protection.LockStructure = true;
package.Workbook.Protection.SetPassword("password");

這樣,工作簿結構(包括工作表名稱)也受到保護,但是它將對所有工作表均有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM