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.