Excel in Mysql

bap

Mitglied
hi,
also mein Problem ist folgendes:
ich hab da ne Excel Tabelle mit ca. 7 Spalten.
die Daten aus diesen Tabellen soll ich nun in ne MySQL DB tun, aber wie?? geht das mit Excel oder brauch ich da ein anderes Programm?

THX
 
Das selbe Prob hatte ich auch.

Ich habe es mithilfe des Programm MyAccess gemacht.

DAzu muss man zwar als erstes die DAten in Access importieren, aber dafür konnte ich sie relativ leicht zu MySQL übertragen.

Desweiteren könntest du mal auf dieser Seite schauen:

hier
 
du könntest auch einfach die excel-datei im csv-format speichern und ein kleines programm schreiben, dass aus jeder zeile ein insert-query macht und das zum mysql-server schickt.
naja, klingt zwar kompliziert, ist aber nichts sonderlich schweres. ein paar schleifen und normale string-manipulation halt. ;)
 
hatte vor kurzem das gleiche Problem..... des hier is vieleicht nicht die beste lösung, aber auf jedenfall funktioniert sie bei mir....Excel Tabelle als CSV abspeichern, und dann jenes script hier benutzen:

erstmal die Struktur der Datenbanktabellen:

PHP:
#
# Tabellenstruktur für Tabelle `haendler`
#

CREATE TABLE haendler (
  identifikation varchar(50) NOT NULL default '',
  firma varchar(50) NOT NULL default '',
  ansprechpartner varchar(50) NOT NULL default '',
  plz varchar(50) NOT NULL default '',
  ort varchar(50) NOT NULL default '',
  strasse varchar(50) NOT NULL default '',
  land varchar(50) NOT NULL default '',
  telefon varchar(50) NOT NULL default '',
  fax varchar(50) NOT NULL default '',
  email varchar(50) NOT NULL default '',
  website varchar(50) NOT NULL default '',
  PRIMARY KEY  (identifikation)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `shop`
#

CREATE TABLE shop (
  id int(255) NOT NULL auto_increment,
  haendler varchar(250) NOT NULL default '',
  artikelgruppe varchar(100) NOT NULL default '',
  artnr text NOT NULL,
  name text NOT NULL,
  short text NOT NULL,
  details text NOT NULL,
  lieferbar varchar(50) NOT NULL default '',
  preis1 decimal(10,2) NOT NULL default '0.00',
  preis2 decimal(10,2) NOT NULL default '0.00',
  top5 int(2) NOT NULL default '0',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


Hier die File die die CSV in die Tabelle einliest:

PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
<title>CSV 2 Excel</title>
<meta name="description" content="Upload einer CSV Datei(Excel) über ein Formular in eine Tabelle einer MySQL Datenbank">
<meta name="author" content="A.Falk">
<meta name="generator" content="Ulli Meybohms HTML EDITOR">
</head>
<body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">

<?
include("config.php");

  /*------------------------------------------/
 /--------- einlesen der ersten Zeile -------/
/------------------------------------------*/


 if ($uploadfile_name) {                        //wenn eine Datei im Formular angegeben wurde
   $path_to_file = "";
   $location = $path_to_file.$uploadfile_name;
   copy($uploadfile,$location);


$file=$location;
$fp=fopen($file, "r");          //wird die File geöffnet
$fp=fgets($fp, 1024);           // und die erste Zeile eingelesen
$spalte = explode(";", $fp);    // hier wird sie anhand des ; in Arrays geteilt
$spaltenzahl = count($spalte);  // hier wird die Anzahl der Arrays ermittelt

 /*--------------------------------------------------------/
/---------Generierung der Listenfelder-------------------/
/-----------------------------------------------------*/
echo "<form action=\"\" method=\"post\"  ENCTYPE=\"multipart/form-data\">";


$sql = "SELECT * FROM haendler";                     // Auswahl der Händler
$ergebnis=mysql_query($sql, $verbindung);            // Befehl wird an die Datenbank gesendet
echo "Händler:<br><select name=\"haendler\">";       // Listenfeld wird generiert
while ($row=mysql_fetch_object($ergebnis)) {         // Listenfeld wird generiert
 echo "<option value=\"$row->identifikation\">$row->firma</option>";   // Listenfeld wird generiert
}
echo "</select><br><br>";

// Listenfeld Artikelgruppe:

echo "Artikelgruppe<br><select name=\"artikelgruppe\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld Name:

echo "<br><br>Name:<br><select name=\"name\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

//Listenfeld Artikelnummer

echo "<br><br>Artikelnummer:<br><select name=\"artnr\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld Short

echo "<br><br>Short:<br><select name=\"short\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld details

echo "<br><br>Details<br><select name=\"details\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld Lieferzeit

echo "<br><br>Lieferzeit:<br><select name=\"lieferbar\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld Shoppreis

echo "<br><br>Shoppreis:<br><select name=\"preis1\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";

// Listenfeld Stammkundenpreis

echo "<br><br>Stammkundenpreis:<br><select name=\"preis2\">";
for ($i=0; $i<$spaltenzahl; $i++){ // wenn weniger Spalten als Arrays
echo $i;
echo $spalte[$i-1];                    // wird ein Array erzeugt
 echo "<option value=\"$i\">$spalte[$i]</option>";
}
echo "</select>";
echo "<input type=\"hidden\" name=\"einlesen\" value=\"1\">";
echo "<input type=\"hidden\" name=\"spaltenzahl\" value=\"$spaltenzahl\">";
echo "<input type=\"hidden\" name=\"file\" value=\"$file\">";
echo "<br><br><br><input type=\"Submit\" name=\"einlesen\" value=\"Datei in Datenbank einlesen\">";
echo "</form>";
}


if($einlesen){
echo "location:";
echo $location;
echo "<br>file:";
echo $file;
echo "<br>fp:";
echo $fp;
$str = implode("", file($file));      // hier wird die gesamte Datei in einen String gelesen
$str = eregi_replace("\n",";", $str); // Zeilenubrüche werden durch ; ersetzt
$felder= explode(";", $str);
$feldanzahl=count($felder);           // die Anzahl der Felder wird ermittelt
echo "<br><br>Feldanzahl:";
echo $feldanzahl;


$sql_eintrag ="DELETE FROM shop WHERE haendler='$haendler'"; // die Einträge des Händlers werden gelöscht
mysql_query($sql_eintrag,$verbindung);        // befehl wird an die Datenbank gesendet

$zeilenanzahl=bcdiv($feldanzahl,$spaltenzahl,0);  // die Anzahl der Zeilen wird ermittelt
$zeilenanzahl=$zeilenanzahl-1;                    // Anzahl der Zeilen minus 1(erste Zeile soll ja nicht mit eingelesen werden)
echo "<br><br>Zeilen: $zeilenanzahl<br><br>";     // Ausgabe der Zeilenanzahl zur Überprüfung

for ($i=0;$i<$zeilenanzahl; $i++){               // solange $i kleiner ist als die Zeilenanzahl äuft die schleife
echo "<br><br>";
$felder[$i];

echo "<br><b>Artikelgruppe: ";
$artikelgruppe=$artikelgruppe+$spaltenzahl;      // Die Artikelgruppe wird definiert
echo $felder[$artikelgruppe];                    // Die Artikelgruppe wird ausgegeben
echo "</b>";

echo "<br><b>Artikelnummer:";
$artnr=$artnr+$spaltenzahl;
echo $felder[$artnr];
echo "</b>";

echo "<br>Name: ";
$name=$name+$spaltenzahl;
echo $felder[$name];

echo "<br>Short: ";
$short=$short+$spaltenzahl;
echo $felder[$short];

echo "<br>Details: ";
$details=$details+$spaltenzahl;
echo $felder[$details];

echo "<br>Lieferzeit: ";
$lieferbar=$lieferbar+$spaltenzahl;
echo $felder[$lieferbar];

echo "<br>Shoppreis: ";                                // nachdem der Shoppreis im Format 00,00 ist
$preis1=$preis1+$spaltenzahl;                          // wird vor dem einlesen in die Datenbank
$felder[$preis1];                                      // das Komma durch einen Punkt ersetzt
$felder[$preis1] = eregi_replace(",",".",$felder[$preis1] );
echo $felder[$preis1];


echo "<br>Stammkundenpreis: ";
$preis2=$preis2+$spaltenzahl;

$felder[$preis2];
$felder[$preis2] = eregi_replace(",",".",$felder[$preis2] );
echo $felder[$preis2];

$sql_eintrag ="INSERT INTO shop(`id`, `haendler`,`artikelgruppe`, `artnr`, `name`, `short`, `details`, `lieferbar`, `preis1`, `preis2`) VALUES ('%','$haendler','$felder[$artikelgruppe]', '$felder[$artnr]', '$felder[$name]', '$felder[$short]', '$felder[$details]', '$felder[$lieferbar]', '$felder[$preis1]','$felder[$preis2]')";
mysql_query($sql_eintrag,$verbindung);                  // hier erfolgt der eintrag in die Datenbank




}}

if(!($file OR $einlesen))                // wenn weder die Variable File oder die Variable einlesen einen Wert hat, wird das Upload Formular angezeigt






 /*--------------------------------------------------------/
/---------Upload Formularfeld----------------------------/
/-----------------------------------------------------*/
{


?>

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="uploadfile" value="" size="30" >
<input type="Submit" name="upload" value="Upload der Datei">
</form>

<?
}
?>
</body>
</html>


Und zum Schluss die config.inc
PHP:
<?
  /*---------------------------------------*/
 /* Allgemeine Datenbankverbindungs Daten */
/*---------------------------------------*/


$server="localhost";
$benutzer="";
$passwort="";
$verbindung= mysql_connect($server, $benutzer, $passwort);
$DB="trioz";
mysql_select_db($DB, $verbindung);
?>


So, falls irgendwelche Fehler drin sind, einfach bei mir melden.....

MFG
asmo
 

Neue Beiträge

Zurück