Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP/VBA/??] Splitten plain txt file naar Word bestand

Pagina: 1
Acties:
  • 194 views

  • shorty
  • Registratie: Juli 2000
  • Laatst online: 06-11-2024

shorty

tralalalala!

Topicstarter
Ik zit met een apart probleempje qua het opmaken van een x aantal duizend brieven. Ik heb een export gekregen vanuit een programma waarbij het alleen mogelijk was deze export in plain text te krijgen. Het bestand ziet er als volgt uit:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[10 witregels]
[1 straatnaam regel]
[1 witregel]
[1 postcoderegel]
[1 plaatsregel]
[5 witregels]
[stuk tekst, variabel aantal regels]
[10 witregels]
[1 straatnaam regel]
[1 witregel]
[1 postcoderegel]
[1 plaatsregel]
[5 witregels]
[stuk tekst, variabel aantal regels]
[10 witregels]
[1 straatnaam regel]
[................................]


Het gehele bestand staat zo vol, zeg met 10.000 adressen. Allemaal met hetzelfde vaste aantal witregels er tussen. Alleen het stuk tekst is variabel van lengte. Er zit dus zeker wel een regelmaat in het bestand.

Nu moet ik in principe het adres en het stuk tekst eruit filteren en vervolgens in een nieuw document krijgen in de juiste opmaak (adres moet op bepaalde hoogte staan i.v.m. venster in enveloppe). Maar ook maar 1 enkel adres per pagina (brief). Heeft iemand enig idee hoe dit goed te doen, qua taal en aanpak? Ben namelijk meer database georienteerd dan txt file georienteerd.

Is wat ik wil uberhaupt wel mogelijk?

  • storeman
  • Registratie: April 2004
  • Laatst online: 19-11 11:29
Je kunt met php een explode doen op je document, als eerste op de briefscheiding.

Dan heb je per brief de data. Vervolgens kun je per regel een explode doen, je weet van een paar stukken geen lengte, dat maakt het lastiger, maar hier zou je met behulp van een regular expression waarschijnlijk wel wat mee moeten kunnen.

Excuus, ik had niet begrepen dat bovenstaande code al meerdere brieven bevatte... maar in dat geval doe je dus:

PHP:
1
2
3
4
5
6
7
$strText = str_replace("\r\n", "\n", $strText);
$arrBrieven = explode("\n\n\n\n\n\n\n\n\n\n", $strText);

foreach($arrBrieven as $brief){
$arrRegels = explode("\n", $brief, 6);
...
}


Het blijft een beetje houtje touwtje code, vooral omdat je niet weet wat er in het stuk tekst gebeurd.

[ Voor 40% gewijzigd door storeman op 21-02-2008 09:58 ]

"Chaos kan niet uit de hand lopen"


  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Tsja, ik zou inderdaad ook wat leuke explodes doen :)

Explode eerst op 10 witregels, dan heb je alle losse records
Loop met een for loop door die array, en explode elk item op 5 witregels, dan heb je nog een array
explode de eerste op \n, en de 2e trim() je en vwalla :)
Geen regexes nodig als je het mij vraagt.

Stop uploading passwords to Github!


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:35

Creepy

Tactical Espionage Splatterer

Zie [WORD 2002] Brieven opmaken. 1 topic is wel genoeg.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Dit topic is gesloten.