2009-07-01 8 views
3

Ich benutze DataReader, um Daten in Excel Sheet-Zellen zu schreiben. Ich habe kein Problem, bis die Zelle Schreibvorsätze hat. Aber in einem Fall ist nur eine Zelle schreibgeschützt und die restlichen Zellen sind beschreibbar.Wie schreibe ich in Excel-Zellen mit DataReader, wenn eine bestimmte Zelle "ReadOnly" mit C# ist

ZB: 10 * 10 Zellen, nur die erste Zelle ist readonly. Also, ich sollte diese Zelle verlassen und sie in den Rest der Zellen schreiben. Aber mit dem Datenleser schreibt er die ganze Zeile auf einmal. Wie kann ich das mit C# erreichen?

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

Also, die erste Zelle sollte nicht vom Datenreader geschrieben werden. Bitte helfen Sie mir dies tun

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

Danke, Ramm

Antwort

0

ich viel versucht, um herauszufinden, wie writin auf eine bestimmte Excel-Zelle mit C#, zu überspringen, aber konnte nicht die richtige Logik erhalten.

meine zB: Teamleiter (erforderlich) abcxyz User1 Benutzer2 Customer Interface Focal dfgidf user23 user3

jeder der oben genannten Namen in einer bestimmten Zelle sein muss ... aber in der Excel-Vorlage, erste Zelle (Team Leader (erforderlich)) ist nur lesbar, so kann ich nicht in diese Zelle schreiben, so mein letztes Blatt zeigen treffen sollte

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

i verschiedene Logiken für diese versucht, ... sehen Sie bitte den nachfolgenden Code

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

aber der Fehler zeigt, in der if-Anweisung Fehler 1 Operator '!' kann nicht auf Operanden vom Typ 'Objekt' angewendet werden

Also, bitte sagen Sie, wie Sie mit diesem Fall umgehen.

Dank Ramm

1

dies vielleicht auf Google gefunden, so funktioniert es/vielleicht ist es nicht: here, code looks the same as yours

Sie können die AllowEdit Eigenschaft eines Bereichs verwenden, so dass Sie tun können:

// 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]; 

statt

// 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]; 
Verwandte Themen