Avatar billede encorez Nybegynder
26. august 2010 - 08:28 Der er 11 kommentarer og
1 løsning

php-excel-reader fra URL

Hej

I et andet spørgsmål har jeg fundet denne php-excel-reader
http://code.google.com/p/php-excel-reader/

Det fungere som jeg gerne vil have og var let at komme i gang med. Mit sidste problem er at excel filen jeg skal kunne indlæse, ikke er lokal, men ligger online.

I koden står:
$data = new Spreadsheet_Excel_Reader("test.xls");

Men her skal "test.xls" kommer fra f.eks.
http://www.davs.dk/test.xls

Jeg har forsøgt med at indlæse filen fra URLen med f.eks. file(), fopen() og andre, men uden noget brugbart resultat.

Det tætteste jeg er kommet er fopen(), så får jeg fejlen "The filename Resource id #6 is not readable".
Dvs. den kan godt se filen er der (ellers ville den have givet anden fejl), men kan åbenbart ikke læse den korrekt i dette php-excel-reader script.

Kan nogen hjælpe med hvad der skal til for at læse fra en URL i dette script fra php-excel-reader.

Mvh. Simon
Avatar billede repox Seniormester
26. august 2010 - 08:43 #1
har du prøvet med cURL eller file_get_contents()?
Avatar billede encorez Nybegynder
26. august 2010 - 08:55 #2
Ja, file_get_contents giver underligere tegn som det er det rå data som returneres og det tror jeg ikke dette script kan tage.

Jeg har også forsøgt med cURL sådan
$ch = curl_init("http://davs.dk/test.xls");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_SSLVERSION, 2);
$min_fil = curl_exec($ch);

Der får jeg fejlen "Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object"

Det skal siges at filen skal hentes fra en https side, hvis det gør nogen forskel.
Avatar billede repox Seniormester
26. august 2010 - 09:04 #3
HVis du curl'er henover en HTTP url på en HTTPS tilgængelig fil, er det klart det ikke virker.

Men file_get_contents() giver dig den binære data som filen indeholder - prøv lige at give et kodeeksempel på hvordan du forsøger at hente og anvende dataene med file_get_contents().
Avatar billede encorez Nybegynder
26. august 2010 - 09:16 #4
Mht. til Curl så bruger jeg selvfølgelig den rigtige https adresse. Det virker fint med andre cURL script jeg bruger på andre filer.

Mht til den anden-
$web_file = file_get_contents("https://www.davs.dk/test.xls");
Lige nu gør jeg ikke andet.
Avatar billede repox Seniormester
26. august 2010 - 10:01 #5
Du glemte at skrive hvad du gør med indholdet af $web_file?
Avatar billede encorez Nybegynder
26. august 2010 - 10:11 #6
Jeg forsøger blot med dette
$data = new Spreadsheet_Excel_Reader("$web_file");
Avatar billede repox Seniormester
26. august 2010 - 10:18 #7
Prøv at gemme indholdet i $web_file i en midlertidig fil og åbne den i stedet.
Avatar billede encorez Nybegynder
26. august 2010 - 10:27 #8
jeg sætter stor pris på hjælpen, men da jeg kun programmerer på hobby niveau, skal jeg bruge flere hints eller eksempler på hvad du mener med at gemme indholdet i en midlertidig fil.

Men det kunne sagtens lyde som det der skal til. Ved bare ikke hvordan det gøres. Kan du hjælpe med et eksempel?
Avatar billede repox Seniormester
26. august 2010 - 10:39 #9
<?php
  $web_file = file_get_contents("https://www.davs.dk/test.xls");
  $tmpfname = tempnam(sys_get_temp_dir(), "xls");
  file_put_contents($tmpfname, $web_file);

  $data = new Spreadsheet_Excel_Reader($tmpfname);
  // Gør det du skal med dokumentet

  unlink($tmpfname); // Husk dette, da filen ikke sletter sig selv igen
?>


Utestet, der kan være lidt syntaks fejl...
Avatar billede encorez Nybegynder
26. august 2010 - 10:56 #10
Hold da ferie. Det virker perfekt :)

Tusind tak for hjælpen. Læg et svar som tak.
Avatar billede repox Seniormester
26. august 2010 - 11:02 #11
Det fik du her; årsagen er ganske sikkert at excel reader objektet forventer en sti til en faktisk fil som den vil åbne og du derfor bare ikke kan indsætte dataindholdet.
Avatar billede dennisml Nybegynder
02. december 2010 - 00:13 #12
Hej. jeg fandt lige dette spørgsmål og tænkte om jeg måske kunne få lidt hjælp fra en af jer da jeg kan se i ved mere end mig ang. dette.

jeg vil gerne have så jeg kan, som er, se excel filen, men også rette i den og gemme det. hvordan gør man dette?

excel filen kan ligges hvor det skal være.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester