How can I center the text in the headers for an AG-grid control? I have tried using cellstyle and cellclass in the column definition but that did not work. Thank you
- 
                    also .ag-header-cell is set to text-align: center – user7400346 Sep 29 '17 at 14:08
 - 
                    1See, https://stackoverflow.com/questions/57933672/right-align-column-headers-in-aggrid for an answer that worked. – DancingDad Nov 09 '20 at 16:50
 
14 Answers
I'm using React and I just added the following snippet to my Table component's .css
.ag-header-cell-label {
  justify-content: center;
}
I'm overriding the .css class class from ag-grid which I found via devtools inspection, and discovered it's using flexbox for display.
See example (not react but same concept): https://embed.plnkr.co/O3NI4WgHxkFiJCyacn0r/
- 2,247
 - 3
 - 15
 - 32
 
- 1,225
 - 16
 - 19
 
- 
                    10What If I want to center text of selected header? Any ideias? How can I get a class from a specific column header? – Bernardo Marques Jun 10 '20 at 15:01
 - 
                    
 
You may use this property:
cellStyle: {textAlign: 'center'}
- 941
 - 8
 - 15
 
- 
                    9this does not affect the header. i tried `headerClass` and `headerCellClass` so far no luck.. – Sonic Soul May 18 '21 at 17:25
 - 
                    
 
A more complete solution I've been using for a while now, is to create a column definition helper like this:
export const columnCentered = {
  headerClass: 'text-center',
  cellStyle: {
    textAlign: 'center',
    // Add the following if you are using .ag-header-cell-menu-button 
    // and column borders are set to none.
    // marginLeft: '-16px'
  }
}
then add the following to your style.scss
.ag-header-cell.text-center {
  .ag-header-cell-label {
    justify-content: center;
  }
}
finally you can easily use it like this:
columnDefs: [
  { field: 'normalCol' },
  { field: 'centeredColA' ...columnCentered },
  { field: 'centeredColB' ...columnCentered }
]
- 2,228
 - 3
 - 19
 - 46
 
Assign a class to the cell as below:
gridOptions = {
  ...
  columnDefs: [
    ...
        { headerName: "field1", field: "field1", cellClass: "grid-cell-centered"}
    ...
  ]
}
css file:
.grid-cell-centered {
  text-align: center;
}
- 933
 - 1
 - 17
 - 25
 
- 
                    5i have a feeling this will only center the content of the cell and not the header – LucasSeveryn Dec 06 '19 at 16:41
 
If you want to align your text right, left or center in ag-grid. Then use this:-
cellStyle: { textAlign: 'right' }
cellStyle: { textAlign: 'left' } 
cellStyle: { textAlign: 'center' }
- 2,227
 - 2
 - 14
 - 18
 
- 113
 - 1
 - 1
 
To use a custom class, add headerClass: "text-center" to the column definition and css as follows:
text-center * {
    justifyContent: center
}
- 1,720
 - 5
 - 29
 - 50
 
For (independent) customization of each header, you can make a custom header component: https://www.ag-grid.com/javascript-grid-header-rendering/
- 1,140
 - 13
 - 27
 
I'm using Angular 8 and AG-Grid is nested deep in some other component.
I had to do this in order to make it work.
.ag-header-group-cell-label {
      justify-content: center !important;
}
And, this strictly needs to be under styles.scss file and not in the component scss file. Or else, it will not work.
Hope this helps someone.
- 2,153
 - 3
 - 28
 - 54
 
- 
                    1in component scss file: :host ::ng-deep .ag-header-cell-label { justify-content: center !important; } – Slava Oct 30 '20 at 17:01
 - 
                    1::ng-deep is being deprecated, just set component's ViewEncapsulation.None and your style works. – tsvedas Apr 28 '21 at 10:12
 
My CSS:
/*HEADER STYLE*/
        .ag-theme-alpine .ag-header-cell {
            padding-left: 10px;
            padding-right: 10px;
        }
        
        .ag-right-header .ag-header-cell-label {
             flex-direction: row-reverse;
        }
    
        .ag-center-header .ag-header-cell-label {
            justify-content: center;
        }
        .ag-left-header .ag-header-cell-label {
            flex-direction: row;
        }
        .ag-center-cell {
            text-align: center;
        }
        .ag-right-cell {
            text-align: right;
        }
        .ag-left-cell {
            text-align: left;
        }
And use inside columnDefs:
{
                headerName: 'header_name',
                field: 'header_field',
                headerClass: "ag-center-header",
                cellClass: "ag-center-cell"
            }
- 1,103
 - 10
 - 11
 
I'm using angular and I just want to center text in the grouped header so use this code to style.css
.ag-header-group-cell-label {
  justify-content: center;
}
- 16
 - 2
 
- 
                    Your answer has been included [here](https://stackoverflow.com/a/62811934/6670491) – HardcoreGamer Aug 09 '21 at 08:32
 
:host ::ng-deep .my-center-header-class .ag-header-cell-text {
    width: 100%;
    text-align: center;
}
Set headerClass as 'my-center-header-class' in colDef
- 363
 - 3
 - 5