|
|
|
| Всем привет!!!
Пару дней назад взялся за реализацию небольшого прэкта по поребросу данных из Oracle в Excel средствами PHP и сразу наткнулся на кучу вопросов. Некоторые из них мне более-мение удалось решить самому а некоторые решил спросить у уважаемой аудитории.
За запись данных в Excel у меня отвечает следующий код :
$stmt = oci_parse($conn,$textarea);
$k=oci_execute($stmt, OCI_DEFAULT);
if (!$k) {
$e = oci_error($stmt);
echo htmlentities($e['message']);
echo "<pre>";
printf("\n%".($e['offset']+1)."s", "^");
echo "</pre>";
}
$ncols = oci_num_fields($stmt);
$q=5;
while($row=oci_fetch_array($stmt)) {
$q++;
for ($i = 0; $i < $ncols; $i++)
$sheet->write($q,$i,$row[$i],$titleFormat3);
}
|
данные записываются отлично но при дальнейшем форматированию у меня возникают некие пробблемы. Никак не могу задать форматы отдельным частям ререзультата, как это сделано например в следующим коде:
// данные таблицы
$data = array(
array('', 'Math', 'Literature', 'Science'),
array('John', 24, 54, 38),
array('Mark', 67, 22, 57),
array('Tim', 69, 32, 58),
array('Sarah', 81, 78, 68),
array('Susan', 16, 44, 38),
);
// iподключаем пакет
include 'Spreadsheet/Excel/Writer.php';
// создаем пустой файл
$excel = new Spreadsheet_Excel_Writer('grades.xls');
// добавляем рабочий лист
$sheet =& $excel->addWorksheet('Class I');
// создаем формат для первой строки
// полужирный, красный с черной нижней границей
$firstRow =& $excel->addFormat();
$firstRow->setBold();
$firstRow->setColor('red');
$firstRow->setBottom(1);
$firstRow->setBottomColor('black');
// создаем формат для первого столбца
// голубой с черной правой границей
$firstCol =& $excel->addFormat();
$firstCol->setColor('blue');
$firstCol->setRight(1);
$firstCol->setRightColor('black');
// создаем формат для левого верхнего угла
$firstRowCol =& $excel->addFormat();
$firstRowCol->setBottom(1);
$firstRowCol->setRight(1);
$firstRowCol->setBorderColor('black');
// создаем формат для цифровых ячеек
$num =& $excel->addFormat();
$num->setNumFormat('0');
// создаем формат для средних значений
$avg =& $excel->addFormat();
$avg->setNumFormat('0.00');
$rowCount=0;
foreach ($data as $row) {
for($colCount=0; $colCount<sizeof ($row); $colCount++) {
if ($rowCount == 0 && $colCount == 0) {
$format = 'firstRowCol';
} else if ($rowCount == 0) {
$format = 'firstRow';
} else if ($colCount == 0) {
$format = 'firstCol';
} else {
$format = 'num';
}
$sheet->write($rowCount, $colCount, $row[$colCount], $$format);
}
|
научите кто может... | |
|
|