【问题标题】:How to create readonly Excel sheet using C# .net如何使用 C# .net 创建只读 Excel 工作表
【发布时间】:2013-11-15 11:00:42
【问题描述】:

我正在使用 ExcelWorksheet 创建一个动态 Excel 工作表。我需要创建一个不可编辑的 Excel。 ws.Cells["A1:Q12"].Style.Locked = true 不工作

这是我的代码:

默认.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;
    }

提前感谢大家的回复。

【问题讨论】:

    标签: c# asp.net excel


    【解决方案1】:

    我正在使用 ExcelWorksheet 创建一个动态 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;
    

    然后使用上面的代码。

    【讨论】:

    • 我没有得到 ** ws.get_Range ** 属性
    • 你用的是哪个VS版本?
    • 嗯,奇怪。如前所述,我已经在 VS 2010 C# 中对其进行了测试
    【解决方案2】:

    如果您想将 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 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-10
      • 2016-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多