web-dev-qa-db-fra.com

Comment définir une bordure autour de plusieurs cellules dans Excel à l'aide de C #

Je travaille sur un projet qui crée des fichiers Excel.

Je ne parviens pas à placer une bordure sur plusieurs cellules pour organiser le fichier Excel. 

Disons que je veux une bordure de la cellule B5 à B10. Il ne devrait pas y avoir de frontières entre B5, B6, B7, ...

Actuellement, j'ai ce code: 

workSheet_range = worksheet.get_Range("B5", "B10");
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();

Elle crée les frontières, mais elle place une bordure autour de chaque cellule au lieu d’une grande bordure pour toutes les cellules. 

Comment puis-je accomplir cela? 

13
Arnout

Vous devez définir individuellement ces

.Borders[Excel.XlBordersIndex.xlEdgeBottom] 
.Borders[Excel.XlBordersIndex.xlEdgeRight]
.Borders[Excel.XlBordersIndex.xlEdgeLeft]  
.Borders[Excel.XlBordersIndex.xlEdgeTop]
13
Tim Williams

Peut-être que cela peut aider:

workSheet_range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThick);
8
Simon

C'est le code qui définit une bordure autour de chaque cellule:

xlWS.get_Range("C9", "N9").Cells.Borders.Weight = XL.XlBorderWeight.xlMedium;
4
Santosh Artham

Je l'ai fait sans impact sur la performance. Je prends un simple Excel pour formater: 

Avant

 enter image description here

J'ai réussi à stocker la plage en tant que A1:C4 dans une variable de manière dynamique dans exRange et j'ai utilisé le code ci-dessous pour définir une bordure.

((Range)excelSheet.get_Range(exRange)).Cells.Borders.LineStyle = XlLineStyle.xlContinuous;


Après

 enter image description here

2
Sarath Avanavu

Voici ma solution, utilisez simplement la fonction UsedRange () 

Excel.Range tRange = oSheet.UsedRange;
            tRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
            tRange.Borders.Weight = Excel.XlBorderWeight.xlThin;        
0
MORFEE89
// ** - You Should do it in all Cells 

//BorderAround: Medium**

worksheet.get_Range("b5", "b5").Cells.BorderAround(Missing.Value, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, ColorTranslator.ToOle(Color.FromArgb(255, 192, 0)));

worksheet.get_Range("b6", "b6").Cells.BorderAround(Missing.Value, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, ColorTranslator.ToOle(Color.FromArgb(255, 192, 0)));

worksheet.get_Range("b10", "b10").Cells.BorderAround(Missing.Value, Excel.XlBorderWeight.xlMedium, Excel.XlColorIndex.xlColorIndexAutomatic, ColorTranslator.ToOle(Color.FromArgb(255, 192, 0)));        
0
E Coder

Ce code met une bordure autour de la zone (rangée1, col1) à (rangée2, col2). Les cellules individuelles ne reçoivent pas de bordure. La couleur variable est un numéro d'indice de couleur entier. Voir http://www.databison.com/Excel-color-palette-and-color-index-change-using-vba/ pour une liste des numéros d'index et leurs couleurs correspondantes.

    Range cell1 = worksheet.Cells[row1,col1];
    Range cell2 = worksheet.Cells[row2,col2];
    Range range = worksheet.get_Range(cell1,cell2);
    range.BorderAround(
        Type.Missing, XlBorderWeight.xlThick, (XlColorIndex)color, Type.Missing );
0
SaulN
ws.UsedRange.BorderAround(
                        Xl.XlLineStyle.xlDash,
                        Xl.XlBorderWeight.xlThick,
                        Xl.XlColorIndex.xlColorIndexAutomatic,
                        ColorTranslator.ToOle(Color.Blue));
0
Hamid