PHP操作Excel – PHPExcel 基本用法详解
- 格式:docx
- 大小:195.79 KB
- 文档页数:10
PhpSpreadsheet的简单使⽤由于PHPExcel已经不再维护,PhpSpreadsheet是PHPExcel的下⼀个版本。
PhpSpreadsheet是⼀个⽤纯PHP编写的库,并引⼊了命名空间,PSR规范等。
这⾥简单介绍下PhpSpreadsheet的导⼊导出功能。
1、安装使⽤composer安装:composer require phpoffice/phpspreadsheetGitHub下载:2、excel⽂件导出/*** excel⽂件导出*/function export(){require_once __DIR__ . '/vendor/autoload.php';$data = [['title1' => '111', 'title2' => '222'],['title1' => '111', 'title2' => '222'],['title1' => '111', 'title2' => '222']];$title = ['第⼀⾏标题', '第⼆⾏标题'];// Create new Spreadsheet object$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();$sheet = $spreadsheet->getActiveSheet();// ⽅法⼀,使⽤ setCellValueByColumnAndRow//表头//设置单元格内容foreach ($title as$key => $value) {// 单元格内容写⼊$sheet->setCellValueByColumnAndRow($key + 1, 1, $value);}$row = 2; // 从第⼆⾏开始foreach ($data as$item) {$column = 1;foreach ($item as$value) {// 单元格内容写⼊$sheet->setCellValueByColumnAndRow($column, $row, $value);$column++;}$row++;}// ⽅法⼆,使⽤ setCellValue//表头//设置单元格内容$titCol = 'A';foreach ($title as$key => $value) {// 单元格内容写⼊$sheet->setCellValue($titCol . '1', $value);$titCol++;}$row = 2; // 从第⼆⾏开始foreach ($data as$item) {$dataCol = 'A';foreach ($item as$value) {// 单元格内容写⼊$sheet->setCellValue($dataCol . $row, $value);$dataCol++;}$row++;}// Redirect output to a client’s web browser (Xlsx)header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');header('Content-Disposition: attachment;filename="01simple.xlsx"');header('Cache-Control: max-age=0');// If you're serving to IE 9, then the following may be neededheader('Cache-Control: max-age=1');// If you're serving to IE over SSL, then the following may be neededheader('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the pastheader('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified header('Cache-Control: cache, must-revalidate'); // HTTP/1.1header('Pragma: public'); // HTTP/1.0$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('php://output');exit;}结果:3、excel⽂件保存到本地/*** excel⽂件保存到本地*/function save(){require_once __DIR__ . '/vendor/autoload.php';$data = [['title1' => '111', 'title2' => '222'],['title1' => '111', 'title2' => '222'],['title1' => '111', 'title2' => '222']];$title = ['第⼀⾏标题', '第⼆⾏标题'];// Create new Spreadsheet object$spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();$sheet = $spreadsheet->getActiveSheet();//表头//设置单元格内容$titCol = 'A';foreach ($title as$key => $value) {// 单元格内容写⼊$sheet->setCellValue($titCol . '1', $value);$titCol++;}$row = 2; // 从第⼆⾏开始foreach ($data as$item) {$dataCol = 'A';foreach ($item as$value) {// 单元格内容写⼊$sheet->setCellValue($dataCol . $row, $value);$dataCol++;}$row++;}// Save$writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); $writer->save('01simple.xlsx');}4、读取excel⽂件内容/*** 读取excel⽂件内容*/function read(){require_once __DIR__ . '/vendor/autoload.php';$inputFileName = dirname(__FILE__) . '/01simple.xlsx';$spreadsheet = \PhpOffice\PhpSpreadsheet\IOFactory::load($inputFileName);// ⽅法⼆$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true); return$sheetData;}结果:可能出现的问题:1、Fatal error: Uncaught Error: Class 'PhpOffice\PhpSpreadsheet\Spreadsheet' not found 这是因为没有⾃动加载。
使用php导出excel时处理复杂表头的万能方法处理复杂表头时,使用PHP导出Excel表格的方法在使用PHP导出Excel表格时,当表头比较复杂时,可能会遇到一些困难。
然而,有一种简单而有效的方法可以处理这种情况。
首先,我们需要将表头信息保存在一个数组中。
该数组中的每个元素代表一个表头。
例如,我们可以使用以下代码定义一个包含复杂表头的数组:$tableHeaders = [['A1', 'B1', 'C1'],['A2', 'B2', 'C2'],['A3', 'B3', 'C3']];接下来,我们需要使用递归函数来合并和展开表头。
这样可以确保表头在导出Excel时正确格式化。
function mergeHeaders($headers, &$result, $startColumn = 0, $startRow = 0) {$maxRow = 1;foreach ($headers as $rowIndex => $headerRow) {foreach ($headerRow as $columnIndex => $headerCell) {$cell = $result->getActiveSheet()->getCellByColumnAndRow($columnIndex + $startColumn, $rowIndex + $startRow);$cell->setValue($headerCell);$maxRow = max($maxRow, $rowIndex + 1);}}$result->getActiveSheet()->mergeCellsByColumnAndRow($startColumn, $startRow, $startColumn + count($headers[0]) - 1, $startRow);if (count($headers) > 1) {mergeHeaders(array_slice($headers, 1), $result, $startColumn, $startRow + $maxRow);}}在上述代码中,mergeHeaders函数接受表头数组、Excel对象以及起始列和行作为参数。
phpxlswriter 是一个用于创建和修改 Excel 文件的 PHP 扩展库,通过它可以轻松地生成各种格式的 Excel 表格。
在使用 phpexcelwriter 生成 Excel 表格时,我们经常会遇到表格宽度自动调整的需求。
本文将介绍如何在使用 phpexcelwriter 时实现表格宽度的自动调整。
一、什么是 phpexcelwriter?1. PHPExcelWriter 是一个用于生成和修改 Excel 文件的 PHP 扩展库,它提供了丰富的 API 和功能,能够满足各种 Excel 处理需求。
2. 通过 PHPExcelWriter,我们可以方便地创建和修改 Excel 文件,包括设置单元格内容、样式、合并单元格、设置宽度等操作。
3. 在生成 Excel 表格时,表格宽度的自动调整是一个常见需求,能够让表格在不同显示设备上有更好的显示效果。
二、使用 phpexcelwriter 实现表格宽度的自动调整1. 设置单元格内容和样式在使用 PHPExcelWriter 生成 Excel 表格时,首先需要设置单元格的内容和样式,包括字体、颜色、对齐方式等。
这些设置可以通过PHPExcelWriter 提供的 API 来实现,具体可以参考冠方文档或示例代码。
2. 设置表头和数据在生成表格时,通常会包含表头和数据两部分。
对于表头部分,我们可以根据表格的列数和内容来设置每个单元格的宽度;对于数据部分,可以根据实际数据的长度来动态调整每个单元格的宽度。
3. 自动调整表格宽度在设置完单元格内容和样式、表头和数据后,我们可以通过PHPExcelWriter 提供的自动调整宽度的功能来实现表格宽度的自动调整。
具体可以使用以下代码来实现:```php$sheet->calculateColumnWidths();```这行代码会根据单元格内容自动调整每列的宽度,使得表格显示更加美观和规整。
4. 导出 Excel 文件当设置完表格内容和宽度后,我们可以通过 PHPExcelWriter 提供的导出功能将表格保存为 Excel 文件,以便后续使用或共享。
利⽤PHPExcel读取Excel的数据和导出数据到ExcelPHPExcel是⼀个PHP类库,⽤来帮助我们简单、⾼效实现从Excel读取Excel的数据和导出数据到Excel。
也是我们⽇常开发中,经常会遇到的使⽤场景。
⽐如有个客户信息表,要批量导出发给同事,我们就可以⽤PHPExcel来快速实现。
同样,如果我们要利⽤短信群发接⼝去群发信息,PHPExcel可以快速导⼊客户信息,避免⼈⼯录⼊信息的⿇烦。
PHPExcel使⽤教程:⾸先下载PHPExcel下载好⽂件,解压可以得到如下⽂件:PHPExcel好了,现在我们就可以⽤PHPExcel愉快的读取和制作表格了!PHPExcel DEMO1:利⽤PHPExcel读取excel信息:我们在根⽬录创建⼀个名为read.php的⽂件来读取⽂档,创建⼀个test.xlsx的⽂件,⾥⾯写的信息如下:然后在read.php写以下代码:<?phpinclude ‘./Classes/PHPExcel/IOFactory.php';$inputFileName = ‘./test.xls';date_default_timezone_set(‘PRC');// 读取excel⽂件try {$inputFileType = PHPExcel_IOFactory::identify($inputFileName);$objReader = PHPExcel_IOFactory::createReader($inputFileType);$objPHPExcel = $objReader->load($inputFileName);} catch(Exception $e) {die(‘加载⽂件发⽣错误:”‘.pathinfo($inputFileName,PATHINFO_BASENAME).'”: ‘.$e->getMessage()); }// 确定要读取的sheet,什么是sheet,看excel的右下⾓,真的不懂去百度吧$sheet = $objPHPExcel->getSheet(0);$highestRow = $sheet->getHighestRow();$highestColumn = $sheet->getHighestColumn();// 获取⼀⾏的数据for ($row = 1; $row <= $highestRow; $row++){// Read a row of data into an array$rowData = $sheet->rangeToArray(‘A' . $row . ‘:' . $highestColumn . $row, NULL, TRUE, FALSE);//这⾥得到的rowData都是⼀⾏的数据,得到数据后⾃⾏处理,我们这⾥只打出来看看效果var_dump($rowData);echo “<br>”;}得到的数据:PHPexcel读取⽂件PHPExcel DEMO2:利⽤PHPExcel导出信息到excel:<?php/** Error reporting */error_reporting(E_ALL);ini_set('display_errors', TRUE);ini_set('display_startup_errors', TRUE);date_default_timezone_set('PRC');/** 引⼊PHPExcel */require_once dirname(__FILE__) . './Classes/PHPExcel.php';// 创建Excel⽂件对象$objPHPExcel = new PHPExcel();// 设置⽂档信息,这个⽂档信息windows系统可以右键⽂件属性查看$objPHPExcel->getProperties()->setCreator("作者简庆旺")->setLastModifiedBy("最后更改者")->setTitle("⽂档标题")->setSubject("⽂档主题")->setDescription("⽂档的描述信息")->setKeywords("设置⽂档关键词")->setCategory("设置⽂档的分类");//根据excel坐标,添加数据$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A1', '你好')->setCellValue('B2', '世界')->setCellValue('C1', '你好')->setCellValue('D2', '世界');// 混杂各种符号, 编码为UTF-8$objPHPExcel->setActiveSheetIndex(0)->setCellValue('A4', 'Miscellaneous glyphs')->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');$objPHPExcel->getActiveSheet()->setCellValue('A8',"你好世界");$objPHPExcel->getActiveSheet()->getRowDimension(8)->setRowHeight(-1);$objPHPExcel->getActiveSheet()->getStyle('A8')->getAlignment()->setWrapText(true);$value = "-ValueA\n-Value B\n-Value C";$objPHPExcel->getActiveSheet()->setCellValue('A10', $value);$objPHPExcel->getActiveSheet()->getRowDimension(10)->setRowHeight(-1);$objPHPExcel->getActiveSheet()->getStyle('A10')->getAlignment()->setWrapText(true); $objPHPExcel->getActiveSheet()->getStyle('A10')->setQuotePrefix(true);// 重命名⼯作sheet$objPHPExcel->getActiveSheet()->setTitle('第⼀个sheet');// 设置第⼀个sheet为⼯作的sheet$objPHPExcel->setActiveSheetIndex(0);// 保存Excel 2007格式⽂件,保存路径为当前路径,名字为export.xlsx$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');$objWriter->save( 'export.xlsx');// 保存Excel 95格式⽂件,,保存路径为当前路径,$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');$objWriter->save('export.xls');好了,执⾏后我们可以得到export.xls和export.xlsx。
phpexcel导⼊excel处理⼤数据(实例讲解)下载完成把那个Classes 这个⽂件夹⾥⾯的⽂件跟⽂件夹拿出来就好了。
直接写到PHPExcel 这个⽂件⾥⾯的。
调⽤很简单。
引⼊phpExcel 这个类传递对应的excel ⽂件的路径就好了现在上传到指定的⽬录,然后加载上传的excel⽂件读取这⾥读取是的时候不转换数组了。
注意:是Sheet可以多个读取,php 上传值要设置⼤,上传超时要设置长。
header('Content-type: text/html; charset=utf-8'); //设置页⾯编码require_once 'phpexcel.class.php'; //引⼊⽂件require_once 'PHPExcel/IOFactory.php'; //引⼊⽂件require_once 'PHPExcel/Reader/Excel2007.php'; //引⼊⽂件$uploadfile = $_FILES['select_file']['tmp_name']; //获取上传⽂件$auid = $_SESSION['auid'];$date = date('Ymd');$rand = rand(1,9999);$_month=str_replace('-','',$date);$file_name = str_pad($auid, 4, 0, STR_PAD_LEFT).$date.str_pad($rand, 4, 0, STR_PAD_LEFT).'.xlsx';$path_file = '../data/upload/file/'.$file_name; //上传⽂件⽬录指定move_uploaded_file($uploadfile, $path_file); //⽂件上传$inputFileType = PHPExcel_IOFactory::identify($path_file);$objReader = PHPExcel_IOFactory::createReader($inputFileType);$objReader->setReadDataOnly(true);//只需要添加这个⽅法实现表格数据格式转换$objPHPExcel = $objReader->load($path_file);$sheet_read_arr = array();$sheet_read_arr["表1"] = array("B","C");$sheet_read_arr["表2"] = array("B","C");$sheet_read_arr["表3"] = array("B","C");$list_aray=array();foreach ($sheet_read_arr as $key => $val){$currentSheet = $objPHPExcel->getSheetByName($key);$row_num = $currentSheet->getHighestRow();for ($i = 6; $i <= $row_num; $i++){$cell_values = array();foreach ($val as $cell_val){$address = $cell_val . $i;// 单元格坐标$cell_values[] = $currentSheet->getCell($address)->getFormattedValue();}$list_aray[]=$cell_values;}}以上这篇phpexcel导⼊excel处理⼤数据(实例讲解)就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
PHPExcel导⼊导出常⽤⽅法总结最近公司后台管理系统需求,要⽤PHP导出excel表格数据,所以特整理了⼀下常⽤的⽅法供⼤家参考:PHPExcel扩展包地址:⼤致的分为⼏个部分:⼀、导出的⽅法及步骤1.引⼊PHPExcel⽂件:require_once("../Classes/PHPExcel.php");2.实例化PHPExcel:$ObjPHPExcel = new PHPExcel();3.获取当前⼯作sheet:$ObjPHPExcel->getACtiveSheet();4.给当前⼯作表设置名称:$ObjPHPExcel->setTitle('sheet表名称');5.添加数据,赋值:$ObjPHPExcel->setCellValue('单元格坐标','值');6.按照指定格式⽣成excel⽂件:$ObjPHPExcel->PHPExcel_IOFactory::createWriter($ObjPHPExcel,'Excal5');7.保存Excel⽂件:$ObjPHPExcel->save('保存路径及⽂件名');8.如果要将⽣成的Excel⽂件输出到浏览器:Excel5需要添加以下代码:header("Content-type:application/vnd.ms-excel");//输出Excel03⽂件header("Content-Disposition:attachment;filename=test.xls');header("Content-Control:max-age = 0");$ObjPHPExcel->save("php://output");Excel7需要添加以下代码:header("Content-type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");//输出Excel07⽂件header("Content-Disposition:attachment;filename=test.xlsx');//浏览器输出⽂件名称header("Content-Control:max-age = 0");//禁⽌浏览器缓存$ObjPHPExcel->save("php://output");⼆、Excel样式控制1.合并单元格:$ObjPHPExcel->getActiveSheet()->mergeCells('A18:E22');2.拆分单元格:$ObjPHPExcel->getActiveSheet()->unmergeCells('A18:E22');3.设置默认单元格⽔平⽅向居中:$ObjPHPExcel->getDefaultStyle()->getAlignment()->setHorizontal( PHPExcel_Style_Alignment::HORIZONTAL_CENTER);4.设置默认单元格垂直⽅向居中:$ObjPHPExcel->getDefaultStyle()->getAlignment()->setvertical( PHPExcel_Style_Alignment::VERTICAL_CENTER);5.设置默认字体样式:字体类型:$ObjPHPExcel->getDefaultStyle()->getFont()->setName('微软雅⿊');字体⼤⼩:$ObjPHPExcel->getDefaultStyle()->getFont()->setSize(14);6.设置指定字体样式:$ObjPHPExcel->getStyle('A18:E22')->getFont()->setName('微软雅⿊');字体⼤⼩:$ObjPHPExcel->getStyle('A18:E22')->getFont()->setSize(14);7.设置背景颜⾊:填充⽅式(完全填充):$ObjPHPExcel->getStyle('B2')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);填充颜⾊:$objPHPExcel->getStyle('B2')->getFill()->getStartColor()->setARGB('FFFF0000');8.设置边框:$styleArray = array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THICK,'color' => array('argb' => 'FFFF0000'),),),);$objWorksheet->getStyle('B2:G8')->applyFromArray($styleArray);调⽤getStyle()⽅法的,参数都可以通过数组的⽅式传⼊。
spreadsheetphpPhpSpreadsheet的简单使用Spreadsheet是一种电子表格软件,用于处理和分析数据。
而SpreadsheetPHP是一个基于PHP开发的库,提供了操作和生成电子表格的功能。
PhpSpreadsheet是SpreadsheetPHP的一个分支,是一个功能强大的PHP库,可以用来读取、写入和操作多种不同格式的电子表格文件。
``````安装完毕后,在PHP代码中引入库文件:```phprequire 'vendor/autoload.php';```下面是一些常见的使用示例:1.创建新文件:```phpuse PhpOffice\PhpSpreadsheet\Spreadsheet;//创建一个空的电子表格对象$spreadsheet = new Spreadsheet(;//设置活动工作表$spreadsheet->setActiveSheetIndex(0);//设置单元格的值$spreadsheet->getActiveSheet->setCellValue('A1', 'Hello World !')->setCellValue('B1', 'This is a sample spreadsheet.');// 将电子表格保存为.xlsx文件$writer = new\PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);$writer->save('hello_world.xlsx');```上述代码创建了一个新的电子表格文件,并在第一个单元格中设置了“Hello World !”,在第二个单元格中设置了“This is a sample spreadsheet.”,然后将电子表格保存为名为"hello_world.xlsx"的.xlsx文件。
ThinkPHP3.2.3使⽤PHPExcel处理Excel表格把下载的 zip 包解压⾄ ./ThinkPHP/Library/Vendor 下⼀、导⼊ Excel 数据控制器⾃定,这⾥⽤ IndexController.class.php<?phpnamespace Home\Controller;use Think\Controller;class IndexController extends Controller {// 导⼊ Excelpublic function excel() {header('Content-type: text/html; charset=utf-8');vendor('PHPExcel.Classes.PHPExcel');$file = './Data/example.xlsx';$Excel = new \PHPExcel();// 如果excel⽂件后缀名为.xls// vendor("PHPExcel.Classes.PHPExcel.Reader.Excel5");// 如果excel⽂件后缀名为.xlsxvendor("PHPExcel.Classes.PHPExcel.Reader.Excel2007");$PHPReader = new \PHPExcel_Reader_Excel2007();// 载⼊⽂件$Excel = $PHPReader -> load($file);//获取表中的第⼀个⼯作表,如果要获取第⼆个,把0改为1,依次类推$currentSheet = $Excel -> getSheet(0);//获取总列数$allColumn = $currentSheet -> getHighestColumn();//获取总⾏数$allRow = $currentSheet -> getHighestRow();//循环获取表中的数据,$currentRow表⽰当前⾏,从哪⾏开始读取数据,索引值从0开始for($currentRow = 1; $currentRow <= $allRow; $currentRow++) {//从哪列开始,A表⽰第⼀列for($currentColumn = 'A'; $currentColumn <= $allColumn; $currentColumn++) {//数据坐标$address = $currentColumn.$currentRow;//读取到的数据,保存到数组$arr中$arr[$currentRow][$currentColumn] = $currentSheet-> getCell($address)-> getValue();}}echo '<pre>';var_export($arr);}}输出:array (1 =>array ('A' => '分公司名称','B' => '姓名','C' => '⾦额',),2 =>array ('A' => 'A分公司','B' => '赵娟','C' => 1100,),3 =>array ('A' => 'B分公司','B' => '孔坚','C' => 1100,),4 =>array ('A' => 'C分公司','B' => '王华发','C' => 1300,),5 =>array ('A' => 'C分公司','B' => '赵辉','C' => 700,),6 =>array ('A' => 'B分公司','B' => '华发','C' => 1400,),7 =>array ('A' => 'A分公司','B' => '赵德国','C' => 700,),8 =>array ('A' => 'B分公司','B' => '沈芳虹','C' => 500,),9 =>array ('A' => 'C分公司','B' => '周红⽟','C' => 1100,),10 =>array ('B' => '施芬芳','C' => 800,),11 =>array ('A' => 'A分公司','B' => '蒋国建','C' => 1100,),12 =>array ('A' => 'B分公司','B' => '钱毅','C' => 1400,),13 =>array ('A' => 'B分公司','B' => '陈华惠','C' => 1200,),14 =>array ('A' => 'C分公司','B' => '曹⾹','C' => 1400,),15 =>array ('A' => 'A分公司','B' => '郑红妙','C' => 600,),16 =>array ('A' => 'A分公司','B' => '王宏仁','C' => 800,),17 =>array ('A' => 'C分公司','B' => '何丹美','C' => 1300,),)需要导⼊的 Excel ⽂件如下:⼆、导出 Excel// 导出 Excelpublic function export() {vendor('PHPExcel.Classes.PHPExcel');$Excel = new \PHPExcel();$arr = array ( 1 => array ( 'A' => '分公司名称', 'B' => '姓名', 'C' => '⾦额', ), 2 => array ( 'A' => 'A分公司', 'B' => '赵娟', 'C' => 1100, ), 3 => array ( 'A' => 'B分公司', 'B' => '孔坚', 'C' => 1100, ), 4 => array ( 'A' => 'C分公司', 'B' => '王华发', 'C' => 1 // 设置$Excel->getProperties()->setCreator("dee")->setLastModifiedBy("dee")->setTitle("数据EXCEL导出")->setSubject("数据EXCEL导出")->setDescription("数据EXCEL导出")->setKeywords("excel")->setCategory("result file");foreach($arr as $key => $val) { // 注意 key 是从 0 还是 1 开始,此处是 0// $num = $key + 1;$Excel ->setActiveSheetIndex(0)//Excel的第A列,uid是你查出数组的键值,下⾯以此类推->setCellValue('A'.$key, $val['A'])->setCellValue('B'.$key, $val['B'])->setCellValue('C'.$key, $val['C']);}$Excel->getActiveSheet()->setTitle('export');$Excel->setActiveSheetIndex(0);$name='example_export.xlsx';header('Content-Type: application/vnd.ms-excel');header('Content-Disposition: attachment; filename='.$name);header('Cache-Control: max-age=0');$ExcelWriter = \PHPExcel_IOFactory::createWriter($Excel, 'Excel2007');$ExcelWriter->save('php://output');}导出的 example_export.xlsx 如图: 右键 -- 属性:参考:。
phpexcel sheet 克隆格式标题:使用PHPExcel库进行Sheet克隆及格式复制的详细步骤在处理Excel文件时,PHPExcel是一个非常强大的工具。
它提供了一套完整的API,使得开发者能够轻松地读取、写入、操作Excel文件。
本文将详细介绍如何使用PHPExcel库进行Sheet的克隆以及格式的复制。
一、准备工作首先,我们需要在项目中引入PHPExcel库。
你可以通过Composer来安装,命令如下:composer require phpoffice/phpexcel安装完成后,我们就可以开始使用PHPExcel了。
二、加载Excel文件在进行Sheet克隆和格式复制之前,我们需要先加载要操作的Excel文件。
以下是一个简单的示例:phprequire_once 'vendor/autoload.php';use PHPExcel_IOFactory;加载Excel文件filePath = 'path_to_your_excel_file.xlsx';objPHPExcel = PHPExcel_IOFactory::load(filePath);三、Sheet克隆在PHPExcel中,我们可以使用cloneSheet方法来克隆一个Sheet。
以下是一个示例:php获取要克隆的SheetsourceSheet = objPHPExcel->getSheetByName('Sheet1');克隆SheetnewSheetIndex =objPHPExcel->cloneSheet(sourceSheet->getIndex()); newSheet = objPHPExcel->getSheet(newSheetIndex);为新Sheet设置名称newSheet->setTitle('Sheet2');在这个示例中,我们首先获取了要克隆的Sheet(假设名为'Sheet1'),然后使用cloneSheet方法进行克隆,并获取新Sheet的索引。
欢迎登录清源教育官网www.tsingyuan.cn 查看更多视频教程 PHP操作Excel – PHPExcel 基本用法详解
1.header [php] header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=sample.xls"); header("Pragma:no-cache"); header("Expires:0"); 2.PHPExcel http://www.codeplex.com/PHPExcel http://www.phpexcel.net 开发包Tests目录有详细使用实例 支持中文,注意文件编码 文件保存为utf-8
写excel [php] //Include class require_once('Classes/PHPExcel.php'); require_once('Classes/PHPExcel/Writer/Excel2007.php'); $objPHPExcel = new PHPExcel();
//Set properties 设置文件属性 $objPHPExcel->getProperties()->setCreator("Maarten Balliauw"); $objPHPExcel->getProperties()->setLastModifiedBy("Maarten Balliauw"); $objPHPExcel->getProperties()->setTitle("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setSubject("Office 2007 XLSX Test Document"); $objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX, generated using PHP classes."); $objPHPExcel->getProperties()->setKeywords("office 2007 openxml php"); $objPHPExcel->getProperties()->setCategory("Test result file");
//Add some data 添加数据 $objPHPExcel->setActiveSheetIndex(0); 欢迎登录清源教育官网www.tsingyuan.cn 查看更多视频教程 $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Hello');//可以指定位置 $objPHPExcel->getActiveSheet()->setCellValue('A2', true); $objPHPExcel->getActiveSheet()->setCellValue('A3', false); $objPHPExcel->getActiveSheet()->setCellValue('B2', 'world!'); $objPHPExcel->getActiveSheet()->setCellValue('B3', 2); $objPHPExcel->getActiveSheet()->setCellValue('C1', 'Hello'); $objPHPExcel->getActiveSheet()->setCellValue('D2', 'world!');
//循环 for($i = 1;$i<200;$i++) { $objPHPExcel->getActiveSheet()->setCellValue('A' . $i, $i); $objPHPExcel->getActiveSheet()->setCellValue('B' . $i, 'Test value'); }
//日期格式化 $objPHPExcel->getActiveSheet()->setCellValue('D1', time()); $objPHPExcel->getActiveSheet()->getStyle('D1')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDDSLASH);
//Add comment 添加注释 $objPHPExcel->getActiveSheet()->getComment('E11')->setAuthor('PHPExcel'); $objCommentRichText = $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('PHPExcel:'); $objCommentRichText->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun("\r\n"); $objPHPExcel->getActiveSheet()->getComment('E11')->getText()->createTextRun('Total amount on the current invoice, excluding VAT.');
//Add rich-text string 添加文字 可设置样式 $objRichText = new PHPExcel_RichText( $objPHPExcel->getActiveSheet()->getCell('A18') ); $objRichText->createText('This invoice is '); $objPayable = $objRichText->createTextRun('payable within thirty days after the end of the 欢迎登录清源教育官网www.tsingyuan.cn 查看更多视频教程 month'); $objPayable->getFont()->setBold(true); $objPayable->getFont()->setItalic(true); $objPayable->getFont()->setColor( new PHPExcel_Style_Color( PHPExcel_Style_Color::COLOR_DARKGREEN ) ); $objRichText->createText(', unless specified otherwise on the invoice.');
//Merge cells 合并分离单元格 $objPHPExcel->getActiveSheet()->mergeCells('A18:E22'); $objPHPExcel->getActiveSheet()->unmergeCells('A18:E22');
//Protect cells 保护单元格 $objPHPExcel->getActiveSheet()->getProtection()->setSheet(true);//Needs to be set to true in order to enable any worksheet protection! $objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');
//Set cell number formats 数字格式化 $objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE); $objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' );
//Set column widths 设置列宽度 $objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true); $objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
//Set fonts 设置字体 $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara'); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true); $objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);