none
Utilisation de WORD RRS feed

  • Discussion générale

  • 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:

    Code Snippet

                       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.

    Supergilga.
    jeudi 24 mai 2007 09:05

Toutes les réponses

  • Il n'est pas évident de vous répondre comme cela....

     

    Le mieux que je puisse vous conseiller, c'est d'essayer de débugger en commentant certaines parties de votre code afin de voir pourquoi cela ne fonctionne pas comme voulu.

     

     

    HTH

     

     

     

    samedi 26 mai 2007 09:50