|
![]() |
#1 |
Registered User
Datum registracije: Aug 2004
Lokacija: Velika Gorica
Postovi: 41
|
C# - Pisanje u word - izmjena parametara sa tekstom u wordu
Imam problem, u wordu imam zapisane parametre npr. [Ime], [Prezime], [Tekst]...sa c# (aplikacijom), otvaram taj file te trazim odnosno radim replace [Ime] sa varijablom imena, [Prezime] sa varijablom prezimena...sve to radi dok ne dodem do [Tekst]. Ukoliko varijabla Tekst iznosi vise od 255 charaktera, baca mi exception string is to long. Kako je to najednostavnije izbijec? Vise neznam kaj da napravim. U prilogu je dio koda na koji nacin to radim. Hvala svakome na pomoci. Code:
Word.Application word = new Word.Application(); Word.Document doc = new Word.Document(); object missing = System.Type.Missing; try { object fileName = @PutanjaGenerickihDatoteka + ImeFilea; doc = word.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); doc.Activate(); string[] test= { Ime, Prezime, Tekst}; string[] parametri = { "[Ime]", "[Prezime]", "[Tekst]"}; // Provjeravaj svaki parametar foreach (string Parametri in parametri) { foreach (Word.Range tmpRange in doc.StoryRanges) { tmpRange.Find.Text = Parametri; tmpRange.Find.Replacement.Text = test[i]; tmpRange.Find.Text = test[i]; i++; tmpRange.Find.Wrap = Word.WdFindWrap.wdFindContinue; object replaceAll = Word.WdReplace.wdReplaceAll; tmpRange.Find.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref replaceAll, ref missing, ref missing, ref missing, ref missing); } } doc.SaveAs(@PutanjaObrazac + @GenerirajDatoteku() + FileCounter() + " - " +ImeFilea); doc.Close(ref missing, ref missing, ref missing); word.Application.Quit(ref missing, ref missing, ref missing); } catch (Exception ex) { doc.Close(ref missing, ref missing, ref missing); word.Application.Quit(ref missing, ref missing, ref missing); MessageBox.Show(ex.ToString()); } Hvala
__________________
MicroH@rd |
![]() |
![]() |
![]() |
#2 |
Premium
Datum registracije: Feb 2011
Lokacija: Split
Postovi: 262
|
tmpRange.Find.Text = "<" + objAttributeValue.AttributeTags[i] + ">"; tmpRange.Find.Replacement.Text = objAttributeValue.AttributeValues[i]; |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
#3 |
Premium
Datum registracije: Mar 2009
Lokacija: Zagorje
Postovi: 1,001
|
Ovaj kod mi je cudan jer ne radim s tim pa ti ne mogu reci za konkretni primjer ali: Probaj definirati ili prebaciti tu varijablu [Tekst] koja je string, u polje (ToCharArray), samo je zajeb to kaj vise polje nemres vratiti u string jednostavnom naredbom (ona postoji al u 95% slucajeva ne radi ili radi krivo). A kod polja je jedini limit memorija, tak da 255+ znakova ne predstavlja problem. |
![]() |
![]() |
![]() |
#4 | |
Registered User
Datum registracije: Aug 2004
Lokacija: Velika Gorica
Postovi: 41
|
Citiraj:
Slazem se, ali predstavlja mi problem sto tmpRange.Find.Replacement.Text poprima samo string i ja nemogu u string ugurat vise od 255 charactera ili se varam?
__________________
MicroH@rd |
|
![]() |
![]() |
![]() |
#5 |
Premium
Datum registracije: Mar 2009
Lokacija: Zagorje
Postovi: 1,001
|
Ne bih znao, najbolje bi bilo da probas, ja sam svaki put rucno radil find & replace kad mi je trebalo, sa usporedbom stringova ili sibal sve u polja pa usporedjivanje znak po znak. |
![]() |
![]() |
![]() |
#6 | |
Registered User
Datum registracije: Aug 2004
Lokacija: Velika Gorica
Postovi: 41
|
Citiraj:
A da idem opet rucno radit find & replace opet bi mi se to desilo ako se ne varam? Mislim da mi je najbolje rijesenje ukoliko je test.lenght veci od 255 razdvojit na dijelove, znaci dijeljeno sa 255 i onda ih samo joinat kasnije kako pise... ....uglavnom informacija word sam po sebi neda da se u polje REPLEACE unese vise od 255 karaktera....
__________________
MicroH@rd Zadnje izmijenjeno od: MicroHard. 02.07.2011. u 13:59. |
|
![]() |
![]() |
![]() |
#7 |
Premium
Datum registracije: Mar 2009
Lokacija: Zagorje
Postovi: 1,001
|
Nikad nisam pratio kolko znakova ima u stringovima ali se dam kladiti da je bilo vecih od 255 znakova i da je sve funkcioniralo. Ako podjelis tekst na blokove po 255 znakova, sjebat ces replace koji se nalazi na njihovoj granici, moze se desiti da pola rijeci koju trazis bude u jednom bloku a pola u drugom. Pravilni algoritam bi bio da uzmes od prvog znaka 255 znakova, pa od drugog 255 i tako do kraja sve provjeravati. Znaci najbolje(bar ja tako mislim) bi bilo rucno sklepat: kompletan text prebaciti u string, tekst pretrage u drugi string pa koristiti contains ili nesto drugo sto trazi string u stringu. A kad ga nadje da selektira i promjeni selektirano pa nastavi dalje do kraja. |
![]() |
![]() |
![]() |
#8 | |
Registered User
Datum registracije: Aug 2004
Lokacija: Velika Gorica
Postovi: 41
|
Citiraj:
__________________
MicroH@rd |
|
![]() |
![]() |
![]() |
#9 |
Premium
Datum registracije: Mar 2009
Lokacija: Zagorje
Postovi: 1,001
|
Tak nesto bi trebalo sljakati, nije mi sintaksa C# u malom prstu jer uglavnom koristim C++, al po googlu stima i neke teze logicke greske ne bi trebalo biti. |
![]() |
![]() |
|
|
Oglas
|
|
![]() |
|
|