C# tabela w word

0

Dzień dobry,
mam kilka List<string> i tabelę w word 1 wiersz. Mam też taki kod

int i = masaDokumnety.Count;               
                for (int j = 0; j < i; j++)
                {
                    document.Tables[2].Cell((j + 1), 1).Range.Text = "IX";
                    if (eksploatacjaDokumenty.ElementAt(j) == "0")
                    {
                        document.Tables[2].Cell((j + 1), 2).Range.Text = masaDokumnety.ElementAt(j);
                    }
                    if (eksploatacjaDokumenty.ElementAt(j) == "1")
                    {
                        document.Tables[2].Cell((j + 1), 3).Range.Text = masaDokumnety.ElementAt(j);
                    }
                    if (pozaKrajDokumenty.ElementAt(j) == "0")
                    {
                        document.Tables[2].Cell((j + 1), 12).Range.Text = nazwaKarty.ElementAt(j);
                    }
                    if (pozaKrajDokumenty.ElementAt(j) == "1")
                    {
                        document.Tables[2].Cell((j + 1), 12).Range.Text = "Wywóz poza RP";
                    }
                    document.Tables[2].Cell((j + 1), 11).Range.Text = masaDokumnety.ElementAt(j);
                    document.Tables[2].Cell((j + 1), 13).Range.Text = textBox6.Text;
                    document.Tables[2].Rows.Add(document.Tables[2].Rows[1]);
                }              

Plan był taki, że odpowiednie kolumny w tabeli się wypełnią, następnie zostanie utworzony nowy wiersz, nowy wiersz wypełni się danymi i tak do końca pętli. Niestety efekt jaki udało mi się uzyskać to np. 10 pustych wierszy i tylko ostatni wypełniony, co ciekawe, danym z listy z ostatniej pozycji (10)
Co się dzieje z danymi z listy od 0 do 9, dlaczego nie trafiają do tabeli?
Z góry dziękuję za każdą pomoc i wskazówkę :)

0

Nie chce mi się bawić w białkowy debuger, ale z tego co widzę, to Ty nigdzie nie tworzysz nowego wiersza, mimo że napisałeś, że tworzysz. Może tu jest problem?

0

Ostatnia linijka pętli tworzy nowy, pusty wiersz w tabeli. W efekcie mam pustą tabelkę na np 10 wierszy ale tylko w ostatnim są dane.

0

Nie, nie tworzy, tam nigdzie nie ma żadnego new ani uzycia jakiejś metody typu Create ani w ogóle niczego co by sugerowało powstawanie nowego obiektu.

0

A nie powinno być, że najpierw dodajesz wiersz a potem uzupełniasz komórki?

0

Nie, ponieważ jeden wiersz mam już tabeli gotowy, a każde add powiela ten wiersz. Chciałem wypełnić od samej góry, więc najpierw wypełniam wiersz, który już jest w tabeli, a potem doklejam do niego drugi pusty. Tak to miało działać w teorii, ale ten kod nie działa do końca tak jak chciałem i nie wiem dlaczego

0

Wydaje mi się, że przy wowyłaniu Rows.Add();
jako parametr nie dajesz document.Tables[2].Rows[1]
tylko referencje do ostatniego wiersza. Ale na 100% pewien nie jestem

A poza tym trochę to bez sensu bo zostajesz na końcu z pustym wierszem.

Ja bym to zmienił na twoim miejscu w taki sposób, żeby wszystkie wiersze tworzyć w pętli

0

Ok, dzięki :) zaraz coś naskrobię i zobaczę czy działa :)

0

Dziwna ta dokumentacja.

No ale w takim razie, to ja bym po prostu najpierw dodawał wiersz, a potem manipulował jego wartościami. Ty robisz odwrotnie.

2

Z dokumentacji wynika, że prametr przy Rows.Add() jest opcjonalny. Więc go nie podawaj, i zawsze będziesz wstawiał na koniec.I tak Ci to działało. Miałeś wiersz uzupełniłeś go. Potem wstawiałeś kolejny ale zawsze na początek, a uzupełnianie było zawsze ostatniego.

0

Dzięki :) właśnie o to chodziło, teraz działa jak należy :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1