C# tabela w word

Odpowiedz Nowy wątek
2019-09-11 14:41
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ę :)

Pozostało 580 znaków

2019-09-11 16:11
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?


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-09-12 11:18
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.

Pozostało 580 znaków

2019-09-12 11:23
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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-09-12 11:37
0

Chyba nie rozumiem :(
zrobiłem dokładnie tak:

https://docs.microsoft.com/en[...]s-to-word-tables?view=vs-2019

Pozostało 580 znaków

2019-09-12 11:55
0

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

Pozostało 580 znaków

2019-09-12 12:12
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

Pozostało 580 znaków

2019-09-12 12:16
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

edytowany 2x, ostatnio: szydlak, 2019-09-12 12:24

Pozostało 580 znaków

2019-09-12 12:27
0

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

Pozostało 580 znaków

2019-09-12 12:28
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.


"HUMAN BEINGS MAKE LIFE SO INTERESTING. DO YOU KNOW, THAT IN A UNIVERSE SO FULL OF WONDERS, THEY HAVE MANAGED TO INVENT BOREDOM."

Pozostało 580 znaków

2019-09-12 12:44

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.

edytowany 1x, ostatnio: szydlak, 2019-09-12 12:47

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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

Robot: CCBot