как проверить, заблокирована ли ячейка excel или нет?

Как проверить, заблокирована ли конкретная ячейка в этом диапазоне,

Я публикую небольшой фрагмент своего кода. Пожалуйста, предложите мне лучший способ записи в ячейку, если ячейка не заблокирована.

если (reader.HasRows) { minRow = 0; минкол = 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] = values[iValueIndex];

здесь я должен проверить условие, заблокирована ячейка или нет, я пробовал, но это не правильно.

CurTaskNode.DATA_MIN_ROW - это минимальное значение для этих данных для записи на листе Excel, это значение исходит из файла XML, и если мне нужно записать от (10, 2) до (20, 10), ячейки, в которых, если первая ячейка скажем, заблокировано, я не могу записать его в эту ячейку, и мне нужно продолжить запись с другими ячейками.

Пожалуйста, помогите мне в этом. Спасибо, Рамм


person user301016    schedule 08.07.2009    source источник


Ответы (1)


((Диапазон) excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol]). Locked — это свойство для поиска заблокированного атрибута ячеек.

excelworksheet.Protection.AllowBlahBlahBlah — это свойство для получения/установки типа защиты для рабочего листа.

excelworksheet.ProtectionMode — это логическое значение, доступное только для чтения, чтобы узнать, включена ли защита, определенная параметрами AllowBlahBlahBlah.

Так что я мог бы использовать

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();
person gjutras    schedule 08.07.2009
comment
Привет, excelworksheet.Range(CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol). Locked сам по себе является недопустимым выражением, так как я не могу использовать .Locked для этого типа. нам нужно сначала объявить объект для него, а затем проверить, заблокирован ли он или нет › Пожалуйста, помогите мне в этом, спасибо, Рамм - person user301016; 09.07.2009
comment
Я внес изменения. Вы правы, сначала вам нужно привести объект Cells к диапазону, чтобы получить доступ к заблокированному свойству. - person gjutras; 15.07.2009