iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >使用PhpSpreadsheet怎么导入导出Excel
  • 734
分享到

使用PhpSpreadsheet怎么导入导出Excel

2023-06-15 05:06:08 734人浏览 安东尼
摘要

这篇文章给大家介绍使用PHPSpreadsheet怎么导入导出excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。phpspreadsheet 引入由于PHPExcel早就停止更新维护,所以适用phpspreads

这篇文章给大家介绍使用PHPSpreadsheet怎么导入导出excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

phpspreadsheet 引入

由于PHPExcel早就停止更新维护,所以适用phpspreadsheet。不知道如何通过composer拉取项目包的同学,可以查看Composer学习一文。引入方法:

composer require phpoffice/phpspreadsheet
引入命名空间

由于本人项目中需要居中、背景、单元格格式等各种操作,所以引入较多,大家使用的时候,可以根据自己实际需要引入。

use PhpOffice\PhpSpreadsheet\Reader\Xlsx;use PhpOffice\PhpSpreadsheet\Reader\Xls;use PhpOffice\PhpSpreadsheet\ioFactory;use PhpOffice\PhpSpreadsheet\Cell\Coordinate;use PhpOffice\PhpSpreadsheet\Spreadsheet;use PhpOffice\PhpSpreadsheet\Worksheet\PageSetup;use PhpOffice\PhpSpreadsheet\Cell\DataType;use PhpOffice\PhpSpreadsheet\Style\Fill;use PhpOffice\PhpSpreadsheet\Style\Color;use PhpOffice\PhpSpreadsheet\Style\Alignment;use PhpOffice\PhpSpreadsheet\Style\Border;use PhpOffice\PhpSpreadsheet\Style\NumberFORMat;
Excel导入操作(importExcel)

除了单纯的处理Excel数据外,还可以将Excel中的合并项、公式项、单元格格式提取,提取后可根据业务需求做对应处理后存储起来,以便后续的各种操作。

 */function importExecl(string $file = '', int $sheet = 0, int $columnCnt = 0, &$options = []){    try {                $file = iconv("utf-8", "gb2312", $file);        if (empty($file) OR !file_exists($file)) {            throw new \Exception('文件不存在!');        }                $objRead = IOFactory::createReader('Xlsx');        if (!$objRead->canRead($file)) {                        $objRead = IOFactory::createReader('Xls');            if (!$objRead->canRead($file)) {                throw new \Exception('只支持导入Excel文件!');            }        }                empty($options) && $objRead->setReadDataOnly(true);                $obj = $objRead->load($file);                $currSheet = $obj->getSheet($sheet);        if (isset($options['mergeCells'])) {                        $options['mergeCells'] = $currSheet->getMergeCells();        }        if (0 == $columnCnt) {                        $columnH = $currSheet->getHighestColumn();                        $columnCnt = Coordinate::columnIndexFromString($columnH);        }                $rowCnt = $currSheet->getHighestRow();        $data   = [];                for ($_row = 1; $_row <= $rowCnt; $_row++) {            $isNull = true;            for ($_column = 1; $_column <= $columnCnt; $_column++) {                $cellName = Coordinate::stringFromColumnIndex($_column);                $cellId   = $cellName . $_row;                $cell     = $currSheet->getCell($cellId);                if (isset($options['format'])) {                                        $format = $cell->getStyle()->getNumberFormat()->getFormatCode();                                        $options['format'][$_row][$cellName] = $format;                }                if (isset($options['formula'])) {                                        $formula = $currSheet->getCell($cellId)->getValue();                    if (0 === strpos($formula, '=')) {                        $options['formula'][$cellName . $_row] = $formula;                    }                }                if (isset($format) && 'm/d/yyyy' == $format) {                                        $cell->getStyle()->getNumberFormat()->setFormatCode('yyyy/mm/dd');                }                $data[$_row][$cellName] = trim($currSheet->getCell($cellId)->getFormattedValue());                if (!empty($data[$_row][$cellName])) {                    $isNull = false;                }            }                        if ($isNull) {                unset($data[$_row]);            }        }        return $data;    } catch (\Exception $e) {        throw $e;    }}

将数据处理好后,可以通过额外配置,将导出的Excel做各种不同的配置,例如打印样式、定行、背景色、宽度等。

Excel导出操作(exportExcel)
function exportExcel(array $datas, string $fileName = '', array $options = []): bool{    try {        if (empty($datas)) {            return false;        }        set_time_limit(0);                $objspreadsheet = app(Spreadsheet::class);                $styleArray = [            'alignment' => [                'horizontal' => Alignment::HORIZONTAL_LEFT,                'vertical'   => Alignment::VERTICAL_CENTER,            ],        ];        $objSpreadsheet->getDefaultStyle()->applyFromArray($styleArray);                $activeSheet = $objSpreadsheet->setActiveSheetIndex(0);                if (isset($options['print']) && $options['print']) {                        $activeSheet->getPageSetup()->setPaperSize(PageSetup:: PAPERSIZE_A4);                        $pValue = 1 / 2.54;            $activeSheet->getPageMargins()->setTop($pValue / 2);            $activeSheet->getPageMargins()->setBottom($pValue * 2);            $activeSheet->getPageMargins()->setLeft($pValue / 2);            $activeSheet->getPageMargins()->setRight($pValue / 2);        }                foreach ($datas as $sKey => $sItem) {                        $pDataType = DataType::TYPE_STRING;                        if (isset($options['format']) && !empty($options['format'])) {                $colRow = Coordinate::coordinateFromString($sKey);                                if (isset($options['format'][$colRow[0]]) &&                    NumberFormat::FORMAT_GENERAL != $options['format'][$colRow[0]]) {                    $activeSheet->getStyle($sKey)->getNumberFormat()                        ->setFormatCode($options['format'][$colRow[0]]);                    if (false !== strpos($options['format'][$colRow[0]], '0.00') &&                        is_numeric(str_replace(['¥', ','], '', $sItem))) {                                                $pDataType = DataType::TYPE_NUMERIC;                        $sItem     = str_replace(['¥', ','], '', $sItem);                    }                } elseif (is_int($sItem)) {                    $pDataType = DataType::TYPE_NUMERIC;                }            }            $activeSheet->setCellValueExplicit($sKey, $sItem, $pDataType);                        if (false !== strstr($sKey, ":")) {                $options['mergeCells'][$sKey] = $sKey;            }        }        unset($datas);                if (isset($options['freezePane']) && !empty($options['freezePane'])) {            $activeSheet->freezePane($options['freezePane']);            unset($options['freezePane']);        }                if (isset($options['setWidth']) && !empty($options['setWidth'])) {            foreach ($options['setWidth'] as $swKey => $swItem) {                $activeSheet->getColumnDimension($swKey)->setWidth($swItem);            }            unset($options['setWidth']);        }                if (isset($options['setARGB']) && !empty($options['setARGB'])) {            foreach ($options['setARGB'] as $sItem) {                $activeSheet->getStyle($sItem)                    ->getFill()->setFillType(Fill::FILL_SOLID)                    ->getStartColor()->setARGB(Color::COLOR_YELLOW);            }            unset($options['setARGB']);        }                if (isset($options['formula']) && !empty($options['formula'])) {            foreach ($options['formula'] as $fKey => $fItem) {                $activeSheet->setCellValue($fKey, $fItem);            }            unset($options['formula']);        }                if (isset($options['mergeCells']) && !empty($options['mergeCells'])) {            $activeSheet->setMergeCells($options['mergeCells']);            unset($options['mergeCells']);        }                if (isset($options['alignCenter']) && !empty($options['alignCenter'])) {            $styleArray = [                'alignment' => [                    'horizontal' => Alignment::HORIZONTAL_CENTER,                    'vertical'   => Alignment::VERTICAL_CENTER,                ],            ];            foreach ($options['alignCenter'] as $acItem) {                $activeSheet->getStyle($acItem)->applyFromArray($styleArray);            }            unset($options['alignCenter']);        }                if (isset($options['bold']) && !empty($options['bold'])) {            foreach ($options['bold'] as $bItem) {                $activeSheet->getStyle($bItem)->getFont()->setBold(true);            }            unset($options['bold']);        }                if (isset($options['setBorder']) && $options['setBorder']) {            $border    = [                'borders' => [                    'allBorders' => [                        'borderStyle' => Border::BORDER_THIN, // 设置border样式                        'color'       => ['argb' => 'FF000000'], // 设置border颜色                    ],                ],            ];            $setBorder = 'A1:' . $activeSheet->getHighestColumn() . $activeSheet->getHighestRow();            $activeSheet->getStyle($setBorder)->applyFromArray($border);            unset($options['setBorder']);        }        $fileName = !empty($fileName) ? $fileName : (date('YmdHis') . '.xlsx');        if (!isset($options['savePath'])) {                        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');            header(                "Content-Disposition:attachment;filename=" . iconv(                    "utf-8", "GB2312//TRANSLIT", $fileName                )            );            header('Cache-Control: max-age=0');//禁止缓存            $savePath = 'php://output';        } else {            $savePath = $options['savePath'];        }        ob_clean();        ob_start();        $objWriter = IOFactory::createWriter($objSpreadsheet, 'Xlsx');        $objWriter->save($savePath);                $objSpreadsheet->disconnectWorksheets();        unset($objSpreadsheet);        ob_end_flush();        return true;    } catch (Exception $e) {        return false;    }}

关于使用PhpSpreadsheet怎么导入导出Excel就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用PhpSpreadsheet怎么导入导出Excel

本文链接: https://www.lsjlt.com/news/278037.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用PhpSpreadsheet怎么导入导出Excel
    这篇文章给大家介绍使用PhpSpreadsheet怎么导入导出Excel,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。phpspreadsheet 引入由于PHPExcel早就停止更新维护,所以适用phpspreads...
    99+
    2023-06-15
  • PHP使用PhpSpreadsheet 导出excel文件
            PhpSpreadsheet 是使用PHP语言编写的用户操作excel的类库,提供了一系列丰富的接口,可很方便的对文档属性、单元格进行操作,包括设置样式、图片、日期、函数等等。 PhpSpreadsheet用方法也很简单,示...
    99+
    2023-10-25
    excel php
  • PhpSpreadsheet 基本使用和导入 导出 模版生成Excel文件
    一. 基本使用 ...
    99+
    2023-09-08
    excel PhpSpreadsheet php
  • php使用PhpSpreadsheet导出Excel表格详解
    本文会介绍php使用PhpSpreadsheet操作Excel,供大家参考,具体内容如下: PhpSpreadsheet介绍 1、简介 PhpSpreadsheet 是一个用纯PHP编写的库,提供了一...
    99+
    2023-09-01
    php excel Spreadsheet
  • PHPOffice/PhpSpreadsheet的导入导出操作基本使用
    phpspreadsheet 引入 由于PHPExcel早就停止更新维护,所以适用phpspreadsheet。不知道如何通过composer拉取项目包的同学,可以查看Composer学习一文。引入方...
    99+
    2023-09-08
    php
  • PhpSpreadsheet 实现Excel多sheet导出
     如图 最近要做一个这样的导出,一个团长对应一个sheet,然后一键导出 使用PhpOffice\PhpSpreadsheet实现   直接上代码      public function xtexport($data_arra...
    99+
    2023-09-08
    excel php PhpSpreadsheet
  • PHPSpreadsheet导出Excel超过26列怎么办
    小编给大家分享一下PHPSpreadsheet导出Excel超过26列怎么办,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!excel 行列表示方式xexcel 的列的表示规则从 A,B,C 一直到 Z,当超过 26 个字母...
    99+
    2023-06-26
  • fastadmin+phpspreadsheet实现导出和导入
    在对应的index.html页面添加导航按钮,导出数据,直接在 添加对应方法,如果使用Ajax方法实现导出,会失败。 一、在对应的控制层,导入方法 use PhpOffice\PhpSpreadsheet\Reader\Xlsx; /...
    99+
    2023-10-06
    php fastadmin 导入 导出
  • tp6 thinkphp6 excel导入导出 PHPExcel导入导出excel
    tp6 thinkphp6 Excel导入导出,主要是使用了PHPExcel类库。 php导出excel数字太长尾数变000解决方法 导出时为什么数字字段要加“\t”。是因为,由于数字超过15位,会被显示成0或者加小数点处理。造成这种情况是...
    99+
    2023-08-31
    php 数据库 服务器
  • java使用EasyExcel导入导出excel
    目录一、准备工作 1、导包二、了解注解 1、常用注解2、@ExcelProperty注解 3、@ColumnWith注解 4、@ContentFontStyle注解 5、@Conte...
    99+
    2024-04-02
  • 怎么使用Java+element实现excel导入和导出
    本篇内容介绍了“怎么使用Java+element实现excel导入和导出”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!本项目是前端vue3,...
    99+
    2023-07-06
  • java如何使用EasyExcel导入导出excel
    这篇文章主要介绍了java如何使用EasyExcel导入导出excel,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、准备工作1、导包<!-- poi&nb...
    99+
    2023-06-15
  • 使用EasyExcel实现Excel的导入导出
    文章目录 前言一、EasyExcel是什么?二、使用步骤1.导入依赖2.编写文件上传配置3.配置表头对应实体类4.监听器编写5.控制层6.前端代码 总结 前言 在真实的开发者场景中,经常会使用excel作为数据的载体,进行...
    99+
    2023-08-17
    java
  • .NET6导入和导出EXCEL
    使用NPOI导入.xlsx遇到“EOF in header”报错,网上找好很多方法,没解决,最后换成EPPlus.Core导入。 导出默认是.xls。 NPOI操作类: usin...
    99+
    2024-04-02
  • ASP.Net MVC怎么利用NPOI导入导出Excel
    今天小编给大家分享一下ASP.Net MVC怎么利用NPOI导入导出Excel的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2023-06-30
  • SpringBoot中如何使用POI导入导出Excel
    SpringBoot中如何使用POI导入导出Excel,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1.创建Excel文档HSSFWorkbook workboo...
    99+
    2023-06-19
  • 如何使用koa2完成Excel导入导出
    这篇文章主要介绍了如何使用koa2完成Excel导入导出的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用koa2完成Excel导入导出文章都会有所收获,下面我们一起来看看吧。一、安装 node-xlsxn...
    99+
    2023-07-05
  • 详解使用koa2完成Excel导入导出
    目录一、安装 node-xlsx二、导出excel表三、导入excel表结语一、安装 node-xlsx npm i node-xlsx 二、导出excel表 首先是查询出数据库...
    99+
    2023-05-13
    koa2导入导出Excel koa2 Excel
  • C#使用NPOI实现Excel导入导出功能
    本文实例为大家分享了C#使用NPOI实现Excel导入导出的具体代码,供大家参考,具体内容如下 Excel导入 使用OpenFileDiolog控件和button结合,选择文件导入,...
    99+
    2024-04-02
  • React怎么实现导入导出Excel文件
    这篇文章主要介绍“React怎么实现导入导出Excel文件”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React怎么实现导入导出Excel文件”文章能帮助大家解决问题。表示层这里我是使用的是ant...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作