Nội dung file index.php Mã: <?php // load library require 'php-excel.class.php'; // create a simple 2-dimensional array $data = array( array ('Name', 'Surname'), array ('Hồ', 'Ngọc Triển'), array ('Lê', 'Chánh Còi'), ); // generate file (constructor parameters are optional) $xls = new Excel_XML('UTF-8', false, 'Workflow Management'); $xls->addArray($data); $xls->generateXML('Output_Report_WFM'); ?> Nội dung file php-excel.class.php: Mã: <?php /** * Simple excel generating from PHP5 * * @package Utilities * @license http://www.opensource.org/licenses/mit-license.php * @author Oliver Schwarz <oliver.schwarz@gmail.com> * [USER=1768]version[/USER] 1.0 */ /** * Generating excel documents on-the-fly from PHP5 * * Uses the excel XML-specification to generate a native * XML document, readable/processable by excel. * * @package Utilities * @subpackage Excel * @author Oliver Schwarz <oliver.schwarz@vaicon.de> * [USER=1768]version[/USER] 1.1 * * @todo Issue #4: Internet Explorer 7 does not work well with the given header * @todo Add option to give out first line as header (bold text) * @todo Add option to give out last line as footer (bold text) * @todo Add option to write to file */ class Excel_XML { /** * Header (of document) * @var string */ private $header = "<?xml version=\"1.0\" encoding=\"%s\"?\>\n<Workbook xmlns=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:x=\"urn:schemas-microsoft-com:office:excel\" xmlns:ss=\"urn:schemas-microsoft-com:office:spreadsheet\" xmlns:html=\"http://www.w3.org/TR/REC-html40\">"; /** * Footer (of document) * @var string */ private $footer = "</Workbook>"; /** * Lines to output in the excel document * @var array */ private $lines = array(); /** * Used encoding * @var string */ private $sEncoding; /** * Convert variable types * @var boolean */ private $bConvertTypes; /** * Worksheet title * @var string */ private $sWorksheetTitle; /** * Constructor * * The constructor allows the setting of some additional * parameters so that the library may be configured to * one's needs. * * On converting types: * When set to true, the library tries to identify the type of * the variable value and set the field specification for Excel * accordingly. Be careful with article numbers or postcodes * starting with a '0' (zero)! * * @param string $sEncoding Encoding to be used (defaults to UTF-8) * @param boolean $bConvertTypes Convert variables to field specification * @param string $sWorksheetTitle Title for the worksheet */ public function __construct($sEncoding = 'UTF-8', $bConvertTypes = false, $sWorksheetTitle = 'Table1') { $this->bConvertTypes = $bConvertTypes; $this->setEncoding($sEncoding); $this->setWorksheetTitle($sWorksheetTitle); } /** * Set encoding * @param string Encoding type to set */ public function setEncoding($sEncoding) { $this->sEncoding = $sEncoding; } /** * Set worksheet title * * Strips out not allowed characters and trims the * title to a maximum length of 31. * * @param string $title Title for worksheet */ public function setWorksheetTitle ($title) { $title = preg_replace ("/[\\\|:|\/|\?|\*|\[|\]]/", "", $title); $title = substr ($title, 0, 31); $this->sWorksheetTitle = $title; } /** * Add row * * Adds a single row to the document. If set to true, self::bConvertTypes * checks the type of variable and returns the specific field settings * for the cell. * * @param array $array One-dimensional array with row content */ private function addRow ($array) { $cells = ""; foreach ($array as $k => $v): $type = 'String'; if ($this->bConvertTypes === true && is_numeric($v)): $type = 'Number'; endif; $v = htmlentities($v, ENT_COMPAT, $this->sEncoding); $cells .= "<Cell><Data ss:Type=\"$type\">" . $v . "</Data></Cell>\n"; endforeach; $this->lines[] = "<Row>\n" . $cells . "</Row>\n"; } /** * Add an array to the document * @param array 2-dimensional array */ public function addArray ($array) { foreach ($array as $k => $v) $this->addRow ($v); } /** * Generate the excel file * @param string $filename Name of excel file to generate (...xls) */ public function generateXML ($filename = 'excel-export') { // correct/validate filename $filename = preg_replace('/[^aA-zZ0-9\_\-]/', '', $filename); // deliver header (as recommended in php manual) header("Content-Type: application/vnd.ms-excel; charset=" . $this->sEncoding); header("Content-Disposition: inline; filename=\"" . $filename . ".xls\""); // print out document to the browser // need to use stripslashes for the damn ">" echo stripslashes (sprintf($this->header, $this->sEncoding)); echo "\n<Worksheet ss:Name=\"" . $this->sWorksheetTitle . "\">\n<Table>\n"; foreach ($this->lines as $line) echo $line; echo "</Table>\n</Worksheet>\n"; echo $this->footer; } } ?> Đã test, không bị lỗi font chữ. Nguồn: Sưu tầm
code đó xuất ra từ mảng, bạn có thể giúp mình xuất ra từ mysql mà không lỗi font tiếng việt được chứ? cảm ơn bạn
Code trên chỉ xuất file excel ra từ mảng gán sẵn. Code dưới đây xuất ra file excel từ MySql Cùng thực hành luôn nhé. Trước hết vào phpmyadmin tạo 1 CSDL (inet_shop) gồm 1 bảng (shop_topic) có 2 trường (id, nametp). Tiến hành nhập dữ liệu. Đang làm đồ án sẳn up csdl mới tạo lên luôn, down file đính kèm và import vào phpmyadmin nhé. 1. Xong phần CSDL test 2. - Nội dung file php-excel.class.php giữ nguyên - Thay toàn bộ code trong file index.php bằng code dưới đây, trong đó mình đã chú thích rõ rồi, ở đâu không hiểu cứ gửi bài bên dưới nhé!. PHP: <?// load libraryrequire 'php-excel.class.php'; //Ket noi CSDL$connect = mysql_connect('localhost', 'root', '');if(!$connect){ echo "Kết nối dữ liệu không thành công!";}$db_selected = mysql_select_db('inet_shop', $connect); //lay du lieu tu bang "shop_topic"$sql = "SELECT * FROM shop_topic";$result = mysql_query($sql); //Khai bao bien mang, gan tieu de$data = array(array('ID', 'Tên chủ đề')); //Them tiep neu muon lay nhieu cot hon nua while ( $row = mysql_fetch_array( $result ) ) { //lay gia tri tu csdl gan cho mang $data[] = array ($row['id'], $row['nametp']); //Them tiep neu muon lay nhieu cot hon nua } // generate file (constructor parameters are optional)$xls = new Excel_XML('UTF-8', false, 'Sheet 1');$xls->addArray($data);$xls->generateXML(' Test_export_2mit'); ?>
cài sampp rồi mà sao k khởi động mysql để kết nối với php đc? chỉ mình cách khởi động mysql đi, hoặc có phần mềm myslq nào cũng đc.thank
Bạn khởi động xamp-control và "Star" hai dịch vụ là Apache và Mysql Làm việc với mysql thông qua đường dẫn http://localhost/phpmyadmin
thanks bác. Em đang cần cái này --- Nhập chung bài viết, 15 Tháng mười hai 2012 --- thanks bác. Em đang cần cái này
sao minh lam nhu vay ma thay bao loi vay --- Nhập chung bài viết, 29 Tháng mười hai 2012 --- sao minh lam nhu vay ma thay bao loi vay --- Nhập chung bài viết, 29 Tháng mười hai 2012 --- sao ban ko lam mot video cho bon minh xem voi --- Nhập chung bài viết, 29 Tháng mười hai 2012 --- sao ban ko lam mot video cho bon minh xem voi
Bạn ơi cho m hỏi.M muốn xuất ra excel thêm biểu tượng logo.nếu như m muốn tô màu nữa thì làm kiểu gì nhỉ?
Bạn ơi cho m hỏi.M muốn xuất ra excel thêm biểu tượng logo.nếu như m muốn tô màu nữa thì làm kiểu gì nhỉ?
Cho mình hỏi mình làm xong rồi nhưng khi chạy file exl thì nó báo lỗi này : problems came up in the following areas during load. Ai biết do đâu không chỉ mình với. Lần đầu mình chạy thì nó ra file a.html thì chạy ngon. Nhưng lần sau thì nó cho save thành file exl và lỗi. Thanks!
Mình làm theo hướng dẫn của bạn nhưng khi chạy file index.php màn hình chỉ xuất hiện dòng "addArray($data); $xls->generateXML(' Test_export_2mit'); ?>" ( mình mới học code). Giúp mình nhé.
Gửi bạn code, bạn xem giúp mình nhé: mediafire.com/download/l5w6c4bjo1jrzbb/downexcel.zip Cảm ơn bạn!
Chào bạn bạn xem giúp mình vơi mình export ra file excel thì thành công nhưng nó bị lỗi font, và dữ liệu không đầy đủ. Bạn có thể test giúp mình với được không đây là code, database, file xuất ra nữa mediafire.com/download/4fj5cly3atrnb87/diemhs.zip Mail của mình: hpl.eduit@gmail.com