Formatter le datagrid pour que les accents passent sous excel
Bonjour,
J'exporte mon datagrid dans un fichier excel mais le problème est que les accents ne passent pas sous excel. J'ai pris une fonction trouvé sur internet mais qui ne marche pas
Lorsque je lance cette fonction avec mon datagrid en param j'ai une erreur du type :
Code:
La collection Controls ne peut pas être modifiée, car le contrôle contient des blocs de code (c'est-à-dire <% ... %>).
voila le code de la fonction avec la ligne qui renvoie l'erreur en gras :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
| private void verifColonne(Control monDataGrid)
{
//On récupère le nombre de controles enfants composant le DataGrid
int nbControls = monDataGrid.Controls.Count - 1;
while (nbControls >= 0){
verifColonne(monDataGrid.Controls[nbControls]);
nbControls = nbControls - 1;
}
//Si la cellule ne contient pas du texte simple
if (!(monDataGrid is TableCell)){
//Si le controle concerné à une prorpiété "Selected Item" alors...
//Remarque : Seul les controles offrant des choix multiples ont une propriété "SelectedItem"
if( monDataGrid.GetType().GetProperty("SelectedItem")!= null)
{
LiteralControl controleLitteral1 = new LiteralControl();
monDataGrid.Parent.Controls.Add(controleLitteral1);
try
{
//La cellule prend alors pour valeur le texte correspondant à la propriété "SelectedItem"
controleLitteral1.Text = (string)monDataGrid.GetType().GetProperty("SelectedItem").GetValue(monDataGrid, null);
}
catch (Exception monException)
{
//On récupère l'exception en cas de problème
Response.Write(monException.Message);
}
//Le controle concerné est retiré
monDataGrid.Parent.Controls.Remove(monDataGrid);
}
else
{
// Si le controle concerné n'a pas de propriété "SelectedItem" alors on récupère le
// texte (s'il y en a un) de sa propriété "Text"
if ((monDataGrid.GetType().GetProperty("Text") != null))
{
LiteralControl controleLitteral2 = new LiteralControl();
monDataGrid.Parent.Controls.Add(controleLitteral2);
// On attribue le texte de la propriété "Text" à la cellule concernée
controleLitteral2.Text = (string)monDataGrid.GetType().GetProperty("Text").GetValue(monDataGrid, null);
monDataGrid.Parent.Controls.Remove(monDataGrid);
}
}
} |
Si vous avez une idée de comment faire pour corriger cette fonction ou si vous avez un autre moyen de formatter mon datagrid pour qu'il s'exporte sous excel, n'hesitez pas.
Merci de vos réponses.