2009-07-08 56 views
1

如何檢查該範圍內的特定單元格是否被鎖定,檢查excel單元格是否被鎖定的方法是什麼?

我發佈了我的代碼的小片段,請建議,如果單元格未鎖定,則寫入單元格的更好方法。

if(reader.HasRows){minRow = 0; minCol = 0;

       // Process each result in the result set 
           while (reader.Read()) 
           { 
            // Create an array big enough to hold the column values 
            object[] values = new object[reader.FieldCount]; 

            // Add the array to the ArrayList 
            rowList.Add(values); 

            // Get the column values into the array 
            reader.GetValues(values); 

            int iValueIndex = 0; 
            int jValueIndex = 1; 

            // If the Reading Format is by ColumnByColumn 
            if (CurTaskNode.ReadFormat == "ColumnbyColumn") 
            { 
             minCol = 0; 
             int lengthHeader = 0; 
             if (CurTaskNode.ReadHeader == true) 
             { 
              lengthHeader = CurTaskNode.HEADER_MAX_ROW - CurTaskNode.HEADER_MIN_ROW; 
             } 
             else 
             { 
              lengthHeader = CurTaskNode.HeaderData.Length; 

             } 
             for (int iCol = 0; iCol < lengthHeader; iCol++) 
             { 

              // Checking whether the Header data exists or not 
              if (CurTaskNode.HeaderData[minCol] != "") 
              { 
               //if (!(excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol]).Locked) 
               //{ 

               // Assigning the Value from reader to the particular cell in excel sheet 

                 excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol] = values[iValueIndex]; 
                 iValueIndex++; 

               //} 

              } 
              minCol++; 
             } 
             minRow++; 
            } 

在代碼中,寫入到Excel細胞是

excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow,CurTaskNode.DATA_MIN_COL + minCol] =值[iValueIndex];

這裏我要檢查一下條件:單元格是否鎖定,我試過了,但是這是不正確的。

CurTaskNode.DATA_MIN_ROW是excel表格中要寫入數據的minrow值,該值來自XML文件,如果必須從(10,2)寫入(20,10)單元格,其中if第一個單元格被鎖定,我不能將它寫入該單元格,我必須繼續寫入其他單元格。

請幫我做這件事。謝謝,Ramm

回答

1

((範圍)excelworksheet.Cells [CurTaskNode.DATA_MIN_ROW + minRow,CurTaskNode.DATA_MIN_COL + minCol])。Locked是用於查找單元格鎖定屬性的屬性。

excelworksheet.Protection.AllowBlahBlahBlah是爲工作表獲取/設置一種保護的屬性。

excelworksheet.ProtectionMode是一個只讀布爾值,用於確定是否啓用了由AllowBlahBlahBlah's定義的保護。

所以我可能會使用

Range r = (Range)excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol]?? new Range(); // cover null 
    if(
    r.Locked && // is cell locked 
    excelworksheet.ProtectionMode && // is sheet protected 
    !excelworksheet.Protection.AllowFormattingCells) // are locked cells not allowed to be messed with 
     DoSomethingBecauseItsProtected(); 
+0

嗨, excelworksheet.Range(CurTaskNode.DATA_MIN_ROW + minRow,CurTaskNode.DATA_MIN_COL + minCol).Locked 本身是無效的說法,因爲我不能使用.Locked此類型。 是我們需要首先爲它聲明對象,然後再檢查它是否被鎖定> 請幫我做這個 THanks Ramm – Ramm 2009-07-09 06:08:28

相關問題