Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Query in Excel ausgeben/speichern

Empfohlene Antworten

Veröffentlicht

hallo zusammen,

folgendes problem beschäftigt mich:

hab ne mysql-db mit html/php frontend. nach eingabe der suchkriterien auf meiner index.php möchte ich die möglichkeit haben mein aktuelles "ausgabequery" (tabellenkopf & tabelleninhalt) in excel auszugeben und evtl. auch zu speichern.

hab schon einiges versucht...angefangen bei nem einfachen link zu ner .xls mit mitgegebenem wert, bis zum neuen chaosformular ^^

ich hoff mir hat einer möglichst schnell n beispiel, ne anregung, oder was auch immer...:beagolisc

Das ganze einfach als CSV-Datei abspeichern und in Excel öffnen?

was ist der unterschied zwischen "csv & xls" oder mit welcher funktion speiche ich das query als .csv?

es gibt mehrere möglichkeiten.

genereriere eine "echte" excel-datei (sogenanntes BIFF) z.b. mit PEARs Spreadsheet_Excel_Writer und sende das an den client. dazu sind folgende HTTP-headerzeilen erforderlich:

header("Content-Type: application/vnd.ms-excel");

header("Content-Disposition: inline; filename=\"excel.xls\"");

oder generiere einfaches CSV, indem du mittels fprintf oder fputs zeilen/feldweise die felder deines resultsets in die CSV-datei schreibst. die erste zeile im CSV kann dann ja noch deine feldbezeichnungen festlegen.

s'Amstel

sry, aber das ist eine stufe zu weit. ich kann dir jetzt schon nicht mehr ganz folgen...ich schreib in php erst seit einem monat:p

du kannst ja mal die relevanten codezeilen deiner index.php von deinem "html/php frontend" posten, wo du das ergebnisset aus der mysql holst. dann lässt sich auch mit bestimmtheit sagen, wie weit du bist, bzw. was deine ausgangssituation ist.

s'Amstel

Schau mal hier

thx für den link nachwuchsinfo., hat mir geholfen ^^

jetzt gibt`s eigentlich nur noch ein darstellungsproblem in excel.

wenn ich z.B. mir die IDs ausgeben lassen will werden die nicht, wie gewollt horizontal, sondern vertikal angezeigt...und zusätzlich stehen datensätze nur in einer spalte (also ein string, statt wie gewoll für jeden datensatz einen einzelnen). <-- das führt später zu formatierungsschwierigkeiten.


<?
header('Content-Type: text/x-csv');
header('Expires: ' . gmdate('D, d M Y H:i:s') . ' GMT');
header('Content-Disposition: attachment; filename=print.csv');
header('Pragma: no-cache');

session_start();
include("config.inc.php");

$db=mysql_connect($db_host,$db_user,$db_pw);
mysql_select_db($db_name,$db);

$result=mysql_query("SELECT * FROM ma_au"); //ma_au == tabelle

for($i=0, $Export=""; $i<mysql_num_rows($result); $i++)
{
$Daten = mysql_fetch_object($result);

$Spalte[0] = str_replace("\"", "\"\"", $Daten->ma_nr);
// etc.
// etc.

for($j=0; $j<count($Spalte); $j++)
{
$Export .= "\"" . $Spalte[$j] . "\"";
if($j!=count($Spalte)-1)
{
$Export .= ";";
}
}
$Export .= "\r\n";
$Spalte = "";
}

echo $Export;
?>
[/PHP]

MAHLZEIT!! *miam miam mampf*

wenn ich z.B. mir die IDs ausgeben lassen will werden die nicht, wie gewollt horizontal, sondern vertikal angezeigt...

verwendest du ID als (ersten) spaltennamen? excel hat m.w. probleme mit CSV-dateien, wenn das erste feld ID heisst.

und zusätzlich stehen datensätze nur in einer spalte (also ein string, statt wie gewoll für jeden datensatz einen einzelnen).

das ist ein manko von excel, dass alle zeilen im CSV unformatiert in einer wurst in spalte A eingefügt werden. direkt öffnen via doppelklick geht so nicht, über datei/öffnen wird die CSV richtig eingelesen.

es ist vermutlich also eher ein excel-problem; ein direktes öffnen der CSV-datei im editor deiner wahl und kontrolle der ausgabe würde ich aber empfehlen.

s'Amstel

verwendest du ID als (ersten) spaltennamen? excel hat m.w. probleme mit CSV-dateien, wenn das erste feld ID heisst.

nope das war nur ein bespiel zum verständnis.

wenn ich im editor ne .csv mit

"Vorname; Name; Str.; PLZ;"

"Hans; Werner; ; 12345;"

"Eugen; Straus; Meinestr. 4; 12345;"

zum test erstelle, wird`s richtig ausgewertet, also können tut das excel.

(spaltenname mit darunterstehendem datensätz)

der fehler für die nun horizontale ausgabe in excel muss im code liegen- fällt dir was auf?

das ist ein manko von excel, dass alle zeilen im CSV unformatiert in einer wurst in spalte A eingefügt werden.

wär ein assoziativ aray nicht besser damit jeder datensatz separat gespeichert wird? leider mangelt`s mir an der umsetzung ^^

danke an euch für die anregungen;)

gelöst hab ich das jetzt mit nem eigenen code

<?
ob_start();
session_start();
include ("config.inc.php");
include ("index.php");


$head='';
$excel=FOPEN("excel.csv", "w");
for($i=0;$i<35;$i++)
{
$head = $head.$auswahl[$i][anzeige].';';
}
FWRITE($excel, $head."\n");

$result=mysql_query($query);
for($j=0;$j<mysql_num_rows($result);$j++)
{
$line=mysql_fetch_assoc($result);
$data = '';
for($i=0;$i<35;$i++)
{
$data = $data.$line[$auswahl[$i][intern]].';';
}
FWRITE($excel, $data."\n");
}
FCLOSE($excel);


header("Location: excel.csv");
ob_end_flush();
?>[/PHP]

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.