Сохранить HTML таблицу в .DOC

Bodyanuk

Новичок
Интересует вопрос: "Можно ли сохранить HTML таблицу в вордовский документ .DOC? Если возможно то как?".
У кого какие идеи?
 

baev

‹°°¬•
Команда форума
craz, Вы думаете Ваш ответ понятен тредстартеру?

Лично я просто знаю «правильный ответ». И только поэтому могу догадаться, что Вы имели в виду…
 

craz

Нестандартное звание
Я думаю нагуглить мог, не детский сад. Если поиск по форуму заработал то тем более. Если он не знает что такое header(); то ему лучше бросить программировать пока и пойти почитать маны.

UP. поиск заработал эта тема за последние полгода не раз подымалась на форуме.
 

Bodyanuk

Новичок
да знаю я что такое header()
по запросу "сохранить html таблицу в .doc php" в Гугле ничего не нашел, поэтому запостил на форуме.
Нашел только для вывода данных, а не для сохранения
PHP:
header("Content-type: application/pdf");
header("Content-Disposition: attachment; filename=downloaded.pdf");
 

craz

Нестандартное звание
всмысле ты хочешь сохранить на сервере? для себя чтоль? ты сохрани как html а когда будут обращаться отдашь док. Остальное круче но сложнее то что я написал подходит для 90 случаев из 100
 

Bodyanuk

Новичок
та я уже практически разобрался.. Кому надо:
PHP:
ob_start();
echo '<table><tr>';
for ($i=0;$i<10;$i++) {
	echo '<td>'.$i.'</td>';
			
}
echo '</tr></table>';
header('Content-Type: application/vnd.ms-excel' );
header('Content-Disposition: attachment; filename=' . 'File1'.date("Y-m-d" ) .'.xls' );
ob_end_flush();
Только у меня не работает. Скорее всего потому что я подключаю файл с header() к другому файлу через require_once(); Или require_once() не мешает?
 

craz

Нестандартное звание
не работает: орет что алреди сенд? у тебя где то уже вывод. хидер надо первым выкидывать
 

Bodyanuk

Новичок
это я знаю, для этого есть функции буферизации вывода ob_start() && ob_end_flush(). Они включают/выключают буферизацию вывода. Информация со скрипта не выводится, выводятся только header()
 

craz

Нестандартное звание
ну так у тебя ж хидеры внутри об
зачем ты заморачиваешься?
почему не так? или я чегото не понимаю?
PHP:
header('Content-Type: application/vnd.ms-excel' );
header('Content-Disposition: attachment; filename=' . 'File1'.date("Y-m-d" ) .'.xls' );
echo '<table><tr>';
for ($i=0;$i<10;$i++) {
    echo '<td>'.$i.'</td>';
            
}
echo '</tr></table>';
 

Bodyanuk

Новичок
Это был пример. Вот мой (знаю что ужасно, отладку и оптимизацию ещё не далал):
PHP:
<?php
if (!isset($_SESSION['user_hash'])) {
	die('orders hash is abcent');
} else {
	$db = mysqli_connect('localhost', 'php', '123456', 'letter');
	$ord = mysqli_query($db, "SELECT * FROM item");
	$mord = mysqli_fetch_row($ord);

$elem = array ('Идентефикатор','От кого','Откуда','Индекст отправителя','Кому','Куда','Индекст получателя','Содержание письма','Статус','Хэш','Дата');
//ob_start();
echo '<table border=0>';
echo '<tr>';
for ($j=0;$j<count($elem);$j++) {
	echo '<td>'.$elem[$j].'</td>';
}
echo '</tr>';
	
do {
$j++%2 ? $color='c7e2e6' : $color='d7d7d7';
	echo '<tr style=background-color:'.$color.'>';
	for ($i=0;$i<count($mord);$i++) {
		switch ($i) {
			case 7:printf("<td width='100px'><a href='http://".$_SERVER['SERVER_NAME']."/%s'>%s</a></td>",$mord[$i],$mord[$i]); break; 
			case 8:!$mord[$i] ? $st='не обработан' : $st='обработан'; echo '<td width=100px>'.$st.'</td>'; break;
			default :printf("<td width='100px'>%s</td>", $mord[$i]);
		}
	}
	echo '</tr>';
} while ($mord = mysqli_fetch_row($ord));
echo '</table>';
//header('Content-Type: application/vnd.ms-excel' );
//header('Content-Disposition: attachment; filename=' . 'File1'.date("Y-m-d" ) .'.xls' );
//ob_end_flush();
}
?>
 

craz

Нестандартное звание
PHP:
echo '<table border=0>';
echo '<tr>';
for ($j=0;$j<count($elem);$j++) {
    echo '<td>'.$elem[$j].'</td>';
}
echo '</tr>';
    
do {
$j++%2 ? $color='c7e2e6' : $color='d7d7d7';
    echo '<tr style=background-color:'.$color.'>';
    for ($i=0;$i<count($mord);$i++) {
        switch ($i) {
            case 7:printf("<td width='100px'><a href='http://".$_SERVER['SERVER_NAME']."/%s'>%s</a></td>",$mord[$i],$mord[$i]); break; 
            case 8:!$mord[$i] ? $st='не обработан' : $st='обработан'; echo '<td width=100px>'.$st.'</td>'; break;
            default :printf("<td width='100px'>%s</td>", $mord[$i]);
        }
    }
    echo '</tr>';
} while ($mord = mysqli_fetch_row($ord));
echo '</table>';
я вот не наю но за 12 секунд мой моск придумал отправить это в файл, сделать ссылку, /?doc=filename

создать в скрипте
if (isset($_GET["doc"])){
header('Content-Type: application/vnd.ms-excel' );
header('Content-Disposition: attachment; filename=' . 'File1'.date("Y-m-d" ) .'.xls' );
include_once($_GET["doc"].".html");
}
 

Bodyanuk

Новичок
не работает, пишет
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\let.ru\www\admin\index.php:14) in Z:\home\let.ru\www\admin\orders.php on line 33

Warning: Cannot modify header information - headers already sent by (output started at Z:\home\let.ru\www\admin\index.php:14) in Z:\home\let.ru\www\admin\orders.php on line 34
Идентефикатор От кого Откуда Индекст отправителя Кому Куда Индекст получателя Содержание письма Статус Хэш Дата
Я создал файл file.php
PHP:
<?php
echo '<table border=0>';
echo '<tr>';
for ($j=0;$j<count($elem);$j++) {
    echo '<td>'.$elem[$j].'</td>';
}
echo '</tr>';
    
do {
$j++%2 ? $color='c7e2e6' : $color='d7d7d7';
    echo '<tr style=background-color:'.$color.'>';
    for ($i=0;$i<count($mord);$i++) {
        switch ($i) {
            case 7:printf("<td width='100px'><a href='http://".$_SERVER['SERVER_NAME']."/%s'>%s</a></td>",$mord[$i],$mord[$i]); break; 
            case 8:!$mord[$i] ? $st='не обработан' : $st='обработан'; echo '<td width=100px>'.$st.'</td>'; break;
            default :printf("<td width='100px'>%s</td>", $mord[$i]);
        }
    }
    echo '</tr>';
} while ($mord = mysqli_fetch_row($ord));
echo '</table>';
?>
А код поменял на
PHP:
// код что выше не менялся
} while ($mord = mysqli_fetch_row($ord));
echo '</table>';

echo '<a href='.$_SERVER['REQUEST_URI'].'&doc=file>Download</a>';
if (isset($_GET['doc'])) {
header('Content-Type: application/vnd.ms-excel' );
header('Content-Disposition: attachment; filename=' . 'File1'.date("Y-m-d" ) .'.xls' ); 
include_once('file.php');
}
Тоесть я вывожу таблицу данных, и вывожу ссылку, по которой могу её скачать. При нажатие на download пишет ошибку, что выше.
 

Bodyanuk

Новичок
ага, пасиба, понял.. читал когдато, но уже забыл :(
у меня в index.php есть include('config.php'); который присоединяет настройки БД, я без него не смогу работать. Как посоветуете сделать?
 

craz

Нестандартное звание
проверь пробелы проверь не выводиться ли че раньше хидера, ошибка слишком типична
 
Сверху