Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Moby
Зарегистрирован: 19.11.2004 Сообщения: 268
|
Добавлено: Чт Янв 27 2005 11:24 Заголовок сообщения: MySQL -> Excell средствами PHP |
|
|
г-да вебматёрые, помогите пожалуйста решить проблему - как сконвертировать таблицу из MySQL в файл Excell средствами PHP _________________ Профи - это оборзевший ламмер |
|
Вернуться к началу |
|
|
Destructor
Зарегистрирован: 28.01.2005 Сообщения: 6
|
Добавлено: Пт Янв 28 2005 11:34 Заголовок сообщения: |
|
|
Ужас, ну ты загнул =)
Кажется, что для этого надо поюзать COM
Например, так:
Код: |
function WriteExcel($strPath,$astrSheetName,$astrSQL){
/* This function takes a file save path, and array of sheet names and a corresponding array */
/* of SQL queries for each sheet and created a multi-worksheet excel spreadsheet*/
$C_NAME=__CLASS__."::".__FUNCTION__;
$dbs=new clsDB;
$exapp = new COM("Excel.Application") or Die ("Did not connect");
$intSheetCount=count($astrSheetName);
$wkb=$exapp->Workbooks->Add();
$exapp->Application->Visible = 1;
for ($int=0;$int<$intSheetCount;$int++){
$sheet=$wkb->Worksheets($int+1);
$sheet->activate;
$sheet->Name=$astrSheetName[$int];
$intRow=1;
$qrySQL=$dbs->GetQry($astrSQL[$int],$C_NAME,__LINE__);
$rstSQL=$qrySQL->fetchRow(DB_FETCHMODE_ASSOC);
$astrKeyNames=array_keys($rstSQL);
$intCols=count($astrKeyNames);
$qrySQL=$dbs->GetQry($astrSQL[$int],$C_NAME,__LINE__);
while($rstSQL=$qrySQL->fetchRow(DB_FETCHMODE_ASSOC)){
$strOut="";//initialize the output string
for ($int2=0;$int2<$intCols;$int2++){//we start at 1 because don't want to output the table's index
if($intRow==1){
$strOut=$astrKeyNames[$int2];
}else{
$strOut=$rstSQL[$astrKeyNames[$int2]];
}
$sheet->activate;
$cell=$sheet->Cells($intRow,($int2+1));//->activate;
$cell->Activate;
$cell->value = $strOut;
}//end of colcount for loop
$intRow++;
}//end while loop
}//end sheetcount for loop
if (file_exists($strPath)) {unlink($strPath);}
$wkb->SaveAs($strPath);
$wkb->Close(false);
unset($sheet);
$exapp->Workbooks->Close(false);
unset($wkb);
$exapp->Quit;
unset($exapp);
unset($dbs);
}//function WriteExcel
|
http://ru2.php.net/manual/ru/ref.com.php |
|
Вернуться к началу |
|
|
Moby
Зарегистрирован: 19.11.2004 Сообщения: 268
|
Добавлено: Пт Янв 28 2005 11:49 Заголовок сообщения: |
|
|
всё бы ничего, да вот " COM functions are only available for the Windows version of PHP."
предполагается использовать этот скрипт под юниксом ;( что то я где то копал на эту тему, и вроде сквозь упоминалась ADO DB - такое может быть? _________________ Профи - это оборзевший ламмер |
|
Вернуться к началу |
|
|
Destructor
Зарегистрирован: 28.01.2005 Сообщения: 6
|
Добавлено: Пт Янв 28 2005 14:22 Заголовок сообщения: |
|
|
Да, блин, ситуация.
Нужно поюзать мастдайные технологии под ЮНИХом %)))
Остаётся только вручную: исследовать формат файлов excel и написать генерацию xls-файла php-сценарием
P.S. ADO DB - это ActiveX data objects databases - тоже чисто виндовая технология.
Здесь ещё посмотри
http://www.opennet.ru/base/dev/php_gen_excel.txt.html |
|
Вернуться к началу |
|
|
|