|  | using System; | 
|  | using System.Collections.Generic; | 
|  | using System.Data; | 
|  | using System.IO; | 
|  | using System.Linq; | 
|  | using System.Text; | 
|  | using OfficeOpenXml; | 
|  | using OfficeOpenXml.Table; | 
|  |  | 
|  | namespace EPPlusSamples | 
|  | { | 
|  | class Sample16 | 
|  | { | 
|  | public static void RunSample16(DirectoryInfo outputDir) | 
|  | { | 
|  | using (var package = new ExcelPackage()) | 
|  | { | 
|  | var dataTable = new DataTable("test"); | 
|  | dataTable.Columns.Add("col1"); | 
|  | dataTable.Columns.Add("col2"); | 
|  | dataTable.Columns.Add("col3"); | 
|  | dataTable.Columns.Add("col4"); | 
|  | dataTable.Rows.Add("qwe11", "qwe12", "qwe13", "qwe14"); | 
|  | dataTable.Rows.Add("qwe21", "qwe22", "qwe23", "qwe24"); | 
|  | ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(dataTable.TableName); | 
|  | worksheet.Cells["A1"].LoadFromDataTable(dataTable, true, TableStyles.None); | 
|  | worksheet.Protection.AllowSelectLockedCells = false; | 
|  | worksheet.Protection.AllowSelectUnlockedCells = true; | 
|  | worksheet.Protection.AllowSort = true; | 
|  | worksheet.Protection.AllowFormatColumns = true; | 
|  | worksheet.Protection.AllowAutoFilter = true; | 
|  | worksheet.Protection.AllowEditObject = true; | 
|  | worksheet.Protection.IsProtected = true; | 
|  | var r1=worksheet.ProtectedRanges.Add("Range1", new ExcelAddress(1, 1, worksheet.Dimension.End.Row, 4)); | 
|  | worksheet.ProtectedRanges.Remove(r1); | 
|  | var r2 = worksheet.ProtectedRanges.Add("Range2", new ExcelAddress("F3:T12,F15:T30")); | 
|  | r2.SetPassword("EPPlus"); | 
|  |  | 
|  | worksheet.Column(1).Width = 30; | 
|  | worksheet.Column(2).Width = 30; | 
|  | worksheet.Column(3).Width = 100; | 
|  | worksheet.Column(4).Width = 100; | 
|  | worksheet.Cells[1, 4, worksheet.Dimension.End.Row, 4].Style.Locked = false; | 
|  | worksheet.Cells[1, 3, worksheet.Dimension.End.Row, 4].Style.WrapText = true; | 
|  |  | 
|  | using (var fs = new FileStream(Path.Combine(outputDir.ToString(), "sample16.xlsx"), FileMode.Create)) | 
|  | package.SaveAs(fs); | 
|  | } | 
|  |  | 
|  | using (var fs = new FileStream(Path.Combine(outputDir.ToString(), "sample16.xlsx"), FileMode.Open, FileAccess.Read)) | 
|  | using (var package = new ExcelPackage(fs)) | 
|  | { | 
|  | foreach (var worksheet1 in package.Workbook.Worksheets) | 
|  | { | 
|  | var prCollection = worksheet1.ProtectedRanges; | 
|  | if (prCollection.Count != 1) | 
|  | throw new InvalidOperationException("Expected 1 element"); | 
|  | } | 
|  | } | 
|  | } | 
|  | } | 
|  | } |