Avatar billede fjammi Nybegynder
31. maj 2004 - 16:09 Der er 9 kommentarer og
1 løsning

Eksport af mySQL til excel

Hej
Er det muligt at lave en funktion i php, hvor man kan eksporter data fra en mySQL-database over i et Excel-dokument?
Hvis ik det kan laves i php, kan det så laves på andre måder?

På forhånd tak...
Avatar billede Slettet bruger
31. maj 2004 - 16:12 #1
Jeg tror kun det kan gøres manuelt. mySQL understøtter masser af eksportfunktionen, men jeg ved ikke hvordan excel skulle modtage automatisk.
Avatar billede taskmgr Nybegynder
31. maj 2004 - 16:19 #2
Hvis du har Excel installeret på serveren, så kan du bruge COM funktionen.
http://dk2.php.net/com
Avatar billede fjammi Nybegynder
31. maj 2004 - 16:25 #3
Har du en idé om hvordan det så skal laves?
Der er excel på serveren.
Avatar billede taskmgr Nybegynder
31. maj 2004 - 16:28 #4
Kig i kommentarerne i det link jeg skrev.

Her fandt jeg denne: (har ikke mulighed for at afprøve)

Here is a COM function that creates an excel spreadsheet with any number of worksheets, containing data from a matching number of SQL queries.  Be ware of the upper limit of excel worksheets.  This function properly shuts down Excel on the server. 
/***************************/
  function WriteExcel($strPath,$astrSheetName,$astrSQL){
/* This function takes a file save path, and array of sheet names and a corresponding array */
/* of SQL queries for each sheet and created a multi-worksheet excel spreadsheet*/
  $C_NAME=__CLASS__."::".__FUNCTION__;
      $dbs=new clsDB;
      $exapp = new COM("Excel.Application") or Die ("Did not connect");
      $intSheetCount=count($astrSheetName);
      $wkb=$exapp->Workbooks->Add();   
          $exapp->Application->Visible = 1;
      for ($int=0;$int<$intSheetCount;$int++){
          $sheet=$wkb->Worksheets($int+1);
          $sheet->activate;
          $sheet->Name=$astrSheetName[$int];
          $intRow=1;
          $qrySQL=$dbs->GetQry($astrSQL[$int],$C_NAME,__LINE__);
          $rstSQL=$qrySQL->fetchRow(DB_FETCHMODE_ASSOC);
          $astrKeyNames=array_keys($rstSQL);
          $intCols=count($astrKeyNames);
          $qrySQL=$dbs->GetQry($astrSQL[$int],$C_NAME,__LINE__);
          while($rstSQL=$qrySQL->fetchRow(DB_FETCHMODE_ASSOC)){
              $strOut="";//initialize the output string
              for ($int2=0;$int2<$intCols;$int2++){//we start at 1 because don't want to output the table's index
                  if($intRow==1){
                      $strOut=$astrKeyNames[$int2];
                  }else{
                      $strOut=$rstSQL[$astrKeyNames[$int2]];
                  }
                      $sheet->activate;
                      $cell=$sheet->Cells($intRow,($int2+1));//->activate;
                      $cell->Activate;
                        $cell->value = $strOut;
                  }//end of colcount for loop
              $intRow++;
          }//end while loop
      }//end sheetcount for loop
      if (file_exists($strPath)) {unlink($strPath);}
      $wkb->SaveAs($strPath);
      $wkb->Close(false);
      unset($sheet);
      $exapp->Workbooks->Close(false);
      unset($wkb);
      $exapp->Quit;
      unset($exapp);
      unset($dbs);
  }//function WriteExcel
Avatar billede fjammi Nybegynder
31. maj 2004 - 16:39 #5
Forstår ik lige hvordan det skal tilpasses, og hvor man bestemmer hvilke data der skal overføres....
Avatar billede swaxi Nybegynder
31. maj 2004 - 17:15 #6
hvis du har phpmyadmin installeret, kan du bruge den til at eksportere til CSV (kommasepareret fil) ... nyere versioner af phpmyadmin kan også eksporetere til et xml-format.
Avatar billede fjammi Nybegynder
31. maj 2004 - 17:17 #7
ja det ved jeg godt. Men det jeg skal bruge er så man kan eksporter data unden at skulle ind i phpmyadmin...
Kan man eksporter til CSV via et php-script?
Avatar billede swaxi Nybegynder
31. maj 2004 - 19:44 #8
ja, phpmyadmin er skrevet i php. csv er bare en tekstfil, hvor de enkelte felter er adskildt af ; og de enkelte rækker adskildt af \n
du kunne jo lave noget a la :
<?php
$tablename = "tbl";
$result = mysql_query("SELECT * FROM `".$tablename."`")
    or die("Invalid query: " . mysql_error());
$linecount = 0;
while ($row = mysql_fetch_array($result)) {
    if ($linecount++ > 0) echo "\n";
    $fieldcount = 0;
    foreach ($row as $field) {
        if ($fieldcount++ > 0) echo ",";
        echo addcslashes($field, ",\n");
    }
}
?>
Avatar billede swaxi Nybegynder
08. juni 2004 - 00:13 #9
Avatar billede fjammi Nybegynder
18. juni 2005 - 10:51 #10
lukker - fik det ikke til at virke
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