2013-07-19 16 views
6

Ich bin auf der Suche nach einer Grenze zu einer Zelle mit der Microsoft.Office.Interop.Excel Bibliothek.Microsoft.Office.Interop.Excel: Wie man einen Rahmen an eine Zelle anlegt

Ich führe eine while-Schleife, die nach einer leeren Zelle innerhalb einer bestimmten Spalte sucht, sobald die Zelle gefunden wird, möchte ich einen Rahmen darauf anwenden.

Ich kenne da viele Foren zu diesem Bereich, aber ich kann nicht die Bereichsfunktion verwenden, da ich nicht weiß, auf welche Zelle es genau angewendet wird.

Meine Idee war:

(Excel.Range) xlWS.Cells [Zeile 1] .Borders.LineStyle = (Was auch immer Wert);

Irgendwelche Ratschläge? (Neben Links zu anderen Foren habe ich schon viele Formulare durchgesehen)?

+0

Also, was mit Ihrer aktuellen Idee nicht funktioniert? – chancea

+0

Es war mehr eine Vermutung, dank Jiverson konnte ich den richtigen Code generieren, um es zu tun! –

+0

Super! Wenn Ihre Antwort Ihr Problem gelöst hat, klicken Sie auf das Häkchen, um es zu akzeptieren, damit wir wissen, dass diese Frage gelöst wurde. – chancea

Antwort

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; 

Weitere Details finden Sie unter answer.

+0

Danke! Mit Ihrem Rat konnte ich Code generieren, der die gleiche Funktionalität abzüglich der Menge an Code bietet. –

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; 

Hoffe, das hilft jemandem! Fügt einen dünnen Linienrand um die Zelle [Zeile, Spalte] ein!

+0

Das funktionierte wie ich wollte. Das einzige, was ich geändert habe Excel.Range Zelle = range.Cells; – SubqueryCrunch

1

Dies basiert auf der Antwort von jiverson, ist aber viel knapper für grundlegende Bedürfnisse; erstellen Sie einfach eine Reihe, seine Grenzen erhalten, und fügen Sie einen Rand auf den Boden des Bereichs:

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

Natürlich können Sie eine Grenze nach oben und an den Seiten hinzufügen könnte auch mit xlEdgeTop, xlEdgeLeft und xlEdgeRight .

3

jede Zelle in Bereich

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

Um ganze Reihe

chartRange.BorderAround2(); 
+0

Ich suchte das, danke Muhammad. BorderAround2() zeichnet eine Gliederung für einen bestimmten Bereich – imsome1