Pół dnia w plecy nie bardzo wiem czemu.
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();
?>
Ten post edytował didit 23.10.2012, 18:32:59