闽公网安备 35020302035485号
最近在帮用户做一个二手房租赁管理的财务系统,里面需要涉及到大量的财务统计报表需要导出Excel。对于PHP初学者的我来说,PHP导出Excel的功能还是第一次接触。网上找PHP导出Excel的代码研究了半天,终于捣鼓出来了。o(╯□╰)o,我的PHP导出Excel的功能代码如下:
PHP导出Excel代码:
<?php
/**
* Created by PhpStorm.
* 堆代码 duidaima.com
* Time: 11:32
*/
//include_once "./Classes/PHPExcel.php";
class CsvReader {
private $csv_file;
private $spl_object = null;
private $error;
public function __construct($csv_file = '') {
/*判断变量是否存在 && 文件是否存在*/
if($csv_file && file_exists($csv_file)) {
$this->csv_file = $csv_file;
}
}
public function set_csv_file($csv_file) {
if(!$csv_file || !file_exists($csv_file)) {
$this->error = 'File invalid';
return false;
}
$this->csv_file = $csv_file;
$this->spl_object = null;
}
public function get_csv_file() {
return $this->csv_file;
}
/*判断文件是否存在 是否可读*/
private function _file_valid($file = '') {
$file = $file ? $file : $this->csv_file;
if(!$file || !file_exists($file)) {
return false;
}
if(!is_readable($file)) {
return false;
}
return true;
}
private function _open_file() {
if(!$this->_file_valid()) {
$this->error = 'File invalid';
return false;
}
if($this->spl_object == null) {
$this->spl_object = new SplFileObject($this->csv_file, 'rb');
}
return true;
}
public function get_data($length = 0, $start = 0) {
if(!$this->_open_file()) {
return false;
}
$length = $length ? $length : $this->get_lines();
$start = $start - 1;
$start = ($start < 0) ? 0 : $start;
$data = array();
$this->spl_object->seek($start);
while ($length-- && !$this->spl_object->eof()) {
$data[] = $this->spl_object->fgetcsv();
$this->spl_object->next();
}
return $data;
}
public function get_lines() {
if(!$this->_open_file()) {
return false;
}
$this->spl_object->seek(filesize($this->csv_file));
return $this->spl_object->key();
}
public function get_error() {
return $this->error;
}
}//获取文件
$csv_file="./demo.csv";
$csvreader = new CsvReader($csv_file);
//获得csv文件有多少行
$line_number = $csvreader->get_lines();
//获得csv文件的数据
$data = $csvreader->get_data($line_number);//链接数据库
$link=mysqli_connect('127.0.0.1','root','','husky');
$facedata=[];
foreach ($data as $k=>$da){
if($k>0){
//产品地址
$facedata['ids']=$da[0];
$facedata['title']=$da[6];
$facedata['description']=$da[7];
$facedata['ava']="in stock";
$facedata['condition']="new";
$facedata['shipping_weight']=$da[9];
$facedata['price']=$da[14]." USD";
var_dump($da);
$string=$da[46];
$faceda=explode(',',$string);
foreach ($faceda as $k1=>$v1){
$faceda[$k1]=explode('=',$v1);
}
$facedata['color']=$faceda[2][1];
$facedata['google_product_category']=str_replace("/",">",$da[4]);
$facedata['material']=$faceda[1][1];
var_dump($faceda);
$facedata['link']="https://www.duidaima.com/".$da[17].".html";
$facedata['image_link']="https://www.duidaima.com/".$da[21];
$facedata['brand']=$faceda[4][1];
$str='';
foreach ($facedata as $fk=>$face){
$str .= '`'.$fk.'`' .'='. '"'.$face.'"' .',';
}
$str=substr($str, 0, -1);
// $des="http://www.duidaima.com/pub/media/catalog/product".$da[21];
$sql='insert into faceboolproduct set '.$str;
$res=mysqli_query($link,$sql);
var_dump($res);
echo "<br />";
}}
总结:
以上就是我基于PHP语言的导出Excel功能代码,对于很多老手来说导出Excel这种功能应该是手到擒来,但是对于我这种PHP菜鸟来说,第一次接触到这种需求,还是需要研究一下才能做出来。以后还是要多多学习啊。