Dopóki nie używam PDO i nie chcę pobierać wartości z bazy, to wszystko generuje się ok.
Jak tylko dorzucam obsługę bazy danych i pobierania wartości wygenerowany plik xls, otwierany przez excela 2010 pokazuje komunikat
"Ten dokument jest uszkodzony..."
Co jest źle? Bo ja już wysiadam.
Dodatkowe: problemem jest @ w adresie email, coś z kodowaniem pewnie.
W bazie jest latin2_general_ci
Plik generuje sie w cp1250.
<?php require("php/config.inc.php"); $db = new PDO('mysql:host=localhost;dbname='.DB_DATABASE, DB_USER, DB_PASS); $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); require_once("Spreadsheet/Excel/Writer.php"); $xls = new Spreadsheet_Excel_Writer(); $xls->send('raport.xls'); $sheet = $xls->addWorksheet('Lista WZ'); $format = $xls->addFormat(); $format->setBold(); $format->setSize('12'); $sheet->write(0, 0, 'Login', $format); $sheet->write(0, 1, 'Nazwa klienta', $format); $sheet->write(0, 2, 'Adres dostawy', $format); $sheet->write(0, 3, 'Nazwa nagrody', $format); $sheet->write(0, 4, 'Ilość', $format); $sheet->write(0, 5, 'Punkty', $format); $db->exec('SET NAMES cp1250;'); //$db->exec("set character set cp1250"); $x = $db->query('SELECT `EMAIL` FROM `USERS`'); foreach($x as $res) { $i++; $sheet->write($i, 0, $res['email']); $sheet->write($i, 1, $res['email']); $sheet->write($i, 2, $res['email']); $sheet->write($i, 3, $res['email']); $sheet->write($i, 4, $res['email']); $sheet->write($i, 5, $res['email']); } //szerokość kolumny 0 $sheet->setColumn(0, 0, 20); //szerokość kolumn 1, 2, 3 $sheet->setColumn(1, 3, 40); $xls->close(); ?>