Hi amAturCodr,
You cann't ask multiple queries within a question. This is against forum rules and necessary to maintain clean forum. It is requested ask a new question. Ok for now i am giving answer.
When you make AutoGenerateColumns="false" you have to mention column name with boundfield or in templatefield like below.
<asp:GridView runat="server" ID="ExcelGrid" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="ID" HeaderText="ID" />
<asp:BoundField DataField="Name" HeaderText="Name" />
<asp:BoundField DataField="Country" HeaderText="Country" />
</Columns>
</asp:GridView>