如何检查该范围内的特定单元是否已被锁定,
我发布了我的代码的小片段,请建议,如果单元格未锁定,则写入单元格的更好方法。
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)单元格写入,其中如果第一个单元格被锁定,我无法将其写入该单元格,我必须继续写入其他单元格。
请帮我这样做。谢谢,Ramm
答案 0 :(得分: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();