|
|
|
| Не получается это все связать в кучу.
Мне нужно вывести из БД данные и записать их в файл Excel
Вывожу данные из базы так:
$res=mysql_query("SELECT * FROM bazaspros order by id");
if($res)
{
while($baza = mysql_fetch_array($res))
{
echo " <tr><td>".$baza['data']."</td><td>".$baza['oper']."</td><td>".$baza['text']."</td></tr>";
}
}
else
{
echo "<p><b>Error: ".mysql_error()."</b></p>";
exit();
}
|
Попробовала разобраться с com объектами
<?php
$xls = new COM("Excel.Application"); // Создаем новый COM-объект
$xls->Application->Visible = 1; // Заставляем его отобразиться
$xls->Workbooks->Open("Z:/home/localhost/www/Спрос.xls"); // Открываем ранее сохраненный документ
$range=$xls->Range("A2"); // Выбрали ячейку A2
$range->Value = "Проба записи"; // Вставили значение
// Сохраняем документ
$xls->Workbooks[1]->SaveAs('Z:/home/localhost/www/spros_'.date('d.m').'.xls');
$xls->Quit(); //Закрываем приложение
$xls->Release(); //Высвобождаем объекты
$xls = Null;
$range = Null;
?>
|
Проба записи получается.
А вот как записать в файл Спрос.xls данные из БД?
$baza['data'] - должна записываться в столбец А
$baza['oper'] - должна записываться в столбец B
$baza['text'] - должна записываться в столбец C
начиная со второй строки (первая строка в моем файле - названия столбцов).
Кол-во строк заранее я никогда не знаю.
Подскажите, плз... | |
|
|
|
|
|
|
|
для: Gandzas
(11.03.2007 в 15:52)
| | Нет возможности использовать CSV формат? | |
|
|
|
|
|
|
|
для: Gandzas
(11.03.2007 в 15:52)
| | Ну вот примерно так:
<?php
$sqlhost="localhost";
$sqluser="root";
$sqlpass="1111";
$dbname="db";
$sqlnames="cp1251";
$lnDB = db_connect($sqlhost, $sqluser, $sqlpass, $dbname, $sqlnames);
$laDatas = LoadFromDB($lnDB);
mysql_close($lnDB); // отпадаем от сервера
SaveToExcel($laDatas);
function SaveToExcel($taDatas) // из массива записываем данные в XLS-файл
{
$loExcel = new COM("Excel.Application"); // Создаем новый COM-объект
if($loExcel) echo 'СОМ-объект создан<br />';
else exit('Невозможно создать СОМ-объект<br />');
$loExcel->Application->Visible = 1; // Заставляем его отобразиться // нафига? // tga
$loExcel->Application->Workbooks->Open("Z:/home/localhost/www/Спрос.xls"); // Открываем ранее сохраненный документ
// $loExcel->Application->Workbooks->Add(); // добавляем пустую книгу
$loWBook = $loExcel->Workbooks[$loExcel->Workbooks->Count];
$loSheet = $loWBook->Sheets[1]; // получаем ссылку на первый лист наше книги
$lnRows = count($taDatas);
for ($i=0; $i < $lnRows; $i++)
{
for ($j=0; $j < 4; $j++)
{
//------------------
// основная фишка - индексы строк и колонок в коллекции Cells начинаются с 1, как и в коллекции книг
//------------------
$loCurCell = $loSheet->Cells[$i+1][$j+1]; // ссылка на объект-ячейку
$loCurCell->Value = $taDatas[$i][$j]; // сохраняем данные в ячейку
}
}
$loWBook->SaveAs('Z:/home/localhost/www/spros_'.date('d.m').'.xls'); // Сохраняем документ
$loExcel->Quit(); // Закрываем приложение
unset($loSheet, $loWBook, $loExcel);
}
function LoadFromDB($tnDB) // загружает данные из мускула в массив
{
$lcQuery = "SELECT uname, ulogin, phone1, phone2 FROM g_users ORDER BY uname";
$laRes = mysql_query($lcQuery, $tnDB); // выполнение SQL запроса
if(!$laRes)
{
mysql_close($tnDB);
exit ('Error in '.$query.'<br /><b>'.mysql_error($tnDB).'</b>');
}
$lnRows = mysql_num_rows($laRes); // узнаем кол-во в результате
for ($i=0; $i < $lnRows; $i++) $laRows[$i] = mysql_fetch_row($laRes);
print_r($taDatas);
return $laRows;
}
function db_connect($host, $user, $pass, $db, $names) // чтоб по 100 раз не писать
{
$tnLink=mysql_connect($host, $user, $pass);
if (!$tnLink) // не смогли приконнектиться
exit('<p>Не могу соединиться с DB-сервером '.$host.'</p>');
// если коннект удачный
mysql_select_db($db, $tnLink); // выбираем БД
mysql_query("SET NAMES '".$names."'", $tnLink); // и кодировку
return $tnLink; // возвращаем удачный идентификатор
}
?>
|
| |
|
|
|
|
|
|
|
для: targa
(12.03.2007 в 13:38)
| | Спасибо! Как времени еще на мои вопросы на форуме хватает? ;) | |
|
|
|