Witaj, Gościu O nas | Kontakt | Mapa
Wortal Forum PHPEdia.pl Planeta Kubek IRC Przetestuj się!
Wyszukiwarka

Wyszukiwarka

Aby odnaleźć interesujące Cię informacje wpisz poniżej szukane frazy:
Logowanie

Logowanie

Zaloguj się aby zobaczyć swój profil:

PHP Excel 2007

Próbowałeś kiedyś utworzyć plik *.xls przy pomocy PHP? Dotychczas każdy, kto nie mógł skorzystać z dobrodziejstw technologi COM, musiał okazać sporo wytrwałości i włożyć sporo wysiłku, by umożliwić użytkownikom korzystanie ze wszystkich dobrodziejstw tego formatu.

Od pewnego czasu jest to jednak znacznie łatwiejsze, dzięki zastosowaniu PHP Excel 2007, pozwalającego na wygodne tworzenie plików *.xlsx (nowego, wykorzystywanego przez Microsoft Office 2007 standardu zapisywania plików Excel'a, opartego o Office Open XML)

2007-06-04 wydana została nowa, opatrzona numerem 1.3.0 wersja tej biblioteki.

A my zobaczmy, jak się z tego korzysta, na podstawie prostego przykładu:

<?php
include "PHPExcel.php";
include "PHPExcel/Writer/Excel2007.php";
$date = "2007-02-14";
$quotations = array();
$result = mysql_query(" SELECT quotations.*, currencies.mark, subjects.name FROM quotations INNER JOIN currencies ON quotations.currency_id = currencies.id INNER JOIN subjects ON quotations.subject_id = subjects.id WHERE quotations.quotation_date = '$date' ORDER BY currencies.mark, subjects.name ");
while ( $row = mysql_fetch_assoc($result) ) {
    $quotations[$row["mark"]][] = $row;
}
mysql_free_result($result);
$excel = new PHPExcel;
$excel->getProperties()->setCreator("Jakub Vrána");
$excel->getProperties()->setLastModifiedBy("Jakub Vrána");
$excel->getProperties()->setTitle("Akcie $date");
$excel->removeSheetByIndex(0);
$columns = array("name" => "A",
        "d_quotation_buy" => "B",
        "d_quotation_sale" => "C",
        "v_quotation_buy" => "D",
        "v_quotation_sale" => "E"
); foreach ( $quotations as $mark => $rows ) {
    $sheet = $excel->createSheet();
    $sheet->setTitle($mark);
    $sheet->getColumnDimension('A')->setWidth(30); // nastavení ?í?ky prvního sloupce
    $sheet->setCellValue("A1", "Sm?nárna");
    $sheet->setCellValue("B1", "Devizy nákup");
    $sheet->setCellValue("C1", "Devizy prodej");
    $sheet->setCellValue("D1", "Valuty nákup");
    $sheet->setCellValue("E1", "Valuty prodej");    foreach ($rows as $i => $row) {
        foreach ($columns as $key => $sl) {
           $sheet->setCellValue($sl . ($i + 2), $row[$key]); 
        }
    } // dopln?ní pr?m?ru a formátování
    foreach ($columns as $sl) {
         $sheet->setCellValue($sl . ($i + 3), ($sl == "A" ? "Pr?m?r" : "=AVERAGE($sl" . "2:$sl" . ($i + 2) . ")"));
        $sheet->getStyle($sl . 1)->getFont()->setBold(true);
        $sheet->getStyle($sl . ($i + 3))->getFont()->setBold(true); 
    } 
}
$writer = new PHPExcel_Writer_Excel2007($excel);
$writer->save("$date.xlsx");?>

W efekcie otrzymamy plik, wyglądający mniej więcej tak:

A co z osobami, które nie posiadają Office 2007?

Microsoft przygotował Pakiet zgodności formatu plików pakietu Microsoft Office dla programów Word, Excel i PowerPoint 2007, pozwalający na korzystnie z plików w najnowszym formacie również w starszych wersjach Office.

Linki:

Wasze opinie
Wszystkie opinie użytkowników: (6)
Zaloguj się aby dodać komentarz.
xml
Środa 18 Lipiec 2007 12:05:56 pm - intro

A czemu nie poczytacie XML Reference Schema ?

Co mi po OpenOffice powiedzcie szczerze, jeśli sam OO jest idealny do pisania itp. - ino do momentu próby otworzenia otrzymanego arkusza lub dokumentu Word'a. Niestety większość firm używa Excel'a i np. otrzymam pewne formuły tam zapisane to z OpenOffice wiecie co mogę sobie zrobić.

Poza tym Office 2007 nie jest wcale taki drogi, a wyeksportowanie szablonu xml i operowanie na nim za pomocą php nie jest wcale skomplikowane :)

i co z tego jak...
Poniedziałek 18 Czerwiec 2007 9:24:53 pm - jaco

i co z tego jak driver ODBC nie potrafi korzystac ani z tego formatu ani z htmla... Prawda, ze to ulatwia ale z xml kazdy sobie poradzi chociazby tworzac szablon na bazie dokumentu wygenerowanego przez office ;) Godny uznania bylby skrypt, ktory generuje "prawdziwego" xls'a (jest taki) z mozliwoscia dodania kilku arkuszy (nie ma takiego :/)

Dobrodziejstwo
Czwartek 14 Czerwiec 2007 10:39:52 pm - adi91

Na tej stronie raczej sie promuje PHP, nie M$ Office i nie OpenOffice... To tak samo, jakby powiedzieć żeby nie upubliczniać linka do wersji PHP dla win32.

Nie wiem czy dobrodziejstwo
Środa 13 Czerwiec 2007 7:47:51 pm - smialy

Witam

Chciałem tylko zapytać od keidy to msoffice jest jakim kolwiek dbrodziestwem? Myślałem, że na takiej stronie będzie się raczej promować OpenOffica a nie firmę billa :/

respect

Html to nie pełen arkusz
Poniedziałek 11 Czerwiec 2007 10:01:07 am - deyv

Warto jednak pamiętać, że HTML nie pozwala na stworzenie pełnego arkusza, z wszystkimi funkcjonalnościami, np. formułami, zakładkami, kolumnami ukrytymi itp.
Tutaj, dzięki użyciu XML jest to nie tylko możliwe, ale i łatwe :)

Excel i PHP
Niedziela 10 Czerwiec 2007 4:35:58 pm - speedy

De facto, wygenerowanie pliku *.xls w php, to żadna filozofia. Wystarczy wygenerować tabelkę w formacie HTML i nadać plikowi typ MIME odpowiedni dla arkuszy Excel.
Rzeczą, która może być godna uwagi w tym projekcie jest możliwość odczytywania tradycyjnych arkuszy, co już nie jest takie proste, jak ich generowanie.

Mentax.pl    NQ.pl- serwery z dodatkiem świętego spokoju...   
O nas | Kontakt | Mapa serwisu
Copyright (c) 2003-2024 php.pl    Wszystkie prawa zastrzeżone    Powered by eZ publish Content Management System eZ publish Content Management System