2009-07-01 101 views
3

我正在使用DataReader將數據寫入excelsheet單元格。我沒有問題,直到單元格寫入previleges。但在一種情況下,只有一個單元是隻讀的,其餘單元是可寫的。如何使用DataReader在excel單元格中編寫如果特定單元格是使用C#的「ReadOnly」

例如:10 * 10個單元,只有第一個單元是隻讀的。所以,我會離開這個細胞,並把它寫入其餘的細胞。但是對於數據讀取器,它一次寫完整行......所以我如何使用C#實現這一點?

Team Leader (required) , , , , , , , , , 
, , , , , , , , , , 
, , , , , , , , , , 
, , , , , , , , , , 
, , , , , , , , , , 

因此,第一個單元格不應該由datareader寫入。 請幫我做這個

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; 

     // If the Reading Format is by ColumnByColumn 
     if (CurTaskNode.ReadFormat == "ColumnbyColumn") 
     { 
      minCol = 0; 
      // minRow = 0; 
      for (int iCol = 0; iCol < CurTaskNode.HeaderData.Length; iCol++) 
      { 
       // Checking whether the Header data exists or not 
       if (CurTaskNode.HeaderData[minCol] != "") 
       { 
        // 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++; 
     } 
    } 
} 

謝謝 拉姆

回答

0

我嘗試了很多弄清楚如何跳過以創作到使用C#特定的Excel單元格,但不可能得到正確的邏輯。

我如: 組長(需要)abcxyz用戶1用戶2 客戶接口焦點dfgidf user23用戶3

每個名字上面必須是在特定的細胞......但在Excel模板,第一個單元格(組長(必需))是隻讀的,所以我不能寫到該小區,所以我最終的Excel工作表中應顯示

      abcxyz User1 user2 
Customer Interface Focal dfgidf user23 user3..... 
..... 

我嘗試過各種邏輯此...請參閱下面

代碼10
Microsoft.Office.Interop.Excel.Workbook SelWorkBook = excelappln1.Workbooks.Open(
    curfile, 
    0, false, 5, "", "", false, 
    Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, 
    "", true, 
    false, 0, false, false, false); 

Microsoft.Office.Interop.Excel.Sheets excelSheets = SelWorkBook.Worksheets; 
Microsoft.Office.Interop.Excel.Worksheet excelworksheet =(Microsoft.Office.Interop.Excel.Worksheet)excelSheets.get_Item(CurSheetName); 

Microsoft.Office.Interop.Excel.Range excelRange = excelworksheet.UsedRange; 

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++; 
} 

但錯誤顯示,在if語句中 錯誤1操作符'!'不能應用於'object'類型的操作數

所以,請說出如何處理這種情況。

感謝 拉姆

1

發現這對谷歌,所以也許它的工作原理/也許它並不: here, code looks the same as yours

您可以使用一系列的AllowEdit屬性,所以你可以這樣做:

// Assigning the Value from reader to the particular cell in excel sheet  
Excel.Range c = (Excel.Range)excelworksheet.Cells[CurTaskNode.DATA_MIN_ROW + minRow, CurTaskNode.DATA_MIN_COL + minCol]; 
if (c.AllowEdit) c.Value2 = values[iValueIndex]; 

而不是

// 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]; 
相關問題