使用php的时候一◣定会遇到◢表格导入□□导出的功□□□□能吧,这里简单◆来解释一□□□□下PHP中PHPExcel的使用如♦何来导入◇导出数据。
首先要去PHPExcel官网下载

这是我项目中的phpexcel类库
先说一下□□□导入 主要是要□□□通过文件丨上传,然后获取·到这个上△传的文件 然后可以□□□□用PHPExcel的方法去□□□□读取文件□□□□的内容 并返回一◣个数组,然后拼装♦你要的数□□□据进行数□□据库操作
这里我用的封装好的方法去读取的excel文件的数据
$filename 文件的地址 需要一个相对路径
$begin 从第几行□□□□开始读取 (这里一般□□□□是第二行 第一行基□□□□本是内容♦的标题或□□□者描述)
$allColumn 数据最后一列的字母 比如第G列是最后的数据列 就传G

封装方法:
function excelImport($filename, $begin,$allColumn) {
Vendor('PHPExcel.PHPExcel');
//建立reader对象
$PHPReader = new PHPExcel_Reader_Excel2007();
if (!$PHPReader->canRead($filename)) {
$PHPReader = new PHPExcel_Reader_Excel5();
if (!$PHPReader->canRead($filename)) {
return array();
}
}
//建立excel对象,此时你即□□□□可以通过excel对象读取□□文件,也可以通□□过它写入□□□文件
$PHPExcel = $PHPReader->load($filename);
/* * 读取excel文件中的第一个工作表 */
$currentSheet = $PHPExcel->getSheet(0);
/* * 取得最大的列号 */
// $allColumn = $currentSheet->getHighestColumn();
/* * 取得一共有多少行 */
$allRow = $currentSheet->getHighestRow();
$returnCell = '';
//循环读取每个单元格的内容。注意行从1开始,列从A开始
for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
$addr = $colIndex . $rowIndex;
$cell = $currentSheet->getCell($addr)->getValue();
if ($cell instanceof PHPExcel_RichText) {
//富文本转换字符串
$returnCell[$rowIndex][$colIndex] = $cell->__toString();
} else {
$returnCell[$rowIndex][$colIndex] = $cell;
}
}
}
return $returnCell;
}

读取后会输出一个数组,如下


获取到数□□据后使用□□循环取出□□□□里面的数□□据 完成后清□□空了一下□□□□数据数组
这是简单两列数据的导入 .
再来说一下导出
我也是使用的PHPExcel
这里是先创建一个表格第一行的标题数组和导出的文件名称

一个一维数组键名要对应 表格列的字母

下面是要拼装导出数据
这是一个二维数组 需要 每行对应响应的列的字母

这里给了一个key值来确定数据是从第几行开始写入的
因为有标题的存在所以是从第二行开始如正式数据,

使用下面□□□这个封装◈的导出方□□法进行导□□□出 ,会自动使◉用浏览器□□□□下载你要□□□□导出的表□□格
这里也封装了一个导出的方法
/**
* 导出成Excel文件
* @param type $filename 文件名
* @param type $data_title 头部字段
* @param type $data_content 内容
* @param type $Sheet1
* @param type $save_to_file 是否保存成文件,true保存
* @param type $save_path 文件保存路径
*/
function excelExport($filename, $data_title, $data_content, $Sheet1 = "Sheet1", $save_to_file = false, $save_path = './Static/File/') {
Vendor('PHPExcel.PHPExcel');
//PHPExcel支持读模□□□版 所以我还□□□是比较喜□□□欢先做好□□□□一个Excel的模版 比较好,不然要写□□□□很多代码 模版我放□□□在根目录·了
//创建一个对象
$objPHPExcel = new PHPExcel();
$objPHPExcel->getProperties()->setCreator("qiandai");
//获取当前活动的表
$objActSheet = $objPHPExcel->setActiveSheetIndex(0);
$objActSheet->setTitle($Sheet1); //工作表标签
foreach ($data_title as $data_title_key => $data_title_value) {//写入文件表头内容
$objActSheet->setCellValue($data_title_key.'1', $data_title_value);
$objPHPExcel->getActiveSheet()->getColumnDimension($data_title_key)->setWidth(30);//设置列的宽度
}
//现在就开始填充数据了 (从数据库中) $data_content
foreach ($data_content as $data_content_value) {//写入 文件内容
foreach ($data_content_value as $data_content_key => $data_content_value2) {
$objActSheet->setCellValue($data_content_key, $data_content_value2);
}
}
//导出
header('Content-Type: application/vnd.ms-excel;charset=utf-8');
header('Content-Disposition: attachment;filename="' . $filename . '.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
if ($save_to_file) {
$objWriter->save($save_path . $filename);
} else {
$objWriter->save('php://output');
exit;
}
}
如果有什♦么方法不□□□□清楚或者☆想修改表◈格的其他□□□设置的可△以去查看□□□□手册进行□□□□添加。
导入导出□□□□主要还是□□明白封装丨的方法和□□创建对应□□的数组,希望能对◢刚接触到□□□表格导入□□导出无法✦入手的人□□□有所帮助。