Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Как купить рекламу на форуме


Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы Поиск в этой теме
Старый 15.09.2015, 21:52   #1
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию Выгрузка из MySQL в Excel (некорректный файл Excel)

Добрый день!

Для выгрузки из MySQL в Excel использую следующую конструкцию:
PHP код:
<?php
        
//код php......
        
        
$q_get_price mysql_query("SELECT val1, val2, val3, val4, val5 FROM price");
        
        while ( 
$r_get_price mysql_fetch_array($q_get_price) ) {
            
$val1 $r_get_price[0];
            
$val2 $r_get_price[1];
            
$val3 $r_get_price[2];
            
$val4 $r_get_price[3];
            
$val5 $r_get_price[4];
            
            
$price_str .= '<tr><td>'$val1 .'</td><td>'$val2 .'</td><td>'$val3 .'</td><td>'$val4 .'</td><td>'$val5 .'</td></tr>';
        }
            
        
//Шаблон прайс-листа
        
$price_cnt '
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
                <head>
                    <meta http-equiv="content-type" content="text/html; charset=windows-1251" />
                </head>
                <body>
                    <table>
                        <tr><td>Производитель</td><td>Артикул</td><td>Наименование</td><td>Остаток</td><td>Цена</td></tr>
                        '
$price_str .'
                    </table>
                </body>
            </html>
        '
;
            
        
//Запись в файл
        
$f_name ''$_SERVER['DOCUMENT_ROOT'] .'/files/price/'$price_nik .'-'$p_id .'-'$u_number .'.xls';
        if ( 
file_exists($f_name) ) chmod($f_name0640);
        
$prc fopen($f_name"w+");
                        
        if ( 
$prc ) {
            
fwrite ($prc$price_cnt);
            
//chmod($f_name, 0440);
            
fclose($prc);
        }
            
        
//Отдача на скачивание
        
$f_size filesize($f_name);

        
Header("HTTP/1.1 200 OK");
        
Header("Connection: close");
        
Header("Content-Type: application/force-download");
        
Header("Content-Type: application/octet-stream");
        
Header("Content-Type: application/download");
        
Header("Content-Type: application/vnd.ms-excel; charset=windows-1251");
        
Header("Content-Disposition: Attachment; filename="$price_nik ."-"$p_id ."-"$u_number .".xls");
        
Header("Content-Length: "$f_size ."");
        
Header("Content-Transfer-Encoding: binary");

        
// Открыть файл для чтения и отдавать его частями
        
$prc fopen($f_name"r");

        while ( !
feof($prc) ) {
            if ( 
connection_aborted() ) {
                
fclose($prc);
                break;        
// Если соединение оборвано, то остановить скрипт
            
}

            echo 
fread($prc500000);
            
sleep(1);        // Пазуа в 1 секунду. Скорость отдачи 500 000 байт/сек
        
}
        
fclose($prc);
        
unlink($f_name);
?>
Все корректно выгружается, но при открытии файла Excel выдает ошибку о несоответствии формата открываемого файла формату, указанному в его расширении.

Кто сталкивался? Помогите пожалуйста!
Изображения
Тип файла: jpg Screen.JPG (23.1 Кб, 122 просмотров)
Maxx вне форума Ответить с цитированием
Старый 15.09.2015, 22:14   #2
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 3,810
По умолчанию

и не будет... формируете обычный html а пытаетесь открыть его как файл экселя....
там не все так просто как кажется
ADSoft вне форума Ответить с цитированием
Старый 15.09.2015, 23:34   #3
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
там не все так просто как кажется
Я так и думал.
Предлагают еще такой способ: http://info-comp.ru/obucheniest/230-...cel-mysql.html

ADSoft, не сталкивались? Как думаете, должно корректно работать?
Maxx вне форума Ответить с цитированием
Старый 15.09.2015, 23:55   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от Maxx Посмотреть сообщение
Как думаете, должно корректно работать?
А самому проверить долго, или дорого?
Должно работать.
Andkorol вне форума Ответить с цитированием
Старый 16.09.2015, 00:07   #5
Maxx
Форумчанин
 
Аватар для Maxx
 
Регистрация: 29.10.2008
Сообщений: 294
По умолчанию

Цитата:
А самому проверить долго, или дорого?
Ночью лениво, а на работе времени нет.
Цитата:
Должно работать.
Реализовал. Работает отлично!!!
Maxx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме 20000 рублей в месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выгрузка в Excel city32 Общие вопросы Delphi 2 18.10.2012 14:58
Выгрузка формул из 1С в Excel alexx2007 Microsoft Office Excel 7 18.10.2012 06:06
Некорректный экспорт Access-Excel tibhar940 Microsoft Office Excel 4 29.08.2012 15:40
Выгрузка из БД в Excel fenetka Microsoft Office Excel 6 20.10.2011 08:06
выгрузка в Excel файл lildare C# (си шарп) 0 22.04.2011 11:48


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS