2013-11-15 3 views
3

Я создаю динамический лист Excel с помощью ExcelWorksheet. Мне нужно создать непревзойденное преимущество. ws.Cells ["A1: Q12"]. Style.Locked = true is не работает.Как создать readonly лист Excel с помощью C# .net

Вот мой код:

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; 
    } 

Спасибо всем заранее за ответ.

ответ

3

Я создаю динамический лист Excel с помощью ExcelWorksheet. Мне нужно создать непревзойденное преимущество. 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; 

, а затем использовать вышеуказанный код.

+0

im not get ** ws.get_Range ** property – Deepak

+0

Какая версия VS вы используете? –

+0

im using VS 2010 – Deepak

0

если вы хотите сохранить книги Excel, как 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); 
Смежные вопросы