Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Com объекты+php+MySQL
 
 автор: Gandzas   (11.03.2007 в 15:52)   письмо автору
 
 

Не получается это все связать в кучу.

Мне нужно вывести из БД данные и записать их в файл 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
начиная со второй строки (первая строка в моем файле - названия столбцов).

Кол-во строк заранее я никогда не знаю.

Подскажите, плз...

   
 
 автор: cheops   (12.03.2007 в 01:51)   письмо автору
 
   для: Gandzas   (11.03.2007 в 15:52)
 

Нет возможности использовать CSV формат?

   
 
 автор: targa   (12.03.2007 в 13:38)   письмо автору
 
   для: 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;                                            //    возвращаем удачный идентификатор
    
}

?>

   
 
 автор: Gandzas   (12.03.2007 в 18:39)   письмо автору
 
   для: targa   (12.03.2007 в 13:38)
 

Спасибо! Как времени еще на мои вопросы на форуме хватает? ;)

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования