• phpoffice

    2020-06-16 15:57:51
    PhpSpreadsheet 是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel...使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作。 ...PHPExcel 几乎...

    PhpSpreadsheet

    是一个纯PHP编写的组件库,它使用现代PHP写法,代码质量和性能比PHPExcel高不少,完全可以替代PHPExcel(PHPExcel已不再维护)。使用PhpSpreadsheet可以轻松读取和写入Excel文档,支持Excel的所有操作。

    官网:https://phpspreadsheet.readthedocs.io/en/stable/

    PHPExcel

    几乎支持所有常用Excel的功能的PHPExcel,格式支持.XLS或者这.XLSX。功能支持包括表格的任何元数据、添加工作表/行/列,合并单元格,操作公式等等,并且完美兼容MS Office中的Excel。支持打印哦,亲!

    官方地址:http://phpexcel.codeplex.com/

    github:https://github.com/PHPOffice/PHPExcel.git

    PHPWord

    尽管目前只是测试版但是功能还是很强劲!完美兼容MF Word并且支持打开.doc or.docx。可以插入文本,文本符,分页,页眉/页脚,表格,列表中的元素,超链接等等。

    地址:http://phpword.codeplex.com/

    下载:http://phpword.codeplex.com/releases/view/49543

    PHPPowerpoint

    可以演示文档、添加幻灯片,支持图像、媒体的加入,已经作者的信息。完美兼容MS Office。

    地址:http://phppowerpoint.codeplex.com/

    展开全文
  • PHPOffice 导入

    2019-10-07 12:51:10
    1.因为Phpexecel已经停止维护,所以要使用心得phpoffice; 2.注意引入  usePhpOffice\PhpSpreadsheet\Helper\Sample; usePhpOffice\PhpSpreadsheet\IOFactory; usePhpOffice\PhpSpreadsheet\Spreadsheet; ...

    1.因为Phpexecel已经停止维护,所以要使用心得phpoffice;

    2.注意引入    

    use PhpOffice\PhpSpreadsheet\Helper\Sample;
    use PhpOffice\PhpSpreadsheet\IOFactory;
    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
    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;

    3.上代码

    /**
     * 使用PHPoffice导入
     *
     * @param string $file      文件地址
     * @param int    $sheet     工作表sheet(传0则获取第一个sheet)
     * @param int    $columnCnt 列数(传0则自动获取最大列)
     * @param array  $options   操作选项
     *                          array mergeCells 合并单元格数组
     *                          array formula    公式数组
     *                          array format     单元格格式数组
     *
     * @return array
     * @throws Exception
     */
    function importExecl($file = '', $sheet = 0, $columnCnt = 0, $options = [])
    {
        try {
            $file = 'E:/fast/public/uploads/20190910/aeb86ef4be998d313886f6276879bb24.xls';
            /* 转码 */
            $file = iconv("utf-8", "gb2312", $file);

            if (empty($file) OR !file_exists($file)) {
               echo '文件不存在';
               exit;
            }
            /** @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;
        }

    转载于:https://www.cnblogs.com/PLasir/p/11506764.html

    展开全文
  • 1. 首先你得有Ci框架才行啊.....codeigniter composer create-project codeigniter/framework...composer require phpoffice/phpspreadsheet 3. 接下来,你懂得,封装一个模型方法,哪里使(bu)用(hui)哪(dian)里(na)...

    1. 首先你得有Ci框架才行啊.....codeigniter

    composer create-project codeigniter/framework

    2. 直接撸代码..下载安装PHPoffice.....

    composer require phpoffice/phpspreadsheet

    3. 接下来,你懂得,封装一个模型方法,哪里使(bu)用(hui)哪(dian)里(na)调(li).......

    ExportXlsModel.php

    use PhpOffice\PhpSpreadsheet\Spreadsheet;
    use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
    
    class ExportXlsModel extends CI_Model{
        /**
         * 导出excel
         * @param $data
         * @param string $title
         */
        public function export_excel($data, $title = '未命名.xlsx') {
           // var_dump($data);
            ini_set ('memory_limit', '1024M');
            $spreadsheet = new Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();
            foreach ($data as $key1=>$sub_data) { //列
                foreach ($sub_data as $key2=>$item) { //行
                    $sheet->setCellValueExplicitByColumnAndRow($key2+1, $key1+1,$item,'s');
                }
            }
            unset($data);
            $writer = new Xlsx($spreadsheet);
            unset($spreadsheet);
    //      $writer->save($title);
            header("Pragma: public");
            header("Expires: 0");
            header('Access-Control-Allow-Origin:*');
            header('Access-Control-Allow-Headers:content-type');
            header('Access-Control-Allow-Credentials:true');
            header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
            header("Content-Type:application/force-download");
            header("Content-Type:application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
            header("Content-Type:application/octet-stream");
            header("Content-Type:application/download");;
            header("Content-Disposition:attachment;filename=$title");
            header("Content-Transfer-Encoding:binary");
            $writer->save('php://output');
            exit();
        }
    }

    4. 用一下(ha)....

    //把数据组装出呢个下面结构就可以啦......
    
    $arr = [
      ['id','name','age','sex'],  //这一行是表头
      [1,'assasin',25,'male'], //第一行数据
      [2,'bob',20,'male'],  //第二行数据
      [3,'juli',18,'female'] //第三行数据
    ];
    
     $this->load->model('exportXlsModel');
     $this->exportXlsModel->export_excel($export_array,'导出结果.xlsx');

     

    展开全文
  • 若不使用第三方的软件,类如卓正公司的PageOffice等专业工具,要想实现在自己平台上word,excel,ppt,pdf等格式的在线预览。推荐使用一些方法。 1.Excel 引用第三方的平台,通过调用地址,传入地址的方式来预览文件...

    若不使用第三方的软件,类如卓正公司的PageOffice等专业工具,要想实现在自己平台上word,excel,ppt,pdf等格式的在线预览。推荐使用一些方法。

    1.Excel

    引用第三方的平台,通过调用地址,传入地址的方式来预览文件。

    预览方式:https://view.officeapps.live.com/op/view.aspx?src="一个url地址"

    在项目中可使用iframe框来加载。

    $url = "http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls";
    $html .= "<iframe src='https://view.officeapps.live.com/op/view.aspx?src=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

    效果预览

    word也可以使用上面的方式,但是对格式要求很严格。下面讲一个另一个平台的使用方法。

     

    2.word,ppt在线预览

    预览方式:https://api.idocv.com/view/url?url="url地址"

    同样,可使用iframe框加载

    word 格式

    $url = "http://148.70.56.74/test.doc";
    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

     

    预览效果:

    ppt格式

    $url = "http://148.70.56.74/222.pptx";
    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'></iframe>";

    预览效果:

    ppt好像只有一个小时的试用期,要长久使用的话要购买。。。

    3.pdf在线预览

    需要引入pdf.js 地址

    下载地址: http://148.70.56.74/pdf.js             地址服务器已经到期,等新服务器买了后再放上去吧......

    将js引入之后,页面上只需要几行代码搞定。

    html

    <div id="viewpdf"></div>

     

    js ex:pdf  文件名字支持中文

    // 文件路径
    var url = 'http://148.70.56.74/群管理秘籍.pdf';
    var options = {
        height: "550px",
        pdfOpenParams: {view: 'FitV', page: '0' },
        ame:"mans",
        fallbackLink: "<p>您的浏览器暂不支持此pdf,请下载最新的浏览器</p>"
    };
    // 读取文件地址
    PDFObject.embed(url, "#viewpdf",options)

    预览效果:

     

     

    PHP代码,可以参考一下

    public function ViewDocument ($type){
            $type = $_GET['type'] ? $_GET['type'] : "word";
            $html = "";
            switch ($type){
                // 调用微软office平台 将抵制放到iframe框中预览 文件地址可以是在
                case "xls":
                    //$url = "http://148.70.56.74/cjxq.xls";
                    $url = "http://storage.xuetangx.com/public_assets/xuetangx/PDF/1.xls";
                    $html .= "<iframe src='https://view.officeapps.live.com/op/view.aspx?src=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                </iframe>";
                    break;
                case "word":
                    $url = "http://148.70.56.74/test.doc";
                    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                </iframe>";
                    break;
                case "ppt":
                    $url = "http://148.70.56.74/test.pptx";
                    $html .= "<iframe src='https://api.idocv.com/view/url?url=$url' width=\"100%\" height=\"100%\" frameborder='1'>
                    </iframe>";
                    break;
                case "pdf":
                    $html = '<div id="viewpdf"></div>';
                    break;
                default:
                    $html = '';
                    break;
            }
            $this->view->assign("html",$html);
            $this->view->display('zrk/viewdoc');
    
        }

     

    展开全文
  • 问题:使用phpoffice/phpexcel导出数据不全或者文件有错误原因:因为mysql使用了utf8mb4的数据存储格式,所以导致有表情的字段会出现这种问题。解决方案:替换字段中的表情符号// 在网上找到了两种方案 //第一种: ...

    问题:

    使用phpoffice/phpexcel导出数据不全或者文件有错误

    原因:

    因为mysql使用了utf8mb4的数据存储格式,所以导致有表情的字段会出现这种问题。

    解决方案:

    替换字段中的表情符号

    // 在网上找到了两种方案
    //第一种:
    public static function filterEmoji($text, $replaceTo = '')
        {
            $clean_text = "";
            // Match Emoticons
            $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u';
            $clean_text = preg_replace($regexEmoticons, $replaceTo, $text);
            // Match Miscellaneous Symbols and Pictographs
            $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u';
            $clean_text = preg_replace($regexSymbols, $replaceTo, $clean_text);
            // Match Transport And Map Symbols
            $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u';
            $clean_text = preg_replace($regexTransport, $replaceTo, $clean_text);
            // Match Miscellaneous Symbols
            $regexMisc = '/[\x{2600}-\x{26FF}]/u';
            $clean_text = preg_replace($regexMisc, $replaceTo, $clean_text);
            // Match Dingbats
            $regexDingbats = '/[\x{2700}-\x{27BF}]/u';
            $clean_text = preg_replace($regexDingbats, $replaceTo, $clean_text);
            return $clean_text;
        }
    //第二种
    public static function wxNickNameFormat($nickName){
            $value = json_encode($nickName);
            $value = preg_replace("/\\\u[ed][0-9a-f]{3}\\\u[ed][0-9a-f]{3}/","*",$value);
            return json_decode($value);
        }

    转自:https://blog.csdn.net/qq_26245325/article/details/79303800


    ********************************只要思想不滑坡,办法总比困难多****************************




    展开全文
  • PhpOffice --- Excle 使用

    2019-07-19 15:46:16
    表格使用相关设置函数 1、创建实例 $spreadsheet = new Spreadsheet();//实例化类 2、设置横向标识 ...//横向单元格标识 $cellName = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N...
  • phpoffice--表格设置

    2019-05-27 10:01:53
    //居中 $sheet->setCellValue('A1','你好')->getStyle('A1')->getAlignment()->setHorizontal(\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER); //自动设置行宽(没有合并列下) ...
  • 在Office 15即将发布之际我又发现了那些在开源的PHPoffice,一般的程序员、设计师他们距离Office办公套件也是蛮遥远的,但是如果真的要用了总不可 能去下载一个吧即使是WPS也需要时间,所以不如在自己的服务器上建立...
  • 背景介绍 因公司产品的营销活动被羊毛党盯上,导致现有批量结算系统暂不满足需求,所以采取数据分析师分析数据...phpoffice/phpexcel扩展 <?php /** * * * User: 原子酱 * Date: 2019/9/23 * Time: 17:36 ...
  • <p>They have updated the plugin and replace some shared class according to this: <a href="https://github.com/PHPOffice/PHPWord/releases" rel="nofollow noreferrer">...and upon upgrading the phpword, I...
  • <p>I have PHPWORD in /libraries/PhpOffice/PhpWord/ directory. I'm trying to use it in completly other part of app (Joomla website) like this: <pre><code>require_once JPATH_LIBRARIES.'/vendor/autoload...
  • ------------------------------------------------------------------------------------ ... * Document:https://github.com/PHPOffice/PHPExcel/blob/develop/Documentation/markdown/Ov...
  • PHPOffice/PHPPresentation, but I can't convert it into images. <pre><code>require_once 'src/PhpPresentation/Autoloader.php'; \PhpOffice\PhpPresentation\Autoloader::register(); require_once 'src/...
  • I'm trying this code from <a href="https://github.com/PHPOffice/PHPWord" rel="nofollow noreferrer">here</a></p> <pre><code>require_once 'bootstrap.php'; $phpWord = new \PhpOffice\PhpWord\PhpWord(); $...
  • 安装phpoffice/phpspreadsheet环境OneinStack安装ext-fileinfo这个扩展 Composer安装phpoffice/phpspreadsheet 1.添加"phpoffice/phpspreadsheet":"1.8.*"到composer.json 2.执行composer install 报错 1 首先出现...
  • 下载phpoffice/phpspreadsheet composer require phpoffice/phpspreadsheet 1.8.2 这个版本兼容PHP5和PHP7 1、新建Excel.php文件 <?php namespace app\admin\controller; use PhpOffice\PhpSpreadsheet...
  • <p>Cannot use PhpOffice\PhpWord\Shared\String as String because 'String' is a special class name in /home/.../vendor/phpoffice/phpword/src/PhpWord/Style/Paragraph.php</p> <p>Then I using lastest ...
  • <p>I'm using using PhpOffice library. Is there any option how to replace Variable in docx file with ordered list? <p>With templateProcessor method setComplexValue I can add text with code <pre>...
  • composer require phpoffice/phpspreadsheet 类文件引入扩展 use PhpOffice\PhpSpreadsheet\Reader\Xls; use PhpOffice\PhpSpreadsheet\Shared\Date; 导入方法 public function import(){ //实例化xls类 ....
  • 关联文章:... composer require phpoffice/phpexcel https://github.com/PHPOffice/PHPExcel * ./app/Http/Controllers/PackageController.php http...
1 2 3 4 5 ... 20
收藏数 1,696
精华内容 678
热门标签