thinkphp源碼安裝教程,PHP博客導入導出,Thinkphp5.0導入導出詳解

 2023-10-24 阅读 24 评论 0

摘要:Thinkphp擴展類一般都放在extend下寫導入導出的公共方法,方便再控制器中調用導入excel文件/***?導入excel文件thinkphp源碼安裝教程,*?@param??string?$file?excel文件路徑*?@return?array????????excel文件內容數組*/function?import_excel($file){//?判斷文

Thinkphp擴展類一般都放在extend下

寫導入導出的公共方法,方便再控制器中調用

導入excel文件/**

*?導入excel文件

thinkphp源碼安裝教程,*?@param??string?$file?excel文件路徑

*?@return?array????????excel文件內容數組

*/

function?import_excel($file){

//?判斷文件是什么格式

thinkphp6教程、$type?=?pathinfo($file);

$type?=?strtolower($type["extension"]);

$type=$type==='csv'???$type?:?'Excel5';

ini_set('max_execution_time',?'0');

Loader::import('PHPExcel.PHPExcel');

thinkphp5.1開發手冊。//?判斷使用哪種格式

$objReader?=?PHPExcel_IOFactory::createReader($type);

$objPHPExcel?=?$objReader->load($file);

$sheet?=?$objPHPExcel->getSheet(0);

//?取得總行數

thinkphp博客,$highestRow?=?$sheet->getHighestRow();

//?取得總列數

$highestColumn?=?$sheet->getHighestColumn();

//循環讀取excel文件,讀取一條,插入一條

$data=array();

thinkphp5菜鳥教程、//從第一行開始讀取數據

for($j=1;$j<=$highestRow;$j++){

//從A列讀取數據

for($k='A';$k<=$highestColumn;$k++){

//?讀取單元格

$data[$j][]=$objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue();

}

}

return?$data;

}

數組轉xls格式的excel文件/**

*?數組轉xls格式的excel文件

*?@param??array??$data??????需要生成excel文件的數組

*?@param??string?$filename??生成的excel文件名

*??????示例數據:

$data?=?array(

array(NULL,?2010,?2011,?2012),

array('Q1',???12,???15,???21),

array('Q2',???56,???73,???86),

array('Q3',???52,???61,???69),

array('Q4',???30,???32,????0),

);

*/

function?create_xls($data,$filename='simple.xls'){

ini_set('max_execution_time',?'0');

Loader::import('PHPExcel.PHPExcel');

$filename=str_replace('.xls',?'',?$filename).'.xls';

$phpexcel?=?new?PHPExcel();

$phpexcel->getProperties()

->setCreator("Maarten?Balliauw")

->setLastModifiedBy("Maarten?Balliauw")

->setTitle("Office?2007?XLSX?Test?Document")

->setSubject("Office?2007?XLSX?Test?Document")

->setDescription("Test?document?for?Office?2007?XLSX,?generated?using?PHP?classes.")

->setKeywords("office?2007?openxml?php")

->setCategory("Test?result?file");

$phpexcel->getActiveSheet()->fromArray($data);

$phpexcel->getActiveSheet()->setTitle('Sheet1');

$phpexcel->setActiveSheetIndex(0);

header('Content-Type:?application/vnd.ms-excel');

header("Content-Disposition:?attachment;filename=$filename");

header('Cache-Control:?max-age=0');

header('Cache-Control:?max-age=1');

header?('Expires:?Mon,?26?Jul?1997?05:00:00?GMT');?//?Date?in?the?past

header?('Last-Modified:?'.gmdate('D,?d?M?Y?H:i:s').'?GMT');?//?always?modified

header?('Cache-Control:?cache,?must-revalidate');?//?HTTP/1.1

header?('Pragma:?public');?//?HTTP/1.0

$objwriter?=?PHPExcel_IOFactory::createWriter($phpexcel,?'Excel5');

$objwriter->save('php://output');

exit;

}

數據轉csv格式的excle/**

*?數據轉csv格式的excle

*?@param??array?$data??????需要轉的數組

*?@param??string?$header???要生成的excel表頭

*?@param??string?$filename?生成的excel文件名

*??????示例數組:

$data?=?array(

'1,2,3,4,5',

'6,7,8,9,0',

'1,3,5,6,7'

);

$header='用戶名,密碼,頭像,性別,手機號';

*/

function?create_csv($data,$header=null,$filename='simple.csv'){

//?如果手動設置表頭;則放在第一行

if?(!is_null($header))?{

array_unshift($data,?$header);

}

//?防止沒有添加文件后綴

$filename=str_replace('.csv',?'',?$filename).'.csv';

ob_clean();

Header(?"Content-type:??application/octet-stream?");

Header(?"Accept-Ranges:??bytes?");

Header(?"Content-Disposition:??attachment;??filename=".$filename);

foreach(?$data?as?$k?=>?$v){

//?如果是二維數組;轉成一維

if?(is_array($v))?{

$v=implode(',',?$v);

}

//?替換掉換行

$v=preg_replace('/\s*/',?'',?$v);

//?解決導出的數字會顯示成科學計數法的問題

$v=str_replace(',',?"\t,",?$v);

//?轉成gbk以兼容office亂碼的問題

echo?iconv('UTF-8','GBK',$v)."\t\r\n";

}

}

使用示例:

導入原理:

將要導入的文件先通過Thinkphp方法上傳到服務器,再根據上傳后的路徑去調用公共導入方法,傳入要導入的excel的文件路徑,如下public?function?importUser(){

$data=import_excel('./a.xls');

print_r($data);

exit;

}

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/163933.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息