Hi kai,
You can't remove columns while exporting to Excel. You can set the visibility property to false. So that the column will not exported in the excel.
For modify the header you can set the text property and style property.
And as you have set the cell visibility to false that is wrong. If you set the visibility of cell to false then in the excel the next cell will be shifted. So instead of set visibility to false set the text property to empty.
' Sets header row cell Text.
GridView1.HeaderRow.Cells(0).Text = "Id";
' Sets Header row cell color.
GridView1.HeaderRow.Cells(0).Style.Add("background-color", "red");
' Hide Column in excel after exporting
GridView1.Columns(1]).Visible = false;
' Sets data row text as empty.
row.Cells(0).Text = "";