Экспорт Результат MySQL для Excel -- php поле с участием export-to-excel поле с участием xls пол Связанный проблема

export mysql result to excel


1
vote

проблема

русский

Я нашел небольшой скрипт, который будет экспортировать информацию в файл XLS, но я не могу, кажется, не могу работать. Оригинальный код найден здесь: http: // www .appservNetwork.com / modules.php? name = news & amp; file = Статья & amp; sid = 8

и вот мой код:

 <код> // Query Database $query = 'SELECT * FROM #__db_clients WHERE published = '1' AND companyid IN (1,2) AND country = 'Africa' ORDER BY state ASC'; $db->setQuery($query); $rows = $db->loadObjectList();  if ($rows) {   function xlsBOF() {    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);     return;   };  function xlsEOF() {    echo pack("ss", 0x0A, 0x00);    return;   };  function xlsWriteNumber($Row, $Col, $Value) {    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);    echo pack("d", $Value);    return;   };  function xlsWriteLabel($Row, $Col, $Value ) {    $L = strlen($Value);    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);    echo $Value;   return;   };   // Send Header  header("Pragma: public");  header("Expires: 0");  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");   header("Content-Type: application/force-download");  header("Content-Type: application/octet-stream");  header("Content-Type: application/download");;  header("Content-Disposition: attachment;filename=export.xls ");  header("Content-Transfer-Encoding: binary ");   // XLS Data Cell  xlsBOF();  xlsWriteLabel(1,0,"Company ID");  xlsWriteLabel(1,1,"Company Name");  xlsWriteLabel(1,2,"Address");  xlsWriteLabel(1,3,"Address 2");  xlsWriteLabel(1,4,"Suburb");  xlsWriteLabel(1,5,"City");  xlsWriteLabel(1,6,"State");  xlsWriteLabel(1,7,"Post Code");  xlsWriteLabel(1,8,"Country");  xlsWriteLabel(1,9,"Date");  xlsWriteLabel(1,10,"Phone Business");  xlsWriteLabel(1,11,"Phone Direct");  xlsWriteLabel(1,12,"Fax");  xlsWriteLabel(1,13,"Phone Mobile");  xlsWriteLabel(1,14,"Phone Personal");  xlsWriteLabel(1,15,"Discount");  xlsWriteLabel(1,16,"Title");  xlsWriteLabel(1,17,"Name");  xlsWriteLabel(1,18,"Surname");  xlsWriteLabel(1,19,"Position");  xlsWriteLabel(1,20,"Email");  xlsWriteLabel(1,21,"Contact");  xlsWriteLabel(1,22,"Introduced");  xlsWriteLabel(1,23,"Comments");  xlsWriteLabel(1,24,"Type");  xlsWriteLabel(1,25,"Status");  xlsWriteLabel(1,26,"Rating");  xlsWriteLabel(1,27,"Credit Terms");  xlsWriteLabel(1,28,"Classifications");  $xlsRow = 2;   $i = 0;  foreach ($rows as $item) {    $companyid   = $rows[$i]->companyid;   $company   = $rows[$i]->company;   $address   = $rows[$i]->address;   $address2   = $rows[$i]->address2;   $suburb   = $rows[$i]->suburb;   $city    = $rows[$i]->city;   $state    = $rows[$i]->state;   $pcode    = $rows[$i]->pcode;   $country   = $rows[$i]->country;   $date    = $rows[$i]->date;   $phone_b   = $rows[$i]->phone_b;   $phone_d   = $rows[$i]->phone_d;   $phone_f   = $rows[$i]->phone_f;   $phone_m   = $rows[$i]->phone_m;   $phone_p   = $rows[$i]->phone_p;   $discount   = $rows[$i]->discount;   $title    = $rows[$i]->title;   $name    = $rows[$i]->name;   $surname   = $rows[$i]->surname;   $position   = $rows[$i]->position;   $email    = $rows[$i]->email;   $contact   = $rows[$i]->contact;   $introduced  = $rows[$i]->introduced;   $comments   = $rows[$i]->comments;   $type    = $rows[$i]->type;   $status   = $rows[$i]->status;   $rating   = $rows[$i]->rating;   $cterms   = $rows[$i]->cterms;   $classifactions = $rows[$i]->classifactions;    xlsWriteNumber($xlsRow,0,"$companyid");   xlsWriteNumber($xlsRow,1,"$company");   xlsWriteNumber($xlsRow,2,"$address");   xlsWriteNumber($xlsRow,3,"$address2");   xlsWriteNumber($xlsRow,4,"$suburb");   xlsWriteNumber($xlsRow,5,"$city");   xlsWriteNumber($xlsRow,6,"$state");   xlsWriteNumber($xlsRow,7,"$pcode");   xlsWriteNumber($xlsRow,8,"$country");   xlsWriteNumber($xlsRow,9,"$date");   xlsWriteNumber($xlsRow,10,"$phone_b");   xlsWriteNumber($xlsRow,11,"$phone_d");   xlsWriteNumber($xlsRow,12,"$phone_f");   xlsWriteNumber($xlsRow,13,"$phone_m");   xlsWriteNumber($xlsRow,14,"$phone_p");   xlsWriteNumber($xlsRow,15,"$discount");   xlsWriteNumber($xlsRow,16,"$title");   xlsWriteNumber($xlsRow,17,"$name");   xlsWriteNumber($xlsRow,18,"$surname");   xlsWriteNumber($xlsRow,19,"$position");   xlsWriteNumber($xlsRow,20,"$email");   xlsWriteNumber($xlsRow,21,"$contact");   xlsWriteNumber($xlsRow,22,"$introduced");   xlsWriteNumber($xlsRow,23,"$comments");   xlsWriteNumber($xlsRow,24,"$type");   xlsWriteNumber($xlsRow,25,"$rating");   xlsWriteNumber($xlsRow,26,"$status");   xlsWriteNumber($xlsRow,27,"$cterms");   xlsWriteNumber($xlsRow,28,"$classifactions");   $xlsRow++;  $i++;  };   xlsEOF();  exit();  };   

Я повторяю каждую строку, чтобы убедиться, что данные пропускают, что в порядке, но по какой-то причине файл XLS выпирается так:

Компания ID Адрес компании 1 0 2. 2 0 0

И так далее, кажется, как-то проходит через номер, но не актуальная информация .. Может кто-нибудь помочь мне? Или укажите мне достойного экспорта в Excel (XLS) .. :)

Редактировать:

Если кто-то может выяснить, как установить xlswritelabel быть смелым, что было бы фантастическим :)

Английский оригинал

I found a little script that will export information to an xls file, but I can't seem to get it working. The original code is found here: http://www.appservnetwork.com/modules.php?name=News&file=article&sid=8

And here's my code:

// Query Database $query = 'SELECT * FROM #__db_clients WHERE published = '1' AND companyid IN (1,2) AND country = 'Africa' ORDER BY state ASC'; $db->setQuery($query); $rows = $db->loadObjectList();  if ($rows) {   function xlsBOF() {    echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);     return;   };  function xlsEOF() {    echo pack("ss", 0x0A, 0x00);    return;   };  function xlsWriteNumber($Row, $Col, $Value) {    echo pack("sssss", 0x203, 14, $Row, $Col, 0x0);    echo pack("d", $Value);    return;   };  function xlsWriteLabel($Row, $Col, $Value ) {    $L = strlen($Value);    echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);    echo $Value;   return;   };   // Send Header  header("Pragma: public");  header("Expires: 0");  header("Cache-Control: must-revalidate, post-check=0, pre-check=0");   header("Content-Type: application/force-download");  header("Content-Type: application/octet-stream");  header("Content-Type: application/download");;  header("Content-Disposition: attachment;filename=export.xls ");  header("Content-Transfer-Encoding: binary ");   // XLS Data Cell  xlsBOF();  xlsWriteLabel(1,0,"Company ID");  xlsWriteLabel(1,1,"Company Name");  xlsWriteLabel(1,2,"Address");  xlsWriteLabel(1,3,"Address 2");  xlsWriteLabel(1,4,"Suburb");  xlsWriteLabel(1,5,"City");  xlsWriteLabel(1,6,"State");  xlsWriteLabel(1,7,"Post Code");  xlsWriteLabel(1,8,"Country");  xlsWriteLabel(1,9,"Date");  xlsWriteLabel(1,10,"Phone Business");  xlsWriteLabel(1,11,"Phone Direct");  xlsWriteLabel(1,12,"Fax");  xlsWriteLabel(1,13,"Phone Mobile");  xlsWriteLabel(1,14,"Phone Personal");  xlsWriteLabel(1,15,"Discount");  xlsWriteLabel(1,16,"Title");  xlsWriteLabel(1,17,"Name");  xlsWriteLabel(1,18,"Surname");  xlsWriteLabel(1,19,"Position");  xlsWriteLabel(1,20,"Email");  xlsWriteLabel(1,21,"Contact");  xlsWriteLabel(1,22,"Introduced");  xlsWriteLabel(1,23,"Comments");  xlsWriteLabel(1,24,"Type");  xlsWriteLabel(1,25,"Status");  xlsWriteLabel(1,26,"Rating");  xlsWriteLabel(1,27,"Credit Terms");  xlsWriteLabel(1,28,"Classifications");  $xlsRow = 2;   $i = 0;  foreach ($rows as $item) {    $companyid   = $rows[$i]->companyid;   $company   = $rows[$i]->company;   $address   = $rows[$i]->address;   $address2   = $rows[$i]->address2;   $suburb   = $rows[$i]->suburb;   $city    = $rows[$i]->city;   $state    = $rows[$i]->state;   $pcode    = $rows[$i]->pcode;   $country   = $rows[$i]->country;   $date    = $rows[$i]->date;   $phone_b   = $rows[$i]->phone_b;   $phone_d   = $rows[$i]->phone_d;   $phone_f   = $rows[$i]->phone_f;   $phone_m   = $rows[$i]->phone_m;   $phone_p   = $rows[$i]->phone_p;   $discount   = $rows[$i]->discount;   $title    = $rows[$i]->title;   $name    = $rows[$i]->name;   $surname   = $rows[$i]->surname;   $position   = $rows[$i]->position;   $email    = $rows[$i]->email;   $contact   = $rows[$i]->contact;   $introduced  = $rows[$i]->introduced;   $comments   = $rows[$i]->comments;   $type    = $rows[$i]->type;   $status   = $rows[$i]->status;   $rating   = $rows[$i]->rating;   $cterms   = $rows[$i]->cterms;   $classifactions = $rows[$i]->classifactions;    xlsWriteNumber($xlsRow,0,"$companyid");   xlsWriteNumber($xlsRow,1,"$company");   xlsWriteNumber($xlsRow,2,"$address");   xlsWriteNumber($xlsRow,3,"$address2");   xlsWriteNumber($xlsRow,4,"$suburb");   xlsWriteNumber($xlsRow,5,"$city");   xlsWriteNumber($xlsRow,6,"$state");   xlsWriteNumber($xlsRow,7,"$pcode");   xlsWriteNumber($xlsRow,8,"$country");   xlsWriteNumber($xlsRow,9,"$date");   xlsWriteNumber($xlsRow,10,"$phone_b");   xlsWriteNumber($xlsRow,11,"$phone_d");   xlsWriteNumber($xlsRow,12,"$phone_f");   xlsWriteNumber($xlsRow,13,"$phone_m");   xlsWriteNumber($xlsRow,14,"$phone_p");   xlsWriteNumber($xlsRow,15,"$discount");   xlsWriteNumber($xlsRow,16,"$title");   xlsWriteNumber($xlsRow,17,"$name");   xlsWriteNumber($xlsRow,18,"$surname");   xlsWriteNumber($xlsRow,19,"$position");   xlsWriteNumber($xlsRow,20,"$email");   xlsWriteNumber($xlsRow,21,"$contact");   xlsWriteNumber($xlsRow,22,"$introduced");   xlsWriteNumber($xlsRow,23,"$comments");   xlsWriteNumber($xlsRow,24,"$type");   xlsWriteNumber($xlsRow,25,"$rating");   xlsWriteNumber($xlsRow,26,"$status");   xlsWriteNumber($xlsRow,27,"$cterms");   xlsWriteNumber($xlsRow,28,"$classifactions");   $xlsRow++;  $i++;  };   xlsEOF();  exit();  }; 

I echoed out each row to make sure data is being passed through, which is ok, but for some reason, the xls file is spitting out like this:

Company ID Company Name Address 1 0 2 2 0 0

And so on, it seems to be somehow passing through a number, but not the actual information.. Can anyone help me out? Or point me to a decent export to excel (xls).. :)

EDIT:

If anyone can figure out how to set xlsWriteLabel to be bold, that would be fantastic :)

</div
        
   
   

Список ответов

3
 
vote
vote
Лучший ответ
 

Если фактическая информация - строки, это не будет работать. Pack («D» пытается бросить его в виде двойного вместо строки.

Вам нужно создать функцию xlswriteString.

Похоже, есть один здесь: http://hunter.forumotion.com /forum-f9/topic-t98.htm

 <код> function xlsWriteString( $Row , $Col , $Value ) { $L = strlen( $Value ); echo pack( "ssssss" , 0x204 , 8 + $L , $Row , $Col , 0x0 , $L ); echo $Value; return; }   
 

If the actual information is strings, this won't work. Pack("d" is trying to cast it as a Double instead of a String.

You need to create a xlsWriteString function.

Looks like there's one here: http://hunter.forumotion.com/forum-f9/topic-t98.htm

function xlsWriteString( $Row , $Col , $Value ) { $L = strlen( $Value ); echo pack( "ssssss" , 0x204 , 8 + $L , $Row , $Col , 0x0 , $L ); echo $Value; return; } 
</div
 
 
 
 
1
 
vote

Я думаю, что если вы используете Office 2007, вам лучше посмотреть в открытый документ.

Есть реализация в PHP там . Также Viewer Excel 2007 бесплатно бесплатно.

 

I think if you client are using Office 2007, you have better to look into the Open Document.

there is an implementation in php there. Also the Excel 2007 viewer is free so.

</div
 
 

Связанный проблема

0  Если запись в таблице A не существует в таблице b сделать что-то, как бы я пошел по этому поводу?  ( If record in table a does not exist in table b do something how would i go abou ) 
У меня есть таблица A с полем, называемым писем, мне нужно проверить таблицу B, которая также имеет поле под названием Emails. Если электронное письмо в табли...

3  Рассчитать размер плитки карты Google на уровне масштабирования N  ( Calculate tile size of google map at zoom level n ) 
Эй. Эй. У меня есть приложение MAPS, которое использует карты Google. Я получаю границы от карты, а затем я делаю некоторые кластеризащие маркеры на этой терр...

21  Нарезка многомерного массива PHP через один из его элементов  ( Slicing a multi dimensional php array across one of its elements ) 
сказать, например, вы только что запрашивали базу данных, и вы получили этот 2D-массив. <код> $results = array( array('id' => 1, 'name' => 'red' , 'spi...

0  PHP Проверка формата DateTime с помощью PREG_MATCH и CHECHDATE неправильный результат  ( Php checking datetime format using preg match and checkdate wrong result ) 
Я хочу подтвердить формат dateTime с помощью функции preg_match () и checkdate (). Мой формат «DD / MM / YYYY HH: MM: SS». Что не так с моим кодом? <код> fu...

1  Как читать защищенные данные из API API / PHP API Facebook API / PHP  ( How to read protected data from facebook ads api php sdk ) 
Я получаю защищенный объект, возвращенный из вызова API в рекламу Facebook. Я звоню с <код> $campaigns = $account->getAdCampaigns($fields, $params); и...

1  Как использовать URLFetch в PHP  ( How to use urlfetch in php ) 
Где я могу получить файлы библиотеки API или PHP для использования URLFetch? Я искал в нескольких местах в документации по двигателю Google App. Мне удалось...

0  Cookie не доступно на сайте  ( Cookie not available sitewide ) 
У меня есть два вопроса с настройкой и извлечением файлов cookie. cookie загружается, но нельзя вызывать, пока страница не будет обновлена. Это означает, ч...

1  Почему PHP не может создать файл, даже с 777 разрешениями?  ( Why cant php create a file even with 777 permissions ) 
У меня есть тестовый сервер виртуальной арки Linux с Xampp, работающим на моем ноутбуке, и я не могу получить PHP для создания новых файлов, даже с разрешения...

0  WordPress Query 'Orderby' => 'meta_value' списки 10 до 9  ( Wordpress query orderby meta value lists 10 before 9 ) 
Я создаю сайт WordPress для моего отца в ресторане закона. Каждый курс имеет номер, который я перечисляю с использованием «orderby» расширенного пользовательс...

0  Как вы используете PHP и SQL для отправки данных таблицы на другую таблицу  ( How do you use php and sql to submit table data to another table ) 
У меня есть таблица полетов, и я использую цикл, чтобы распечатать информацию о рейсах, наряду с кнопкой отправки, кнопка, которая нажала, - это представленны...

0  Symfony2 параметр или проблема кэша  ( Symfony2 parameter or cache issue ) 
Я использую Symfony2 для моего приложения и приложения, работая нормально в Windows, но когда я загружаю его на сервер (Ubuntu 12.04 LTS), дает следующую ошиб...

2  Сделать HTACCESS не применять для некоторых подпапок  ( Make htaccess to not be applied for some subfolders ) 
Я использую эту htaccess для моего приложения. <код> <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index.php$ - [L] RewriteCond %{REQ...

1  Запрос CURL PHP для ошибки возврата веб-службы  ( Php curl request for web service returning error ) 
Я продолжаю получать ошибку: «Не удалось отменить сущность Serialize» при выполнении запроса на отдых ниже. Я предполагаю, что это связано с форматированием м...

6  Как вы заставляете гравитар на отображение идентификатора  ( How do you force gravatar into displaying identicon ) 
Есть ли способ заставить Gravatar до всегда Вернуть identicon url? P >. Единственный способ, которым я нашел до сих пор: <Код> ?forcedefault=1&default=my...

0  Авто не показывая результат jQuery  ( Auto complete not showing result jquery ) 
Я пытаюсь создать автоматическую комплектацию, используя jqueryui.i am echo ing a jquery a age ange Результат базы данных из удаленного поиска файлов.php.it п...

Связанный проблема

0  Если запись в таблице A не существует в таблице b сделать что-то, как бы я пошел по этому поводу? 
3  Рассчитать размер плитки карты Google на уровне масштабирования N 
21  Нарезка многомерного массива PHP через один из его элементов 
0  PHP Проверка формата DateTime с помощью PREG_MATCH и CHECHDATE неправильный результат 
1  Как читать защищенные данные из API API / PHP API Facebook API / PHP 
1  Как использовать URLFetch в PHP 
0  Cookie не доступно на сайте 
1  Почему PHP не может создать файл, даже с 777 разрешениями? 
0  WordPress Query 'Orderby' => 'meta_value' списки 10 до 9 
0  Как вы используете PHP и SQL для отправки данных таблицы на другую таблицу 
0  Symfony2 параметр или проблема кэша 
2  Сделать HTACCESS не применять для некоторых подпапок 
1  Запрос CURL PHP для ошибки возврата веб-службы 
6  Как вы заставляете гравитар на отображение идентификатора 
0  Авто не показывая результат jQuery