PHPExcel插件的使用2——基本数据导入
本文归纳了phpexcel简单的数据导入,总体分为
文件直接导入数组,操作简单,消耗内存
逐行导入,操作繁杂,节约内存
全部sheet导入
选择不同sheet导入
各个常用函数的用法,都在代码中有所体现
基本步骤
1导入PHPExcel_IOFactory类文件
require './PHPExcel/IOFactory.php';
2加载文件
全部导入情况下
1)$PHPExcelObj = PHPExcel_IOFactory::load($fileName);
选择sheet情况下
2)//挑选sheet读取
//获取文件类型
$fileType = PHPExcel_IOFactory::identify($fileName);
//获取文件操作对象
$inputObj = PHPExcel_IOFactory::createReader($fileType);
//挑选需要导入的sheet,如果单个sheet可以写成字符串,多个就是数组
$sheetName = array('甘肃_42','广东_37');
//加载指定的sheet
$inputObj -> setLoadSheetsOnly($sheetName);
//加载文件
$PHPExcelObj = $inputObj->load($fileName);
3导出数据
1)全部导出
$sheetCount = $PHPExcelObj->getSheetCount();
//循环sheet导入
$input = array();
for($i=0;$i<$sheetCount;$i++){
$input[$i] = $PHPExcelObj->getSheet($i)->toArray();
}
var_dump($input);
2)逐个单元格导出
//遍历每一个sheet
foreach($PHPExcelObj->getWorksheetIterator() as $sheet){
//遍历出的sheet逐行读取,
foreach($sheet->getRowIterator() as $row){
/*
//如果不要第一行,操作就是获取行数,略过
if($row->getRowIndex() == 1){ //获取此row属于第几行
continue;
}
*/
//将遍历出的行,遍历每一个单元格,也就是列
foreach($row->getCellIterator() as $cell){
//获取每一个单元格的值
$data_cell = $cell->getValue();
echo $data_cell.' ';
}
echo "<br>";
}
echo "<hr>";
}
实例代码
<?php
header('content-type:text/html;charset=utf-8');
//本脚本所在路径
$dir = dirname(__FILE__);
//引入phpexcel导入的类文件
require './PHPExcel/IOFactory.php';
//引入需要导入的文件
$fileName = $dir.'/vr_class_sheets_perupload.xlsx';
/*
//加载文件,若是需要全部读取sheet的话直接加载
$PHPExcelObj = PHPExcel_IOFactory::load($fileName);
*/
//挑选sheet读取
//获取文件类型
$fileType = PHPExcel_IOFactory::identify($fileName);
//获取文件操作对象
$inputObj = PHPExcel_IOFactory::createReader($fileType);
//挑选需要导入的sheet,如果单个sheet可以写成字符串,多个就是数组
$sheetName = array('甘肃_42','广东_37');
//加载指定的sheet
$inputObj -> setLoadSheetsOnly($sheetName);
//加载文件
$PHPExcelObj = $inputObj->load($fileName);
/*
//-----方法1-----全部导入,操作简单,消耗内存----------
//查询excel中sheet的数量
$sheetCount = $PHPExcelObj->getSheetCount();
//循环sheet导入
$input = array();
for($i=0;$i<$sheetCount;$i++){
$input[$i] = $PHPExcelObj->getSheet($i)->toArray();
}
var_dump($input);
//-----------------------end-------------------------
*/
//------方法2----逐行导入,操作复杂,不消耗内存--------
//遍历每一个sheet
foreach($PHPExcelObj->getWorksheetIterator() as $sheet){
//遍历出的sheet逐行读取,
foreach($sheet->getRowIterator() as $row){
/*
//如果不要第一行,操作就是获取行数,略过
if($row->getRowIndex() == 1){ //获取此row属于第几行
continue;
}
*/
//将遍历出的行,遍历每一个单元格,也就是列
foreach($row->getCellIterator() as $cell){
//获取每一个单元格的值
$data_cell = $cell->getValue();
echo $data_cell.' ';
}
echo "<br>";
}
echo "<hr>";
}