[php]Excel .xls naar .csv

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 06:42
Ik ben op dit moment bezig met een systeem waarbij er zeer variabele gegevens in een database moeten, maar de bron die deze gegevens aanlevert is een mooi dagelijks .xls bestand.
.csv kan ik importen in een MySQL database, ik weet al hoe dit moet, dus het krijgen van een geldig .csv bestand is op dit moment hetgene waarnaar ik op zoek ben.

Is het mogelijk met PHP een .xls bestand uit te lezen en om te zetten naar .csv ?(dagelijks met de hand doen gaat nogal erg ver, vooral als de rest van het script met een cronjob wordt aangeroepen)

Als dit niet mogelijk is, is er nog een andere manier om dit te doen (zonder gebruik van windows machines te maken, zodat 1 linux server het allemaal kan doen) ?

In mijn zoektocht voorafgaande aan dit topic ben ik dit al tegengekomen :
Perl:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/usr/bin/perl
use strict;
use DBI;
use Spreadsheet::ParseExcel::Simple;
use LWP::Simple;
my $get=getstore('http://source/file.xls','/tmp/excel_file.xls');
if(not $get->is_success()){
    die("Didn't get the excel file!");
    exit;
}
my $dbh=DBI->connect( "dbi:mysql:database;host=<foreign host>", "<user>", "<pass>",{ RaiseError => 1} )
      or die ("Couldn't connect to database");
my $insert=$dbh->prepare('insert into table(row1,row2,row2) values(?,?,?)');
  my $xls = Spreadsheet::ParseExcel::Simple->read('/tmp/excel_file.xls');
  foreach my $sheet ($xls->sheets) {
     while ($sheet->has_data) {
         my @data = $sheet->next_row;
         $insert->execute(@data);
     }
  }
$insert->finish();
$dbh->disconnect();


Maar door het totale gebrek aan perl kennis dat ik heb kan ik er helemaal niets mee...
Wat ik ervan snap voert hij dit direct in, in de db, dat is ook niet echt de bedoeling. Daarom wil ik het liever in php doen, die taal ken ik iets beter :D

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • Kolonel_E
  • Registratie: Juli 2001
  • Laatst online: 07-09 18:14
dat is geen php script maar een perl script

Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 06:42
Kolonel_E schreef op 12 september 2003 @ 22:42:
dat is geen php script maar een perl script
Dat weet ik 8)7

Maar ik kan mijn bericht niet zo schrijven zodat het ook werkelijk gelezen word... 8)7
Maar door het totale gebrek aan perl kennis dat ik heb kan ik er helemaal niets mee...
Wat ik ervan snap voert hij dit direct in, in de db, dat is ook niet echt de bedoeling. Daarom wil ik het liever in php doen, die taal ken ik iets beter :D
Staat er om een reden ;)

Maargoed, bedankt voor je reactie in ieder geval ;)

sebsoft.nl


Acties:
  • 0 Henk 'm!

  • Suepahfly
  • Registratie: Juni 2001
  • Laatst online: 17-09 17:05
Kolonel_E schreef op 12 September 2003 @ 22:42:
dat is geen php script maar een perl script
Lees de post nog een goed door, TS kan geen perl en wil dit in PHP doen.


[edit]
Volgens mij is dit precies wat je zoekt
http://www.zakkis.ca/products/abc_lightparser/
This script reads MS Excel file and transports its data into Database, or HTML-page, etc.
It does this using PHP under Unix and Linux without Windows tools like COM.
You require just a PHP enabled web-server and an "excelparser.php" installed on it.

[ Voor 74% gewijzigd door Suepahfly op 12-09-2003 22:58 ]


Acties:
  • 0 Henk 'm!

  • Icheb
  • Registratie: Augustus 2001
  • Laatst online: 06:42
PEAR, het is een idee, ik weet niet of het daarmee gaat, straks alle documentatie er maar weer even bij pakken (heb er nog nooit mee gewerkt eigenlijk :D)
De bedoeling is dat het script op dezelfde server wordt uitgevoerd als waar de db staat, aangezien dit mijn eigen server is, is het maken van een cronjob ook maar een kwestie van 'crontab -e' :)

Maar ik ga nu eerst eens even naar PEAR kijken

edit:
[edit]
ff gezocht op pear.php.net en ik kwam het volgende tegen:

http://pear.php.net/package/Spreadsheet_Excel_Writer

misschien heb je er wat aan
Ik heb het even snel bekeken, deze is alleen in staat naar Excel te schrijven, zo te zien ondersteund PEAR geen dingen die je in staat stellen het tegenovergestelde te doen...
Ik ga nog even verder graven

edit2 :
[edit]
Volgens mij is dit precies wat je zoekt
http://www.zakkis.ca/products/abc_lightparser/


quote:
--------------------------------------------------------------------------------

This script reads MS Excel file and transports its data into Database, or HTML-page, etc.
It does this using PHP under Unix and Linux without Windows tools like COM.
You require just a PHP enabled web-server and an "excelparser.php" installed on it.


--------------------------------------------------------------------------------
Nu nog een edit en ik post een nieuw bericht :D

Doet precies wat ik nodig heb, nu eens zien of er ook ergens een downloadbare demo is, al duurt het een uur per bestand, het moet kunnen ;)

Bedankt voor je hulp met zoeken hiernaar

[ Voor 69% gewijzigd door Icheb op 12-09-2003 23:03 ]

sebsoft.nl


  • Johannes
  • Registratie: Juni 2000
  • Laatst online: 09-07 21:03
Als je PHP op een Windows-bak draait waar Excel ook opstaat, dan kun je het ook met COM doen (zie http://www.php.net/manual/en/ref.com.php). Dan ben je iig verzekerd van een correcte conversie (wat Excel onder correct verstaat tenminste ;)).

Uit volle borst op weg naar nergens / Zonder reden zonder doel
Met m'n zeden en m'n zonden / En mijn angstig voorgevoel
Laat mij mijn kont tegen de krib / Laat mij dit goddeloze lied
Hef jij je handen maar ten hemel / Maar red mij niet


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 20-09 18:51
Het punt is dat dat Perl-script een module gebruikt die het inlezen van het Excel-bestand voor je verzorgd. Is het echt geen optie om even een basiscursus Perl te doen (zoveel verschilt het niet van PHP en het is een erg bruikbare, praktische vaardigheid) en dat scriptje om te bouwen naar een versie die de boel, comma separated, naar een bestand schrijft?
Pagina: 1