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?
Vous devez définir individuellement ces
.Borders[Excel.XlBordersIndex.xlEdgeBottom]
.Borders[Excel.XlBordersIndex.xlEdgeRight]
.Borders[Excel.XlBordersIndex.xlEdgeLeft]
.Borders[Excel.XlBordersIndex.xlEdgeTop]
Peut-être que cela peut aider:
workSheet_range.BorderAround(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThick);
C'est le code qui définit une bordure autour de chaque cellule:
xlWS.get_Range("C9", "N9").Cells.Borders.Weight = XL.XlBorderWeight.xlMedium;
Je l'ai fait sans impact sur la performance. Je prends un simple Excel pour formater:
Avant
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
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;
// ** - 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)));
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 );
ws.UsedRange.BorderAround(
Xl.XlLineStyle.xlDash,
Xl.XlBorderWeight.xlThick,
Xl.XlColorIndex.xlColorIndexAutomatic,
ColorTranslator.ToOle(Color.Blue));