PHPExcel导入导出操作总结

PHPExcel 是用来操作Office Excel 文档的一个PHP类库,它基于微软的OpenXML标准和PHP语言。可以使用它来读取、写入不同格式的电子表格,如 Excel (BIFF) .xls, Excel 2007 (OfficeOpenXML) .xlsx, CSV, Libre/OpenOffice Calc .ods, Gnumeric, PDF, HTML等等。该项目已多年未维护,不得再使用。所有用户都必须迁移到其直接后继 PhpSpreadsheet 或其他替代方案。

目录

一、安装

二、导入操作

1、实例化读取类

2、读取文件

3、获取工作表

4、获取总行数

5、获取单元格的值

6、时间格式转换

三、导出操作

1、实例化Excel类

2、设置excel的属性

2、选择工作表

3、单元格操作

4、导出Excel


一、安装

使用composer将 PhpSpreadsheet 安装到您的项目中:

composer require phpoffice/phpspreadsheet

如果您在开发机器上构建安装,而该开发机器与将要部署它的服务器的 PHP 版本不同,或者如果您的 PHP CLI 版本与运行时不同,例如 php-fpm Apache的 mod_php,那么您可能需要在安装之前将以下内容添加到您的composer.json

{
    "require": {
        "phpoffice/phpspreadsheet": "^1.23"
    },
    "config": {
        "platform": {
            "php": "7.3"
        }
    }
}

然后运行

composer install

以确保检索到正确的依赖项以匹配您的部署环境

二、导入操作

1、实例化读取类

//读取文件是xlsx格式
$reader = \PHPExcel_IOFactory::createReader('Excel2007');
//读取文件是xls格式
$reader = \PHPExcel_IOFactory::createReader('Excel5');

2、读取文件

$file = 'excelfile.xlsx';
//获取导入类型,判断使用Excel2007或Excel5
$file_type = \PHPExcel_IOFactory::identify($file);
//读取要导入的文件
$excel = $reader->load($file , $encode = 'utf-8');

3、获取工作表

//获取总工作表数量
$sheetCount = $excel->getSheetCount();
//获取第index个工作表
$sheet = $excel->getSheet(index);

4、获取总行数

$total_rows_num = $sheet->getHighestRow();

5、获取单元格的值

//获取所有内容并转化为数组
$data = $sheet->toArray();
//获取单元格A1的值
$value = $sheet->getCell("A1")->getValue();

6、时间格式转换

//将A2单元格的时间格式转化为 Unix 时间戳
$time = \PHPExcel_Shared_Date::ExcelToPHP($sheet->getCell("A2")->getValue());

三、导出操作

1、实例化Excel类

$objExcel = new \PHPExcel();

2、设置excel的属性

//创建人
$objExcel->getProperties()->setCreator("crater");
//最后修改人
$objExcel->getProperties()->setLastModifiedBy("modify");
//标题
$objExcel->getProperties()->settitle("title");
//题目
$objExcel->getProperties()->setSubject("topic");
//描述
$objExcel->getProperties()->setDescription("describe");
//关键字
$objExcel->getProperties()->setKeywords("keywords");
//种类
$objExcel->getProperties()->setCategory("type");

2、选择工作表

//选择当前工作表
$objActSheet = $objExcel->getActiveSheet(); 
//设置第index个工作表
$objActSheet = $objExcel->setActiveSheetIndex('index');
//移除第index个工作表
$objExcel->removeSheetByIndex('index');
//设置单元格标题
$objActSheet->setTitle('Sheet Title');

3、单元格操作

//合并单元格,A1到E1
$objActSheet->mergeCells('A1:E1');
//设置第2行的高度为50
$objActSheet->getRowDimension('2')->setRowHeight(50);
//设置第A列的宽度为100
$objActSheet->getColumnDimension('A')->setWidth(100);
//设置单元格A1为纯文本
$objActSheet->getStyle('A1')->getNumberFormat()->setFormatCode(\PHPExcel_Style_NumberFormat::FORMAT_TEXT); //日期参数 FORMAT_DATE_DATETIME、数值参数 FORMAT_NUMBER(不能超过15位数)
//设置A1到E1合并后的单元格自动换行
$objActSheet->getStyle('A1:E1')->getAlignment()->setWrapText(true);
//设置单元格A1字体和边框样式
$styleArray = [
    'font' => [
        'color' => array('rgb' => 'FF0000'), //设置字体为红色 加粗 11
        'bold'  => true,
        'size'  => 11,
    ],
    'borders' => [ //设置边框样式
        'top'     => [
            'style' => \PHPExcel_Style_Border::BORDER_THIN,

        ],
        'bottom'     => array(
            'style' => \PHPExcel_Style_Border::BORDER_NONE,
        ),
    ],
];
$objActSheet->getStyle('A1')->applyFromArray($styleArray);
//设置所有单元格默认样式
$objActSheet->getDefaultStyle()->getFont()->setName('微软雅黑'); //字体类型
$objActSheet->getDefaultStyle()->getFont()->setSize(14); //字体大小
$objActSheet->getDefaultStyle()->getFont()->setARGB('FFFF0000'); //字体颜色
$objActSheet->getDefaultStyle()->getFont()->getFont()->setBold(true); //字体加粗
//设置单元格A1填充颜色
$objActSheet->getStyle('A1')->getFill()->getStartColor()->setARGB('FFFF0000'); //填充颜色,红色也可以用 \PHPExcel_Style_Color::COLOR_RED
//设置A1到K1单元格垂直居中
$objActSheet->getStyle('A1:K1')->getAlignment()->setVertical(\PHPExcel_Style_Alignment::VERTICAL_CENTER); //参数 VERTICAL_TOP 顶端对齐,以此类推
//设置A1到K1单元格水平居中
$objActSheet->getStyle('A1:K1')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);  //参数 HORIZONTAL_LEFT 左对齐,以此类推
//填充内容
$objActSheet->setCellValue('A1', 'content');
//从A列第三行循环填充内容
for($i=0; $i<=100; $i++){
    $i += 3;
    $objActSheet->setCellValue('A'.$i, 'content');
}
//从A列第三行设置单元格限制内容,限制为 类型1和类型2
for($i=3; $i<=10002; $i++){

    $objValidation = $objActSheet->getCell('A'.$i)->getDataValidation();
    $objValidation->setType(\PHPExcel_Cell_DataValidation::TYPE_LIST) //介于数字1到10之间参数用 TYPE_WHOLE,设置为 setFormula1(1)  -  setFormula1(10)
    ->setErrorStyle(\PHPExcel_Cell_DataValidation::STYLE_INFORMATION)
    ->setAllowBlank(false)
    ->setShowInputMessage(true)
    ->setShowErrorMessage(true)
    ->setShowDropDown(true)
    ->setErrorTitle('Input error') //错误标题
    ->setError('Input content is not allowed!') //错误内容
    ->setPromptTitle('Allowed input')  //提示标题
    ->setPrompt('Only "类型1" or "类型2" is allowed.') //提示内容
    ->setFormula1('"类型1,类型2"'); //允许输入内容
}
//复制单元格A3限制内容
$objActSheet->getCell('A3')->setDataValidation($objValidation);

4、导出Excel

ob_end_clean();
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header('Content-Disposition:inline;filename="' . $outfile . '"');
header("Content-Transfer-Encoding: binary");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
$objWriter = \PHPExcel_IOFactory::createWriter($objExcel, 'Excel2007');
$objWriter->save('php://output');
exit; 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
使用Laravel框架实现PHPExcel导入导出功能非常简单。首先,我们需要安装PHPExcel库。可以通过Composer来安装,只需在终端中运行以下命令: ``` composer require phpoffice/phpexcel ``` 安装完成之后,在Laravel的控制器中,我们可以使用PHPExcel的相关类来实现导入导出功能。 要导出Excel文件,我们可以先创建一个PHPExcel对象,并设置一些基本的属性,例如文件名、作者等。然后,我们可以创建一个工作表,并设置一些表头信息。接下来,我们可以遍历需要导出的数据,将数据逐行写入工作表中。最后,我们可以使用PHPExcelWriter将工作表保存为Excel文件。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ExportController extends Controller { public function exportData() { $objPHPExcel = new PHPExcel(); // 设置文件属性 $objPHPExcel->getProperties() ->setCreator("Your Name") ->setLastModifiedBy("Your Name") ->setTitle("Export Data") ->setSubject("Export Data") ->setDescription("Export Data"); $objPHPExcel->setActiveSheetIndex(0); $sheet = $objPHPExcel->getActiveSheet(); // 设置表头信息 $sheet->setCellValue('A1', 'Column 1') ->setCellValue('B1', 'Column 2') ->setCellValue('C1', 'Column 3'); // 导出数据 $data = [ ['Data 1', 'Data 2', 'Data 3'], ['Data 4', 'Data 5', 'Data 6'], ]; foreach ($data as $key => $value) { $row = $key + 2; $sheet->setCellValue('A' . $row, $value[0]) ->setCellValue('B' . $row, $value[1]) ->setCellValue('C' . $row, $value[2]); } // 导出Excel $objPHPExcel->getActiveSheet()->setTitle('Sheet 1'); $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); $objWriter->save('export.xlsx'); } } ``` 要导入Excel文件,我们可以先创建一个PHPExcel对象,并使用`load`方法加载Excel文件。然后,我们可以通过`getActiveSheet`方法获取工作表,并使用`getCell`方法获取单元格的值。接下来,我们可以遍历工作表的行和列,将数据存储到数组中。最后,我们可以对获取到的数据进行相关的处理。下面是一个示例代码: ```php use PHPExcel; use PHPExcel_IOFactory; class ImportController extends Controller { public function importData() { $objPHPExcel = PHPExcel_IOFactory::load('import.xlsx'); $sheet = $objPHPExcel->getActiveSheet(); $data = []; foreach ($sheet->getRowIterator() as $row) { $rowData = []; foreach ($row->getCellIterator() as $cell) { $rowData[] = $cell->getValue(); } $data[] = $rowData; } // 对导入的数据进行处理 // ... return $data; } } ``` 通过以上的代码,我们就可以轻松地在Laravel框架中实现PHPExcel导入导出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_68949064

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值