[英]How to make Excel columns read-only but re-sizable in EPPlus C# ?
[英]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.