Page 1 of 2
[Opgelost] Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 7:11 am
by Arno
Voor de site van een popkoor maak ik gebruik van Company Directory om daarmee een smoelenboek te genereren. Werkt prima, en zelfs zo goed dat deze beter bijgehouden wordt dan de ledenadministratie in het bestuur. In het smoelenboek kun je dan ook alle adresgegevens etc. van personen invoeren, en dit werkt echt super.
Nu ontstond er de vraag vanuit het bestuur of het mogelijk is om de gegevens van het smoelenboek te downloaden als Excel-bestand, zodat je altijd de beschikking hebt over de meest actuele gegevens (er vanuit gaande dat die op de site het meest actueel zijn). Via de samenvattingssjablonen in Company Directory kan ik eenvoudig een tabel genereren die alleen de info toont die ik wil zien, maar weten jullie of het ook mogelijk is dit naar een bestand weg te schrijven dat door Excel leesbaar is (xls of xml bijvoorbeeld)?
De lijst die ik nu genereer via de samenvattingssjabloon:
Ik vind wel scripts die van een php-pagina een Excel-bestand kunnen genereren, maar die verlangen (voor zover ik kan zien) een schoon php-bestand met alleen de info die je wil omzetten. Een lijst genereren via CMSMS bevat al snel allerlei html-spul wat uit je paginasjablonen komt.
Iemand hier toevallig ervaring mee?
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 8:22 am
by deactivated010521
----------
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 8:26 am
by Arno
arnoud wrote:
Genereer een tab of comma delimited file deze kunnen in ieder willekeurige spreadsheet (ook Excel) geimporteerd worden:
zoiets als:
"voornaam01-tab"\t"achternaam01-tab"\t"adres01-tab"\n
"voornaam02-tab"\t"achternaam02-tab"\t"adres02-tab"\n
"voornaam01-comma", "achternaam01-comma", "adres01-comma"\n
"voornaam02-comma", "achternaam02-comma", "adres02-comma"\n
Eh...ja...maar weet je ook hoe ik dit via CMSMS kan regelen?

Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 9:30 am
by deactivated010521
----------
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 11:05 am
by Arno
Arnoud, dat ziet er goed uit. Ik ga er van 't weekend even naar kijken. Hopelijk kom ik eruit om via die SQL Query de juiste tabellen van de Company Directory aan te roepen; dat soort dingen doe ik vrijwel nooit handmatig.
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 11:20 am
by Jos
Ik weet niet of de methode van Arnoud je document direct in excel opent, wellicht wel.
Anders kan ik je deze headers aanraden:
Code: Select all
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=Ledenlijst_" . date('Ymd') . ".xls");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
Waarbij je de $output op moet maken in een html document met een table (tr en td's)
Met excel 2007 komt er overigens nog wel een melding tussendoor dat het niet de juiste indeling zou zijn, met 2003 komt er geen melding.
Even los hiervan is het aan te raden om de screenshotjes in je eerste post hier weg te halen, al ziet het er wel vreselijk mooi uit. Maar deze privé gegevens en foto's gaan niemand wat aan toch?
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 11:28 am
by Arno
Jos wrote:
Even los hiervan is het aan te raden om de screenshotjes in je eerste post hier weg te halen, al ziet het er wel vreselijk mooi uit. Maar deze privé gegevens en foto's gaan niemand wat aan toch?
Hmm, je hebt helemaal gelijk. Had ik nog helemaal niet aan gedacht. Ik zal de eerste verwijderen en de tweede even een beetje doezelen...bedankt voor de tip!
Wat betreft je code; dit ziet er wel goed uit. De tabel zoals ik die nu genereer is een normale html table, dus wellicht is dat goed te implementeren. Kan ik de codes die je gebruikt dan gebruiken in een CMSMS template, waarbij ik alleen een {content} laat staan en daar de tabel inzet?

Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 11:35 am
by Jos
Ja in een template is het proberen waard. Boven de {content} moet je dan alsnog een UDT aanroepen waarin je de headers hebt staan.
Als je de melding krijgt zoiets als "headers already sent" werkt het niet via deze oplossing en zul je alles toch in een UDT moeten gieten.
Het leuke van een table is dat je er ook allerlei opmaak aan mee kunt geven, zoals etc
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 12:34 pm
by Arno
Sorry, maar ik kom er niet uit. CSS is mijn ding, dit soort technische html-dingen niet. Wat moet ik in m'n template laten staan qua html en header dingen? Wanneer ik een nieuwe paginatemplate aanmaak zit er standaard natuurlijk al veel in (doctype, html xmlns, head etc.) Moet ik dat laten staan, of moet dat juist weg?
In het laatste geval zou m'n template dan worden:
Waarbij {excel-header} mijn UDT is. Maar dat ziet er dan weer te simpel uit (en werkt overigens ook niet; ik krijg netjes de tabel te zien in m'n browser).
Zou je me nog een stapje verder willen helpen?

Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:05 pm
by Jos
Ja, ik heb het aan de praat gekregen
Ik heb eerst een UDT aangemaakt
UDT:
excel_header
Code: Select all
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=Ledenlijst_" . date('Ymd') . ".xls");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
Daarna heb ik een template aangemaakt. Zoals jij het voorstelt werkt het al, maar als je wat html-zaken en opmaak erbij voegt, wordt het nog mooier:
Template:
exceldump
Code: Select all
{excel_header}
<__html>
<head>
<title>Excel Spreadsheet</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</__body>
<font size="8" face="Arial">
{content}
</font>
<__body>
</__html>
Tot slot heb ik een pagina aangemaakt. Deze pagina heb ik de template 'exceldump' aan toegekend.
In het contentveld heb ik een table gezet, die keurig in excel wordt weergegeven als ik op de menulink naar deze pagina klik
voilá
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:18 pm
by Arno
Ik heb het nu exact zo staan zoals je heb aangegeven, maar ik krijg een keurige tabel in m'n browser te zien, niet in Excel
Als ik in de bron kijk van m'n html-pagina krijg ik:
Code: Select all
<__html>
<head>
<title>Excel Spreadsheet</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
</__body>
<font size="8" face="Arial">
<table>
<tbody>
<tr>
<td><b>Naam</b></td>
<td><b>Adres</b></td>
<td><b>Postcode en plaats</b></td>
<td><b>Telefoon</b></td>
<td><b>E-mailadres</b></td>
</tr>
<tr>
<td>Voornaam Achternaam</td>
<td>Straatnaam 1</td>
<td>1234 AB Oud-Beijerland</td>
<td>(0123) 456789</td>
<td>naam@popupkoor.nl</td>
</tr>
</tbody>
</tabel>
</font>
<__body>
</__html><!-- 0,256979 / 6 / 9291408 / 0 -->
Perfect voor webgebruik natuurlijk, maar ik zou 'm zo graag in Excel zien

Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:27 pm
by Jos
Oei... jammer idd...
De headers worden door jouw browser waarschijnlijk niet op dezelfde manier geslikt als bij mij. Bij mijn weten werkt dit op windows-XP-systemen met FF en IE6/7 en Excel2003/2007
Op wat voor systeem draai je zelf? Op een Mac toevallig?
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:31 pm
by Arno
Jos wrote:
Oei... jammer idd...
De headers worden door jouw browser waarschijnlijk niet op dezelfde manier geslikt als bij mij. Bij mijn weten werkt dit op windows-XP-systemen met FF en IE6/7 en Excel2003/2007
Op wat voor systeem draai je zelf? Op een Mac toevallig?
Ja, op een Mac, en in zowel Safari als Firefox pakt 'ie hem niet. Ik heb 'm nu even getest op een Windows PC (onder IE) waar ook Excel op geïnstalleerd staat, maar ook daar krijg ik geen download te zien (hetzelfde dus als op de Mac).
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:43 pm
by Arno
Soms als ik refresh krijg ik deze melding in m'n browser, misschien kun je daar nog iets uit herleiden:
Code: Select all
string(121) "Smarty error: [in template:34 line 1]: syntax error: unrecognized tag: excel-header (Smarty_Compiler.class.php, line 446)" string(110) "Smarty error: [in template:34 line 1]: syntax error: unrecognized tag '' (Smarty_Compiler.class.php, line 590)"
Ik werk trouwens met CMSMS 1.4
Re: Automatisch Excel-lijst genereren via company directory
Posted: Thu Jul 23, 2009 2:46 pm
by Jos
De foutmelding is niet te zien
Aan de CMSms versie kan het haast niet liggen