Bienvenue sur Labo-dotnet Identification | Enregistrement | Faq

Office

Démarré par Gilgamesh à 05-24-2007 15:27. Le sujet a 0 réponse(s).

Print Search
Sort Posts:    
   05-24-2007, 15:27
Gilgamesh n'est pas en ligne. Dernière activité : 24/05/2007 12:24:46 Gilgamesh

Non Noté
Rejoint : 05-24-2007
Messages : 1
Tableaux WORD en C#
Reply Quote
Bonjour,

J'ai un problème, je souhaite générer dynamiquement un document WORD, donc je génère mon tableau principal à 2 colonnes et X lignes selon les lignes retournées de ma requête. Dans la colonne de gauche, une chaine de caractères tout ce qu'il y a de plus simple, dans la colonne de droite, un tableau à 2 colonnes et X lignes toujours selon une autre requête SQL (les 2 colonnes contiendront de simples données).
Pour le moment je gère avec des SortedList en attendant de faire avec des requêtes SQL.
Mon problème est que j'ai:
1ère ligne: string (à gauche) et tableau (à droite)
2ème ligne: string (à gauche) et aucun tableau (à droite)
le tableau qui devait s'afficher à la 2ème ligne s'affiche en 1ère ligne à l'intérieur du tableau de la cellule de droite. La propriété NestingLevel est à 3 ce qui veut dire qu'elle s'imbrique encore dans le tableau alors que je veux qu'il sorte du tableau et le mette à la suite normalement.
Voici mon code:


                   Word.ApplicationClass aWord = new Word.ApplicationClass();
                    aWord.Visible = true;
                    Word.Document aDoc = aWord.Documents.Add(ref modeleDoc, ref missing, ref missing, ref missing);
                    Word.Table tbl1, tbl2;
                    Word.Cell cell;

                    SortedList sl1 = new SortedList();
                    SortedList sl2 = new SortedList();
                    SortedList sl3 = new SortedList();
                    sl2.Add("a1", "aa");
                    sl2.Add("a2", "bb");
                    sl2.Add("a3", "cc");

                    sl3.Add("b1", "aa");
                    sl3.Add("b2", "bb");
                    sl3.Add("b3", "cc");

                    sl1.Add("a", sl2);
                    sl1.Add("b", sl3);
                   
                    tbl1 = aDoc.Tables.Item(1);
                    object row = null;
                    Word.Range rng = null;
                    int start = 10;
                    int end = 10;
                    for (int p = 0; p < sl1.Count; p++)
                    {
                        row = tbl1.Rows.Item(p + 1) as object;
                        tbl1.Rows.Add(ref row);
                        tbl1.Cell(p + 1, 1).Range.Text = sl1.GetKey(p).ToString();

                        SortedList sln = (SortedList)sl1.GetByIndex(p);

                        object deb = (object)start;
                        object fin = (object)end;

                        rng = aDoc.Range(ref deb, ref fin);
                        tbl2 = aDoc.Tables.Add(rng, sln.Count, 2, ref missing, ref missing);

                        for (int r = 0; r < sln.Count; r++)
                        {
                            tbl2.Cell(r + 1, 1).Range.Text = sln.GetKey(r).ToString();
                            tbl2.Cell(r + 1, 2).Range.Text = sln.GetByIndex(r).ToString();
                        }
                        tbl2.Rows.Item(1).Range.Font.Bold = 1;
                        tbl2.Rows.Item(1).Range.Font.Italic = 1;

                        start *= 2;
                        end *= 2;
                    }



Merci d'avance.

Gilgamesh.

Adresse IP : Connecté   Rapport 
Labo-dotnet » Programmation .... » Office » Tableaux WORD en C#

Sponsorisé par Community Server


Conditions d’utilisation et Copyright
Respect de la vie privée