我正在使用ExcelWorks工作表创建动态Excel工作表。我需要创建一个不可编辑的Excel。 ws.Cells [“A1:Q12”]。Style.Locked = true 无效。
这是我的代码:
Default.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
string filePath = Server.MapPath("~/Download/Sample.xlsx");
using (ExcelPackage pck = new ExcelPackage())
{
FileInfo summaryFilePath = new FileInfo(filePath);
ExcelWorksheet ws= pck.Workbook.Worksheets.Add("Sample Page");
CreateForamters(ws);
}
}
private void CreateForamters(ExcelWorksheet ws)
{
ws.Cells["B8:L8"].Value = "SamplePage";
ws.Cells["B10:L10"].Value = DateTime.Now.ToString("MMM-yy");
ws.Cells["B11:L11"].Value = "test data........-";
ws.Cells["B8:L11"].Style.Fill.PatternType = ExcelFillStyle.Solid;
ws.Cells["B8:L11"].Style.Font.Bold = true;
ws.Cells["B8:L11"].Style.Font.Name = "Arial";
ws.Cells["B8:L11"].Style.Font.Size = 16;
ws.Cells["B8:L11"].Style.Font.Color.SetColor(Color.Blue);
ws.Cells["B8:L11"].Style.Fill.BackgroundColor.SetColor(Color.White);
ws.Cells["B8:L11"].Style.HorizontalAlignment = OfficeOpenXml.Style.ExcelHorizontalAlignment.Center;
ws.Cells["B8:L8"].Merge = true;
ws.Cells["B9:L9"].Merge = true;
ws.Cells["B10:L10"].Merge = true;
ws.Cells["B11:L11"].Merge = true;
ws.Cells["A1:Q12"].Style.Locked = true;
}
提前感谢大家的回复。
答案 0 :(得分:3)
我正在使用ExcelWorks工作表创建动态Excel工作表。我需要创建一个不可编辑的Excel。 ws.Cells [“A1:Q12”]。Style.Locked = true无效。
要创建不可编辑的单元格,您必须使用
ws.get_Range("A1", "Q12").Locked = true;
然后你需要保护工作表。在不保护工作表的情况下,.Locked
命令没有任何意义。
这是一个基本的例子(在VS2010 + OFFICE 2010中试用和测试)
object misValue = System.Reflection.Missing.Value;
ws.get_Range("A1", "Q12").Locked = true;
string Password = "Sid";
ws.Protect(Password, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue, misValue, misValue, misValue, misValue,
misValue, misValue, misValue);
注意:默认情况下,Excel中的所有单元格都已锁定。如果您不想保护工作表中的其余单元格,请记住将其.Locked
属性设置为False
。
ws.Cells.Locked = false;
然后使用上面的代码。
答案 1 :(得分:0)
如果要将Excel WorkBook另存为ReadOnly
另存为:
object misValue = System.Reflection.Missing.Value;
ExcelWorkBook.ActiveWorkbook.SaveAs(save_path, Excel.XlFileFormat.xlWorkbookNormal, misValue , misValue , True, True,XlSaveAsAccessMode.xlShared, false, false, misValue, misValue , misValue );