|
|
|
export excel ยังไง จะให้มีการเช็ค success ด้วยอ่ะครับ |
|
|
|
|
|
|
|
โจทย์มีอยู่ว่า เมื่อกดปุ่ม export excel แล้วจะมี alert ขึ้นมาว่า กำลังโหลดอยู่นะ แล้วพอทำการสร้างไฟล์ excel เสร็จ popup ก็จะปิดไป พร้อม
กับเว็บบราวเซอร์ที่จะขึ้น popup ถามว่าจะเซฟไฟล์ excel นี้ที่ไหน พอจะมีวิธีมั้ยครับ เพราะ ajax ก็ใช้ไม่ได้ ขอแนวหน่อยครับ โค้ดประมาณนี้
ครับ
Code (JavaScript)
<input type="button" id="excel" value="Export excel">
$(document).ready(function(){
$('#excel').one("click", function(){
document.location = "exportexcel.php";
});
});
exportexcel.php
Code (PHP)
$objPHPExcel = new PHPExcel();
// Set document properties
$objPHPExcel->getProperties()->setCreator("")
->setLastModifiedBy("")
->setTitle("Report Authen Log By User")
->setSubject("Report Authen Log By User")
->setDescription("Report Authen Log By User")
->setKeywords("Report Authen Log By User")
->setCategory("Report Authen Log By User");
// Add some data
$objPHPExcel->getActiveSheet()->setTitle('Report-1');
$data = $objPHPExcel->setActiveSheetIndex(0);
$data->setCellValue('A1', 'Login Date');
$data->setCellValue('B1', 'Node Name');
$data->setCellValue('C1', 'Node IP');
$data->setCellValue('D1', 'User Name');
$data->setCellValue('E1', 'User IP');
$data->setCellValue('F1', 'Command');
$k = $j = 1;
$n = 0;
$sql = "SELECT * FROM network";
$query = mysql_query($sql);
while($row = mysql_fetch_array($query)){
++$k;
if(is_integer($n/10000) && $n != 0){
$objPHPExcel->createSheet();
$data = $objPHPExcel->setActiveSheetIndex($j);
$objPHPExcel->getActiveSheet()->setTitle('Report-'.($j+1));
$data->setCellValue('A1', 'Login Date');
$data->setCellValue('B1', 'Node Name');
$data->setCellValue('C1', 'Node IP');
$data->setCellValue('D1', 'User Name');
$data->setCellValue('E1', 'User IP');
$data->setCellValue('F1', 'Command');
$j++;
$k = 2;
$n - 1;
}
$data->setCellValue('A'.$k, (empty($row['login_date']))?'-':$row['login_date']);
$data->setCellValue('B'.$k, (empty($row['node_name']))?'-':$row['node_name']);
$data->setCellValue('C'.$k, (empty($row['node_ip']))?'-':$row['node_ip']);
$data->setCellValue('D'.$k, (empty($row['user_name']))?'-':$row['user_name']);
$data->setCellValue('E'.$k, (empty($row['user_ip']))?'-':$row['user_ip']);
$data->setCellValue('F'.$k, (empty($row['cmd']))?'-':$row['cmd']);
$n++;
}
// Rename worksheet
// 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)
$filename = "Report_user_".date("Y-m-d_H-i",time());
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename="'.$filename.'".xlsx"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save('php://output');
exit;
ขอบคุณครับ
Tag : PHP, MySQL, JavaScript, Ajax, jQuery
|
|
|
|
|
|
Date :
2013-12-10 21:49:47 |
By :
เด็กโง่ |
View :
1086 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เคยใช้วิธีลิ้งค์ไปยังไฟล์นี้ Gen ตัว Excel โดยตรงครับ ซึ่งปกติแล้วถ้ามันทำงานช้า มันจะยังอยู่หน้าเดิม จนกว่าปลายทางจะทำงานเสร็จ ซึ่งในหน้าเดิมก็สามารถแทรกพวก Loading ได้
|
|
|
|
|
Date :
2013-12-12 09:15:09 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมสงสัยว่าจะเช็คไงครับ ในเมื่อกด export excel แล้ว มันก็ export ให้ แต่มันจะยังค้างอยู่ dialog นี้
จะถามก่อนว่าจะเซฟไฟล์ หรือจะเปิดดู
ทีนี้ผคิดว่ามันค้างอยู่จังหวะนี้มันยังไม่มีไฟล์ excel ทำให้ไม่สามารถตรวจสอบได้ว่าสร้างเสร็จหรือยัง
แต่คิดว่ามันมี temp ใน windows ลองแกะ libraly ดู มันจะเซฟแล้วลบ temp ออก ซึ่งกลัวจะเช็คไม่ทัน และ temp มันก็สร้างแบบ uniuqe
รันคำสั่งนี้ไปมันก็เปลี่ยนเรื่อย ๆ
Code (PHP)
tempnam(PHPExcel_Shared_File::sys_get_temp_dir(), 'phpxltmp');
เอามาหานอกฟังก์ชั่นมันก็หา temp ไม่เจอ เลยคิดว่าจะทำแบบนี้ครับ
พอสร้าง excel เสร็จปั๊บ ก็ให้สร้างไฟล์ txt เปล่า ๆ มาทันที แล้วเพิ่ม script setTimeout ให้มันวนเช็คว่ามีไฟล์ txt นี้มั้ย ถ้า
มีก็ถือว่า success แล้วก็ลบไฟล์ txt ทิ้งไป ไม่รู้จะเวิร์คหรือเปล่าครับ
ขอบคุณครับ
|
ประวัติการแก้ไข 2013-12-12 14:00:54 2013-12-12 15:07:42
|
|
|
|
Date :
2013-12-12 13:22:55 |
By :
เด็กโง่ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|