2013-09-17 2 views
2

Как экспортировать базу данных в Excel? У меня есть таблица вроде этого:Как экспортировать в Excel?

+---------------------------------------------------------------------------------------+ 
id |title 
---------------------------------------------------------------------------------------- 
52 | Book A 
54 | <div editor_id="mce_editor_0" align="justify">Pembayaran Dividen PT. Telkom Tbk. untuk Tahun Buku 2007 Tahap I akan dilaksanakan mulai tanggal&nbsp; 18 Desember 2007 dengan mempergunakan Surat Pemberitahuan Pembayaran Dividen (SPPD) sebagai bukti pembayaran.</div> 
+---------------------------------------------------------------------------------------+ 

И у меня есть скрипт для экспорта, как это:

<?php 
// nama file 

$namaFile = "report.xls"; 

// Function penanda awal file (Begin Of File) Excel 

function xlsBOF() { 
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); 
return; 
} 

// Function penanda akhir file (End Of File) Excel 

function xlsEOF() { 
echo pack("ss", 0x0A, 0x00); 
return; 
} 
// Function untuk menulis data (angka) ke cell excel 

function xlsWriteNumber($Row, $Col, $Value) { 
echo pack("sssss", 0x203, 14, $Row, $Col, 0x0); 
echo pack("d", $Value); 
return; 
} 

// Function untuk menulis data (text) ke cell excel 

function xlsWriteLabel($Row, $Col, $Value) { 
$L = strlen($Value); 
echo pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L); 
echo $Value; 
return; 
} 

// header file excel 

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/x-msdownload"); 

    // header untuk nama file 
    header("Content-Disposition: attachment; 
    filename=".$namaFile.""); 

    //header("Content-Transfer-Encoding: binary "); 




    // memanggil function penanda awal file excel 
    xlsBOF(); 

// ------ membuat kolom pada excel --- // 

// mengisi pada cell A1 (baris ke-0, kolom ke-0) 
xlsWriteLabel(0,0,"ID");    
xlsWriteLabel(0,1,"TITLE");  

// koneksi ke mysql 

mysql_connect("localhost", "root", ""); 
mysql_select_db("db_lama"); 

// query menampilkan semua data 

$query = "SELECT * FROM bf_articles "; 
$hasil = mysql_query($query); 

// nilai awal untuk baris cell 
$noBarisCell = 1; 

// nilai awal untuk nomor urut data 
$noData = 1; 

while ($data = mysql_fetch_array($hasil)) 
{ 
    // menampilkan no. urut data 
    xlsWriteNumber($noBarisCell,0,$data['id']); 
    xlsWriteLabel($noBarisCell,1,$data['title']); 



    // increment untuk no. baris cell dan no. urut data 
    $noBarisCell++; 
    $noData++; 
} 

// memanggil function penanda akhir file excel 
xlsEOF(); 
exit(); 

?> 

Это не работает, есть ошибка

file error: data may have been lost

Что я могу сделать? пожалуйста, помогите мне :(

+2

следуйте по этой ссылке http://phpexcel.codeplex.com/ –

+0

Используйте 'CSV'. Я не думаю, что двоичная обработка xls-файлов - такая легкая работа, которую нужно выполнить, как вы пытаетесь. –

ответ

1

Может быть, ваша проблема во время выполнения проблемы. В противном случае используйте this link. Это имеющий,

At first: Try to track where exactly it arrears(row) and check the length of string in cell(should be only < 255) 
This module has some nasty moments. By default the limit had been set in constructor of Spreadsheet_Excel_Writer_BIFFwriter($this->_limit = 2080;) ~20kb. 
Change it to size what you need. 

Другие способы: 1) экспорт like,

<?php 
$file="demo.xls"; 
$test="<table ><tr><td>Cell 1</td><td>Cell 2</td></tr></table>"; 
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$file"); 
echo $test; 
?> 

2) получить помощь от this link.

+0

Как установить лимит на мой скрипт? –

+0

с set_time_limit http://php.net/manual/de/function.set-time-limit.php – KarSho

+0

Я попробовал поставить 'set_time_limit (2080)' под 'while', но did not work: (( –

0

Ну, я обычно делаю это с помощью PHPExcel (http://phpexcel.codeplex.com/), но вы также можете сделать это вручную, установив заголовки. Если вам нужны форматирование, стили шрифтов и т. д., используйте PHPExcel, иначе создайте CSV string и задайте заголовки содержимого, чтобы выплеснуть файл .xls, и он должен хорошо читать.

Вы можете легко сделать это как CSV, как упоминалось ранее (хотя это был не ваш вопрос). Если вы хотите сделать это в формате CSV можно использовать предыдущий пример, или вот один я написал очень давно:

http://pastebin.ws/8fbfco

Смежные вопросы