# Excel (xls oder csv) nach mysql (via php) portieren



## Heinz Schrot (24. März 2006)

Hi,

nach umfangreicher Suche im Forum bin ich noch nich auf das gestossen was ich suche  
aber schon viele Ideen bekommen.

Also ich hab folgendes Problem:

ich habe hier 10 machines und man kann an jeder machine das setup sheet als xls file auf einer floppy speichern. nun soll das ziel sein dass der einrichter (mexikaner) die diskette in den pc einlegt und mit moeglichst wenigen schritten einen huebschen ausdruck vom setup sheet bekommt (overlay hab ich schon gemacht), die daten in einer mysql db gespeichert werden und ein pdf erzeugt wird.

wenn der einrichter die floppy nun in den pc einlegt soll das script auch anzeigen welche files sich auf der floppy befinden, so dass der einrichter dann das file auswaehlt und dann die portierung nach mysql beginnt.
mein problem ist die datenstruktur der setupsheets, welche aus der machine kommen.
 jedem wert muesste einer spalte zugeordnet werden, aber die werte stehen in 2 spalten (B und D oder B und C --> haengt von machine zu machine ab). Es dreht sich hier um ca. 70 Werte.

was gemacht werden muss --> irgendwie die werte der 2 spalten in eine spalte schreiben
dann das ganze nach csv (oder direkt xls import nach mysql? was is hier besser? nach csv hab ich schon ein php script) und dann in die db. 
[edit] es geht wahrscheinlich nur so, dass ich fuer jedes setup sheet eine eigene tabelle anlege und sich dann aus dieser dann das overlay die daten holt... (oder lieg ich da falsch) [/edit]

fuer den rest find ich eine loesung am we 


ich hoffe das war einigermassen verstaendlich  vielen dank schonmal 
gruesse aus dem warmen los angeles 

Heinz


----------



## fanste (24. März 2006)

Hi,

Willkommen im Forum.
Gleich zu Begin. Halte dich bitte an Groß-/Kleinschreibung (s. Netiquette Punkt 15)

Zu deinem Problem:
Einlesen kann du die Datei mit file().
Die einzelnen Spaltenwerte pro Zeile kannst du dir mit explode holen.
Je nachdem, wie die Datei genau aussieht und was an welcher Stelle in der Datei in welche Spalte der DB muss, musst du die MYSQL Anweisung generieren.

Ein kleinen Beispiel:

Die Datei:

```
23.03.05;fanste;installation erfolgreich
24.03.05;fanste;installation abgebrochen
```

Der PHP Code

```
$daten = file("pfad/zur/datei.csv");
for($i=0;$i<count($daten);$i++)
{
    $daten[$i] = explode(';',$daten[$i]);
}
/* Das Daten Array sieht nun folgendermaßen aus:
Array 
  (
      [0] => Array
         (
              [0] => 23.03.06
              [1] => fanste
              [2]=> installation erfolgreich
         )
      [1] => Array
        (
              [0] => 24.03.06
              [1] => fanste
              [2] => installation abgebrochen
        )
  )
*/

#Und jetzt kannst du es weiterverarbeiten.
for($i=0;$<count($daten);$i++)
{
    for($j=0;$j<count($daten[$i]);$j++)
    {
        echo "Wert ".$j.": ".$daten[$i][$j]."<br>";
    }
}
```

Ist ungestestet. hoffe, dass es klappt.
Hilfe zu den Funktionen findest du unter http://de.php.net


----------



## Heinz Schrot (27. März 2006)

vielen Dank! Klappt sehr gut


----------



## fanste (27. März 2006)

Nichts zu Danken


----------



## Heinz Schrot (29. März 2006)

jetzt doch noch ne Frage:

ich hab jetz einen Rechner im Netzwerk auf dem xampp und das Script laeuft. ich muesste aber mit dem script auf mein lokales Diskettenlaufwerk zugreifen (mit dem xls --> csv).  So gehts nicht:


```
<?php
// starting excel
$excel = new COM("excel.application") or die("Unable to instanciate excel");
//print "Loaded excel, version {$excel->Version}\n";

//bring it to front
#$excel->Visible = 1;//NOT
//dont want alerts ... run silent
$excel->DisplayAlerts = 0;

//open  document
$excel->Workbooks->Open("\\192.168.0.21\\a\\setup9.xls"); // local computer with floppy
//XlFileFormat.xlcsv file format is 6
//saveas command (file,format ......)
$excel->Workbooks[1]->SaveAs("C:\\Program Files\\xampp\\htdocs\\setup.sheet\\files\\setup9.csv",6); // xampp computer 

//closing excel
$excel->Quit();
?>
```
oder muesste man das ganze per upload script realisieren oder geht das auch mit den com Klassen?

gruesse aus dem sonnigen Californien 

Heinz


----------

