สอบถามเรื่องของการดาวน์โหลดไฟล์ของ PHPEXCEL Library ครับ
สวัสดีครับ ผมขอรบกวนท่านผู้รู้โปรดแนะนำหน่อยครับ ว่า ผมจะแสดงการดาวน์โหลดไฟล์ของ PHPExcel Library ได้อย่างไรครับ
เวลาผู้ใช้กดดาวน์โหลดไฟล์ Excel แล้วให้โปรแกรมแสดงการดาวน์โหลดให้ผู้ใช้เห็นอะครับ
ช่วยดูโค้ดให้ผมทีครับ ซึ่งโค้ดที่ผมได้มานั้นผม Search จาก Youtube ใน Channel ของ
https://www.youtube.com/watch?v=QPBgFiRtCJ4
ส่วนโค้ดนั้นผมโหลดมาจาก Channel เดียวกันครับ
https://drive.google.com/file/d/0B1KkmsYoMNtRVzBKZkR6T0hWQ00/view
ซึ่งผมได้เอามาดัดแปลงโค้ดครับ ตามด้านล่างครับ
Code (PHP)
<?php
ini_set('max_execution_time',0);
ini_set('memory_limit', '-1');
?>
<html>
<head>
<title>Test PHP Excel</title>
<meta charset="utf-8">
</head>
<body>
<?php
function DateThai($Date){
$Year = date("Y" , strtotime($Date)) + 543;
$Month = date("n" , strtotime($Date));
$Day = date("j" , strtotime($Date));
$Hour = date("H" , strtotime($Date));
$Minute = date("i" , strtotime($Date));
$Seconds = date("s" , strtotime($Date));
$MonthCut = Array("" , "ม.ค." , "ก.พ." , "มี.ค." , "เม.ย." , "พ.ค." , "มิ.ย." , "ก.ค." , "ส.ค." , "ก.ย." , "ต.ค." , "พ.ย." , "ธ.ค.");
$MonthThai = $MonthCut[$Month];
return "วันที่ $Day $MonthThai $Year, เวลา $Hour - $Minute";
}
generate_excel();
function generate_excel()
{
$year = date('Y')+543;
$dayAndMonth = date("d-m");
$time = date('h-i');
$dateTime = $dayAndMonth."-".$year.", ".$time;
$Date = date("Y-m-d h:i:sa");
//DateThai($Date);
// ส่วนเชื่อมต่อ databese
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("test_exel") or die(mysql_error());
mysql_query("SET NAMES UTF8");
// ส่วนเชื่อมต่อ databese
/** Error reporting */
if (PHP_SAPI == 'cli')
die('This example should only be run from a Web Browser');
/** Include PHPExcel */
//require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
require_once 'Classes/PHPExcel.php';
//include 'Classes/PHPExcel/IOFactory.php';
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("Amit Andipara")
->setLastModifiedBy("Amit Andipara")
->setTitle("extract data")
->setSubject("extract data")
->setDescription("extract data")
->setKeywords("extract data")
->setCategory("extract data");
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'name')
->setCellValue('B1', 'city')
->setCellValue('C1', 'country')
->setCellValue('D1', 'Date and time')
->setCellValue('E1','เวลาดาวน์โหลดไฟล์ '.$dateTime);
$res = mysql_query("SELECT * FROM table_excel") or die(mysql_error());
$a = 1;
while ($row = mysql_fetch_array($res)) {
$a = $a + 1;
$a1 = 'A' . $a;
$b1 = 'B' . $a;
$c1 = 'C' . $a;
$d1 = 'D' . $a;
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue($a1, $row["name"])
->setCellValue($b1, $row["city"])
->setCellValue($c1, $row["country"])
->setCellValue($d1, DateThai($Date));
}
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel2007)
// Redirect output to a client's web browser (Excel5)
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$fileName = 'falcon-' . $dateTime . '.xls';
$objWriter->save($fileName, 'wb');
$objWriter->save('php://output');
}
?>
</body>
</html>
เวลาที่ผมใส่โค้ดส่วน $objWriter->save('php://output'); ไปแล้ว ผลลัพธ์คือ
แบบนี้ครับ
ซึ่งผมได้หาตามเว็บ StackOverflow มาบ้างแล้วครับ บ้างส่วนก็บอกให้ส่วน Header
Code (PHP)
// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xls"');
// Write file to the browser
$objWriter->save('php://output');
ซึ่ง ผลก็คือ
รบกวนท่านผู้รู้หรือผู้ใดพอมีความรู้ช่วนแนะนำที่ครับTag : PHP, MySQL, Google Chrome
ประวัติการแก้ไข 2018-02-15 09:29:05
Date :
2018-02-15 09:24:12
By :
pongC
View :
809
Reply :
9
ลองดูเป็นตัวอย่าง
Code (PHP)
public function Report(){
$this->load->library('Excel');
$this->excel->setActiveSheetIndex(0);
$ws=$this->excel->getActiveSheet();
//////////////////////////////////////////
$hd=array(array('เลขที่','งวด','เลขที่บล๊อค', 'ชื่อบล๊อค','ชื่อพื้นที่','ชำระแล้ว','สัญญาที่','ชื่อผู้เช่า','จำนวนเงิน','วันที่ชำระเงิน'));
$ws->fromArray($hd,null,'A1');
//////////////////////////////////////////
$rs = $this->db->get('bill')->result_array();
$ws->fromArray($rs,null,'A2');
$filename='bill_' . date('Ymd') . '.xls'; //save our workbook as this file name
header('Content-Type: application/vnd.ms-excel'); //mime type
header('Content-Disposition: attachment;filename="'.$filename.'"'); //tell browser what's the file name
header('Cache-Control: max-age=0'); //no cache
$Wr=PHPExcel_IOFactory::CreateWriter($this->excel,'Excel2007'); // 2007
$Wr->save('php://output');
}
Date :
2018-02-15 12:42:50
By :
Chaidhanan
ขาด <!DOCTYPE html> หรือเปล่า
Date :
2018-02-16 10:52:13
By :
apisitp
เอาของจขกทมาใช้ได้เลยครับ
Code (PHP)
require_once 'Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0);
$ws=$objPHPExcel->getActiveSheet();
Date :
2018-02-16 15:09:00
By :
Chaidhanan
ตอนนี้ผมยังไม่สามารถทำได้เลยครับผม แก้มาทั้งวันมา 3 วันแล้วครับผม
คือ ผมได้เข้าไป Youtube หา Channel ใหม่อะครับ ใช้ Library PHPExcel เหมือนเดิมครับ
https://www.youtube.com/watch?v=ua596KL8XG8&t=19s
ส่วนโค้ดของ Channel นี้
https://gist.github.com/theredstapler/d15101f3f275a79823324dbba54d3949
ผมได้เอาโค้ดมา แต่ไม่ได้ดัดแปลงอะไรเลยครับ
Code (PHP)
require_once 'Classes/PHPExcel.php';
$objPHPExcel = new PHPExcel();
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'hello world!');
$objPHPExcel->getActiveSheet()->setTitle('Chesse1');
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="helloworld.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
แต่ผมลัพธ์ ก็
ช่วยบอกผมทีครับ ว่าผมควรทำอย่างไร หรือแก้ตรงไหน ท่านไหนที่มี source อื่นๆบ้างครับ มีแนวหรือเว็บที่ท่านๆใช้เอาโค้ดมาดัดแปลง
รบกวนช่วยทีครับ
Date :
2018-02-17 09:54:05
By :
pongC
ผมโหลด code และทำตามตัวอย่างที่คุณให้มามันก็ไม่เห็นมีปัญหาอะไรเลยครับ...
ตัว excel คุณมีปัญหาเองหรือเปล่า
Date :
2018-02-19 09:39:20
By :
apisitp
office ผม 2016 ของแท้ครับ ยืนยันว่า code ไม่มีปัญหา
Date :
2018-02-19 11:41:53
By :
apisitp
Load balance : Server 00