2013-07-19 13 views
6

Sto cercando di applicare un bordo a una cella utilizzando la libreria Microsoft.Office.Interop.Excel.Microsoft.Office.Interop.Excel: Come applicare un bordo a ONE CELL

Sto eseguendo un ciclo while che cerca una cella vuota all'interno di una determinata colonna, una volta trovata la cella voglio applicare un bordo ad essa.

Conosco molti forum su questo utilizzando gli intervalli, ma non posso utilizzare la funzionalità di intervallo poiché non so a quale cella viene applicata esattamente.

La mia idea era:

(Excel.Range) xlWS.Cells [fila, 1] .Borders.LineStyle = (qualsiasi valore);

Qualche consiglio? (oltre ai link ad altri forum, ho già esaminato tonnellate di moduli)?

+0

Quindi ciò che non funziona con la vostra idea attuale? – chancea

+0

Era più che altro un'ipotesi, grazie a jiverson ero in grado di generare il codice corretto per farlo! –

+0

Fantastico! se la sua risposta ha risolto il tuo problema, assicurati di fare clic sul segno di spunta per accettarlo, così sappiamo che questa domanda è stata risolta. – chancea

risposta

9
Microsoft.Office.Interop.Excel.Range range = sheet.UsedRange; 
    Microsoft.Office.Interop.Excel.Range cell = range.Cells[1][1]; 
    Microsoft.Office.Interop.Excel.Borders border = cell.Borders; 
    border[XlBordersIndex.xlEdgeLeft].LineStyle = 
     Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; 
    border[XlBordersIndex.xlEdgeTop].LineStyle = 
     Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; 
    border[XlBordersIndex.xlEdgeBottom].LineStyle = 
     Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; 
    border[XlBordersIndex.xlEdgeRight].LineStyle = 
     Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; 

Vedere questo answer per ulteriori dettagli.

+0

Grazie! Usando il tuo consiglio sono stato in grado di generare codice che fa la stessa funzionalità meno la quantità di codice. –

11
  Excel.Range range = xlWS.UsedRange; 
      Excel.Range cell = range.Cells[row,column]; 
      Excel.Borders border = cell.Borders; 

      border.LineStyle = Excel.XlLineStyle.xlContinuous; 
      border.Weight = 2d; 

Spero che questo aiuti qualcuno! Mette un bordo di linea sottile attorno alla cella [riga, colonna]!

+0

Questo ha funzionato come volevo. L'unica cosa che ho cambiato Excel.Range cell = range.Cells; – SubqueryCrunch

1

Questo è basato sulla risposta di jiverson, ma è molto più conciso per i bisogni di base; è sufficiente creare un intervallo, ottenere i suoi confini, e aggiungere un bordo alla parte inferiore della gamma:

var platypusRange = _xlSheet.Range[_xlSheet.Cells[1, 1], _xlSheet.Cells[1, 3]]; 
. . . 
Borders border = platypusRange.Borders; 
border[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlContinuous; 

Naturalmente, si potrebbe aggiungere un bordo alla parte superiore e sui lati, anche, utilizzando xlEdgeTop, xlEdgeLeft e xlEdgeRight .

3

Per ogni cella nella gamma

Microsoft.Office.Interop.Excel.Range chartRange; 
chartRange = workSheet.get_Range("a1", "g7"); 
foreach (Microsoft.Office.Interop.Excel.Range cell in chartRange.Cells) 
{ 
    cell.BorderAround2(); 
} 

Per tutta la gamma

chartRange.BorderAround2(); 
+0

Stavo cercando questo, grazie Muhammad. BorderAround2() disegna il contorno per un intervallo specificato – imsome1

Problemi correlati