phpspreadsheet使用实例_php获取html中文本框内容

phpspreadsheet使用实例_php获取html中文本框内容目录安装引用导入Excel获取日期格式安装composerrequirephpoffice/phpspreadsheet引用usePhpOffice\PhpSpreadsheet\Reader\Xlsx;usePhpOffice\PhpSpreadsheet\Reader\Xls;usePhpOffice\PhpSpreadsheet\IOFactory;usePhpOffice\PhpSpreadsheet\Cell\Coordinate;usePhpOffice\PhpS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

安装

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

public function importExcel(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('文件不存在!');
            }

            /** @var Xlsx $objRead */
            $objRead = IOFactory::createReader('Xlsx');

            if (!$objRead->canRead($file)) {
                /** @var Xls $objRead */
                $objRead = IOFactory::createReader('Xls');

                if (!$objRead->canRead($file)) {
                    throw new \Exception('只支持导入Excel文件!');
                }
            }

            /* 如果不需要获取特殊操作,则只读内容,可以大幅度提升读取Excel效率 */
            empty($options) && $objRead->setReadDataOnly(true);
            /* 建立excel对象 */
            $obj = $objRead->load($file);
            /* 获取指定的sheet表 */
            $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;
        }
    }

获取日期格式

默认获取的是日期的值(日期数字42380表示从1900-1-1开始的第42380天,即2016-1-11)跟PHP中的时间戳不一致

// 默认
$value = \PhpOffice\PhpSpreadsheet\Shared\Date::excelToTimestamp($value);

导出数据

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$sheet->setTitle('工作表一');
$sheet->setCellValue('A1', '11');
$sheet->setCellValue('B1', '22');
$writer = new Xlsx($spreadsheet);
$filename = date('YmdHis',time());
$writer->save($filename.'.xlsx');
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/192443.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 笛卡尔与心形线故事_笛卡尔的故事

    笛卡尔与心形线故事_笛卡尔的故事说明写这篇文章是某天看到这样一个公式r=a(1-cosθ),我上网搜了下,原来是笛卡尔心形线的极坐标方程,这个方程里的确有一个浪漫又悲情的爱情故事,感兴趣的朋友可以点这里看看,而至于这个故事是真是假,这并不重要。而这篇文章的目的是要用前端的方式,画出笛卡尔心形线。本来我想,这么经典的公式,网上应该已经有人实现过了的吧。我搜了搜,不得不佩服网友们,有Java实现的,有C#…

    2022年10月16日
    0
  • eclipse检出svn代码_系统出现乱码怎么办

    eclipse检出svn代码_系统出现乱码怎么办eclipse默认编码格式为GBK 将其更改为utf-8即可

    2022年10月14日
    0
  • Java自定义类加载器「建议收藏」

    Java自定义类加载器「建议收藏」一.Java类加载器的分类引导类加载器(bootstrapclassloader):用于加载Java的核心库,JDK自带,C++代码实现的 扩展类加载器(extensionsclassloader):用于加载Java扩展库,JDK自带 系统类加载器(systemclassloader):用于加载classpath路径下的类,也就是我们编写的应用程序 自定义类加载器(customclassloader):用于加载自定义的类,这个是重点二.Java自定义类加载器的使用场景依赖冲..

    2022年9月6日
    2
  • C语言之数组中你所不在意的重要知识

    C语言之数组中你所不在意的重要知识

    2021年11月15日
    43
  • 基于Spring MVC + Spring + MyBatis的【超市会员管理系统】

    基于Spring MVC + Spring + MyBatis的【超市会员管理系统】文章目录一、**语言和环境**二、**实现功能**三、**数据库设计**四、**具体要求及推荐实现步骤**五、**实现代码**MySQL数据库:JAVA代码:一、语言和环境实现语言:JAVA语言。使用:MyEclipse/Eclipse+Tomcat+MySql。使用技术:Jsp+Servlet+JavaBean或SpringMVC+Spring+Mybatis。二、实现功能随着信息化时代系统管理的普及,城市中各个每一个超市的会员管理也需要与时.

    2022年6月23日
    19
  • 情感词典构建_文本情感分析的意义

    情感词典构建_文本情感分析的意义这是4个月前做的。受当时的知识水平的限制,还没有接触到机器学习和相关理论,记录一下作为以后备查。当然,如果你想看源码和资料,点击我。从结项到现在,博主一直在使用机器学习并结合相关论文进行情感极性分析(源码点我),效果远远好于本篇代码的效果。但是,本篇的数据处理和特征选择还是很有意义的,特此记录。摘要        当今社会媒体的发展导致了金融舆论数据的爆炸式增长。因此,针对金融舆论数据的情

    2022年8月23日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号