Faire des colonnes ou des cellules readonly avec EPPlus

Est-il un moyen de faire une colonne ou un groupe de cellules verrouillées ou en lecture seule à l'aide de EPPlus? J'ai essayé le code ci-dessous à la fois séparés et ensemble, cependant ni semble avoir l'effet désiré. Soit l'ensemble de la feuille de calcul est verrouillé (si je comprend le IsProtected déclaration) ou rien du tout.

        ws.Protection.IsProtected = true;
        ws.Column(10).Style.Locked = true;

MODIFIER

Ici est tout le bloc de code à partir de mon contrôleur

        FileInfo newFile = new FileInfo("C:\\Users\\" + User.Identity.Name + "\\Desktop" + @"\\ZipCodes.xlsx");
ExcelPackage pck = new ExcelPackage(newFile);
var ws = pck.Workbook.Worksheets.Add("Query_" + DateTime.Now.ToString());
//Headers
ws.Cells["A1"].Value = "ChannelCode";
ws.Cells["B1"].Value = "DrmTerrDesc";
ws.Cells["C1"].Value = "IndDistrnId";
ws.Cells["D1"].Value = "StateCode";
ws.Cells["E1"].Value = "ZipCode";
ws.Cells["F1"].Value = "EndDate";
ws.Cells["G1"].Value = "EffectiveDate";
ws.Cells["H1"].Value = "LastUpdateId";
ws.Cells["J1"].Value = "ErrorCodes";
ws.Cells["K1"].Value = "Status";
ws.Cells["I1"].Value = "Id";
//Content
int i = 2;
foreach (var zip in results)
{
ws.Cells["A" + i.ToString()].Value = zip.ChannelCode;
ws.Cells["B" + i.ToString()].Value = zip.DrmTerrDesc;
ws.Cells["C" + i.ToString()].Value = zip.IndDistrnId;
ws.Cells["D" + i.ToString()].Value = zip.StateCode;
ws.Cells["E" + i.ToString()].Value = zip.ZipCode;
ws.Cells["F" + i.ToString()].Value = zip.EndDate.ToShortDateString();
ws.Cells["G" + i.ToString()].Value = zip.EffectiveDate.ToShortDateString();
ws.Cells["H" + i.ToString()].Value = zip.LastUpdateId;
ws.Cells["J" + i.ToString()].Value = zip.ErrorCodes;
ws.Cells["K" + i.ToString()].Value = zip.Status;
ws.Cells["I" + i.ToString()].Value = zip.Id;
i++;
}
//ws.Protection.IsProtected = true;
ws.Column(10).Style.Locked = true;
return new ExcelResult
{
FileName = "ZipCodes.xlsx",
Package = pck
};

ExcelResult

public class ExcelResult : ActionResult
{
public string FileName { get; set; }
public ExcelPackage Package { get; set; }
public override void ExecuteResult(ControllerContext context)
{
context.HttpContext.Response.Buffer = true;
context.HttpContext.Response.Clear();
context.HttpContext.Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
context.HttpContext.Response.ContentType = "application/vnd.ms-excel";
context.HttpContext.Response.BinaryWrite(Package.GetAsByteArray());
}
}

Deuxième Édition

J'ai tenté de faire la feuille de calcul protégée par la définition de la IsProtected de la valeur à true, puis définissez la Locked propriété false pour chaque colonne, à l'exception de la dernière. Non seulement la feuille de calcul pas en mode lecture seule, mais je pourrait modifier les données dans chaque colonne.

Je l'ai fait remarquer, cependant, que je ne peut pas redimensionner les colonnes réelles eux-mêmes, c'est peut-être ce que je suis en train de faire. Je voudrais verrouiller chaque cellule de la colonne, toutefois, donc pas de nouvelles données peuvent être saisies.

        for (int a = 1; a < 10; a++)
{
ws.Column(a).Style.Locked = false;
}
ws.Protection.IsProtected = true;

OriginalL'auteur NealR | 2013-12-23