本文共 3750 字,大约阅读时间需要 12 分钟。
PHPExcel类是PHP中一个强大的Excel表格处理插件,能够方便地实现Excel文件的导入与导出。本文将详细介绍PHPExcel类在PHP环境下的应用方法。
在实际应用中,需要确保PHPExcel类能够正确加载。以下是常见的环境设置方法:
// 在应用的配置文件中,确保以下路径正确set_path('.'. PATH_SEPARATOR . Yii::app()->basePath.'/lib/PHPExcel' . PATH_SEPARATOR . get_include_path());// 或直接使用 Yii::import() 导入类文件require_once "PHPExcel.php";require_once 'PHPExcel/IOFactory.php';require_once 'PHPExcel/Writer/Excel5.php'; 假设我们有一个数据数组 $data,需要将其导入到Excel中:
// 创建一个新的Excel文件$resultPHPExcel = new PHPExcel();// 设置默认字体和数值格式$resultPHPExcel->getActiveSheet()->setDefaultFont('Arial');$resultPHPExcel->getActiveSheet()->setDefaultNumberFormat('General');// 填充数据$i = 2;foreach ($data as $item) { $resultPHPExcel->getActiveSheet()->setCellValue('A' . $i, $item['quarter']); $resultPHPExcel->getActiveSheet()->setCellValue('B' . $i, $item['name']); $resultPHPExcel->getActiveSheet()->setCellValue('C' . $i, $item['number']); $i++;} 在完成数据填充后,设置导出选项:
// 设置导出文件名$outputFileName = 'result.xlsx';// 创建导出对象$xlsWriter = new PHPExcel_Writer_Excel5($resultPHPExcel);// 设置输出内容类型header("Content-Type: application/force-download");header("Content-Type: application/octet-stream");header("Content-Type: application/download");header('Content-Disposition: inline; filename="' . $outputFileName . '"');header("Content-Transfer-Encoding: binary");header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");header("Cache-Control: must-revalidate, post-check=0, pre-check=0");header("Pragma: no-cache");// 导出文件$xlsWriter->save("php://output"); 首先,需要上传Excel文件到服务器:
if ($_POST['leadExcel'] == "true") { $filename = $_FILES['inputExcel']['name']; $tmp_name = $_FILES['inputExcel']['tmp_name']; $msg = uploadFile($filename, $tmp_name); echo $msg;} 在uploadFile函数中,进行文件的基本处理:
function uploadFile($file, $filetempname) { // 设置文件存储路径 $filePath = 'uploads/'; require_once '../PHPExcel/PHPExcel.php'; require_once '../PHPExcel/PHPExcel/IOFactory.php'; require_once '../PHPExcel/PHPExcel/Reader/Excel5.php'; // 生成新的文件名(避免重复) $time = date("y-m-d-H-i-s"); $extend = strrchr($file, '.'); $name = $time . $extend; $uploadfile = $filePath . $name; // 移动文件 $result = move_uploaded_file($filetempname, $uploadfile); if ($result) { // 进行数据导入 require_once 'conn.php'; $objReader = PHPExcel_IOFactory::createReader('Excel5'); $objPHPExcel = $objReader->load($uploadfile); // 获取工作表 $sheet = $objPHPExcel->getActiveSheet(); $highestRow = $sheet->getHighestRow(); $highestColumn = $sheet->getHighestColumn(); // 数据处理 $highestColumnIndex = PHPExcel_Cell::columnIndexFromString($highestColumn); $strs = array(); for ($row = 1; $row <= $highestRow; $row++) { for ($col = 0; $col < $highestColumnIndex; $col++) { $strs[$col] = $sheet->getCellByColumnAndRow($col, $row)->getValue(); } $sql = "INSERT INTO `te` (`1`, `2`, `3`, `4`, `5`) VALUES ('{$strs[0]}', '{$strs[1]}', '{$strs[2]}', '{$strs[3]}', '{$strs[4]}')"; if (!mysql_query($sql)) { return false; echo 'sql语句有误'; } } unlink($uploadfile); return '导入成功!'; } else { return '导入失败!'; }} 在前端,通过以下表单实现文件上传:
通过以上方法,可以实现对Excel文件的完整导入与导出,提升数据处理的效率和准确性。
转载地址:http://xytfk.baihongyu.com/