PHPExcel库的基本使用

来源:互联网 发布:linux 获取项目路径 编辑:程序博客网 时间:2024/06/05 15:28

简单记录下,PHPExcel读excel文件内容到数据库,导出数据库到excel文件。

1.把数据库中数据读出到excel表中,支持生成到当前目录下,和通过浏览器下载。具体看如下代码

<?php
/**
 *文件编码需为UTF-8,否则会存在生成的文档内容乱码
 */


 /** 引入需要的类库*/
require_once 'Classes\PHPExcel.php'; 
require_once 'Classes\PHPExcel\IOFactory.php';
require_once 'Classes\PHPExcel\Reader\Excel5.php'; 
require_once 'Classes\PHPExcel\Reader\Excel2007.php'; 


$objPHPExcel = new PHPExcel();


//设置生成的Excel文件名
$date = date("Y_m_d",time());
$fileName = "{$date}.xlsx";


//测试数据,正常会从数据库中获取
$data = array(
  0 => array('id'=>2012,'name'=>'胡','age' => 25)
);


//Excel文件的说明信息
$objPHPExcel->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");


//设置表格内容,具体内容根据A1这种具体位置来确定  
$objPHPExcel->setActiveSheetIndex(0)
            ->setCellValue('A1','编号')
            ->setCellValue('B1','姓名')
            ->setCellValue('C1','年龄');


//适合把表中数据导入Excel文件中,多数据循环设置值
foreach($data as $key=> $value) {
$key+=2;
$objPHPExcel->setActiveSheetIndex(0)
           ->setCellValue('A'.$key,$value['id'])
           ->setCellValue('B'.$key,$value['name'])
           ->setCellValue('C'.$key,$value['age']);
}


// 重命名表
// $objPHPExcel->getActiveSheet()->setTitle('Simple');


// 设置活动单指数到第一个表,所以Excel打开这是第一个表
$objPHPExcel->setActiveSheetIndex(0);


// 将输出重定向到一个客户端web浏览器(Excel2007)
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
header('Content-Disposition: attachment;filename='.$fileName);
header('Cache-Control: max-age=0');


//要是输出为Excel2007,使用 Excel2007对应的类,生成的文件名为.xlsx.如果是Excel2005,使用Excel5,对应生成.xls文件
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
// $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');


//支持浏览器下载生成的文档
$objWriter->save('php://output');


2.把excel文件中内容读出,存入数据库

<?php
 /** 引入需要的类库*/
require_once 'Classes\phpexcel.php'; 
require_once 'Classes\PHPExcel\IOFactory.php';
require_once 'Classes\PHPExcel\Reader\Excel5.php'; 


//数据库连接
 $link = mysqli_connect('localhost','root','','test');
 if(!$link){
echo "数据库连接失败"; 
exit;
 }
 
//读excel表中内容生成对应数组
$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load('1.xlsx'); 


//读取csv文档内容
// $objReader = new PHPExcel_Reader_CSV();
// $objPHPExcel = $objReader->load('D.csv'); 


$sheet = $objPHPExcel->getSheet(0); 
$highestRow = $sheet->getHighestRow(); // 取得总行数 
$highestColumn = $sheet->getHighestColumn(); // 取得总列数


//获取文档中的值,存入数组中
$arr_result=array();
for($j=1;$j<=$highestRow;$j++)
 { 
    for($k='A';$k<= $highestColumn;$k++)
    { 
     //读取单元格
     array_push($arr_result,($objPHPExcel->getActiveSheet()->getCell("$k$j")->getValue()));
    }
 }
 
//数组转换成字符串,方便直接插入数据库中
$str = '';
 foreach($arr_result as $item){
$strs.=$item.',';



for($j=2;$j<=$highestRow;$j++)
{
$a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();//获取A列的值
$b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();//获取B列的值
$c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();
$d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();
// $e = $objPHPExcel->getActiveSheet()->getCell("E".$j)->getValue();
// $f = $objPHPExcel->getActiveSheet()->getCell("F".$j)->getValue();
$sql = "INSERT INTO `test`(`Id`, `price`, `stock`, `num`) VALUES ('".$a."','".$b."','".$c."','".$d."')";


// mysqli_query($link,$sql);
// mysqli_query($link,'set names utf-8');
if(mysqli_query($link,$sql)){
echo 1;
}
else{
echo "导入数据失败";
echo mysqli_errno($link);
}


}



具体代码项目可以参照git上面项目:https://github.com/hufeng903/phpexcel。

0 0