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

Форум MySQL

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

 

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

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

тема: Сохранить таблицы в Excel файл
 
 автор: lightning.say   (13.06.2011 в 05:23)   письмо автору
 
 

Как можно сохранить таблицу базы данных в Excel файл или в соответствии с определенным запросом данные таблицы при нажатии на кнопку?

  Ответить  
 
 автор: cheops   (13.06.2011 в 11:16)   письмо автору
 
   для: lightning.say   (13.06.2011 в 05:23)
 

Проще всего сформировать CSV-файл (этот текстовый формат) и отдать пользователю, можно даже ему расширение XLS назначить - Excel его прекрасно открывает и понимает. А если расширение будет XLS, то первое же сохранение файла позволить конвертировать его в полноценный XLS-файл.

  Ответить  
 
 автор: lightning.say   (13.06.2011 в 12:32)   письмо автору
 
   для: cheops   (13.06.2011 в 11:16)
 

да, а как вообще можно сформировать файл из таблицы? или где об этом почитать не подскажете?

  Ответить  
 
 автор: cheops   (13.06.2011 в 12:52)   письмо автору
 
   для: lightning.say   (13.06.2011 в 12:32)
 

Это можно сделать средствами PHP, записав файл или просто отправив его клиенту, послав соответствующие заголовки
<?php 
  $filename 
"result.xls";
  
header("Content-Disposition: attachment; filename=$filename"); 
  
header("Content-type: application/vnd.ms-excel"); 
  
header("Content-length: ".размер_файла);
  
// Содержимое файла.
?>
CSV-файл - это очень простой, если не сказать примитивный, формат: каждая запись расположена на отдельной строке, столбцы разделены точкой запятой или символом табуляции. Всех проще взять готовый XLS-файл и сохранить его как CSV-файл. Затем открыть и посмотреть как он устроен.

  Ответить  
 
 автор: lightning.say   (13.06.2011 в 14:01)   письмо автору
 
   для: cheops   (13.06.2011 в 12:52)
 

Ну вот допустим есть конкретная таблица names в бд mybase

id_catalog name description pos hide
1 вася 1 show 0
2 петя 2 show 0
10 Алиса 4 show 0
9 Юля 3 show 0
11 Максим 5 show 0
12 Таня 6 show 0

Как я ее сохраню в табличный файл?

  Ответить  
 
 автор: cheops   (13.06.2011 в 14:20)   письмо автору
 
   для: lightning.say   (13.06.2011 в 14:01)
 

Можно начать отталкиваться от следующего скрипта
<?php
  
...
  
$query "SELEC * FROM tbl";
  
$tbl mysql_query($query);
  if(!
$tbl) exit("Ошибка выполнения запроса - ".mysql_error());
  if(
mysql_num_rows($tbl))
  {
    
$line = array();
    while(
$result mysql_fetch_row($tbl))
    {
      
$line[] = implode(";"$result);
    }
    
file_put_contents("file.xls"implode("\r\n"$line));
  }
?>

  Ответить  
 
 автор: lightning.say   (13.06.2011 в 15:47)   письмо автору
 
   для: cheops   (13.06.2011 в 14:20)
 

Спасибо!

  Ответить  
 
 автор: lightning.say   (14.06.2011 в 04:44)   письмо автору
 
   для: cheops   (13.06.2011 в 12:52)
 

сделал так
  
  <?
   
...
  
$filename "result.csv";
  
$query "SELECT * FROM names"
  
$tbl mysql_query($query); 
  if(!
$tbl) exit("Ошибка выполнения запроса - ".mysql_error()); 
  if(
mysql_num_rows($tbl)) 
  { 
    
$line = array(); 
    while(
$result mysql_fetch_row($tbl)) 
    { 
      
$line[] = implode(";"$result); 
    } 
    
file_put_contents($filenameimplode("\r\n"$line)); 
  }
header("Content-type: application/csv");
header("Content-Disposition: attachment; filename=$filename");
readfile($filename);
?>

но почему-то при попытке сделать другой запрос более сложный с where или просто перечислить имена столбцов которые нужны, сохраняется снова же вся таблица, почему?

  Ответить  
 
 автор: cheops   (14.06.2011 в 09:59)   письмо автору
 
   для: lightning.say   (14.06.2011 в 04:44)
 

Хм... возможно дело в кэшировании, временное переименование файла ничего не дает?

  Ответить  
 
 автор: lightning.say   (14.06.2011 в 10:31)   письмо автору
 
   для: cheops   (14.06.2011 в 09:59)
 

ну да $filename изменил, стал воспринимать запросы

  Ответить  
Rambler's Top100
вверх

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