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 :
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
.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