如何使用C#.net创建只读Excel工作表

如何使用C#.net创建只读Excel工作表,c#,asp.net,excel,C#,Asp.net,Excel,我正在使用Excel工作表创建动态Excel工作表。我需要创建一个不可编辑的excelws.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 (Excel

我正在使用Excel工作表创建动态Excel工作表。我需要创建一个不可编辑的excelws.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;
    }

提前感谢您的回复。

如果您想将Excel工作簿另存为
只读
另存为以下内容:

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 );
我正在使用Excel工作表创建动态Excel工作表。我需要创建一个不可编辑的excel。ws.Cells[“A1:Q12”].Style.Locked=true不工作

要创建不可编辑的单元格,必须使用

ws.get_Range("A1", "Q12").Locked = true;
然后你需要保护工作表。如果不保护工作表,
.Locked
命令没有任何意义

下面是一个基本示例(在VS2010+OFFICE 2010中进行了尝试和测试)

注意:默认情况下,Excel中的所有单元格都被锁定。如果不想保护工作表中的其余单元格,请记住将其
.Locked
属性设置为
False

ws.Cells.Locked = false;

然后使用上面的代码。

我没有得到**ws.get\u Range**属性您使用的是哪个版本?嗯,奇怪。如前所述,我已经在VS2010 C中对其进行了测试#
ws.Cells.Locked = false;