1

如何检查该范围内的特定单元格是否被锁定,

我正在发布我的代码的一小段,请建议我,如果单元格未锁定,写入单元格的更好方法。

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] = values[iValueIndex];

在这里我必须检查单元格是否被锁定的情况,我试过了,但这是不正确的。

CurTaskNode.DATA_MIN_ROW 是要写入 excel 表的数据的 minrow 值,该值来自 XML 文件,如果我必须从 (10, 2) 写入 (20, 10) 单元格,其中如果第一个单元格是说锁定,我无法将其写入该单元格,我必须继续使用其他单元格进行写入。

请帮助我这样做。谢谢,拉姆

4

1 回答 1

2

((Range)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();
于 2009-07-08T13:58:38.060 回答