2011-08-18 33 views
1

我从代码生成Excel电子表格。我正在尝试使用.net代码 来定制单元格,并且我想锁定标题行,以便它不允许将文本输入到这些单元格中。从.Net打印Excel行锁定

我尝试以下2种方式,但没有成功

  1. worksheet.Range( “A1”, “A1”)。EntireRow.Locked =真

  2. worksheet.Unprotect()
    工作表.Range( “A1”, “A100”)。锁定=真
    worksheet.Protect()

那是什么我我在这里失踪?

--- --- CODE

公用Sub CreatNewExcelWithAppliedRules(BYVAL noOfWSheets方式列表(字符串))

Dim misValue As Object = System.Reflection.Missing.Value 
    Dim App As New Application 
    Dim workbook As Workbook = App.Workbooks.Add() 
    Dim worksheet As Worksheet = workbook.Worksheets(1) 
    Dim sFile As String = "sample-excel" 


    ---READ HEADERS FROM XML 
    Dim xmlFile = "E:\ExcelPOC\ExcelValidation\App_Data\Headers.xml" 
    Dim fsReadXml As New System.IO.FileStream(xmlFile, System.IO.FileMode.Open) 
    dsHeaders.ReadXml(fsReadXml) 
    dtHeader = dsHeaders.Tables("Column") 

    ---ADD HEADERS LIST TO EXCEL 
    FillColumnHeader(worksheet, dtHeader, culture) 

    worksheet.Unprotect() 
    ---ADD VALIDATION RULES 
    For Each worksheet In workbook.Worksheets 
     ListValidExcelRule(worksheet) 
     DateValidExcelRule(worksheet) 
     TextLengthValidExcelRule(worksheet) 
     DecimalValidExcelRule(worksheet) 
    Next 
    worksheet.Range("1:1").Locked = True 
    worksheet.Protect() 

    ---SAVE THE EXCEL 
    sFile = App.GetSaveAsFilename(InitialFilename:=sFile, FileFilter:="xls Files (*.xls), *.xls") 

    If sFile <> "False" Then 
     workbook.SaveAs(Filename:=sFile, _ 
           FileFormat:=XlFileFormat.xlWorkbookNormal, _ 
           Password:="", _ 
           WriteResPassword:="", _ 
           ReadOnlyRecommended:=False, _ 
           CreateBackup:=False) 
    Else 
     App.DisplayAlerts = False 
    End If 

    workbook.Close(True, misValue, misValue) 
    App.Quit() 
    releaseObject(worksheet) 
    releaseObject(workbook) 
    releaseObject(App) 

End Sub 
+0

您是否收到任何错误,或者它是否无法阻止对该行进行修改? – Patrick

+0

我没有收到任何错误。它没有应用锁定并允许输入文字 – ramesh

回答

2

A1:A100是左侧列。 A1:IV1是第一排。你的两次尝试都很接近。

尝试:

worksheet.Cells.Locked = False 
worksheet.Range("1:1").Locked = True 
worksheet.Protect 

在新的Excel工作表中所有单元格默认情况下锁定。除非先解锁整个工作表,否则最好选择要解锁的单元而不是要锁定的单元。

+0

我尝试了上述方法,但仍然允许在标题中输入文本 – ramesh

+1

向我们展示更多代码,例如定义“工作表”的位置。 –

+0

当我用工作表(1)替换'工作表'时,这适用于我。您可能需要根据生成Excel文件的方式更改索引。 – Patrick