• 本文章实例基于Thinkphp5框架,部分函数自行适当修改
  • PHPExcel导入(Excel5)
     /**
     * 上传Excel文件,并遍历数组
     * @return mixed 输出前端页面
     */
    public function index()
    {
        if ($file = request()->file('fileUpload')) {
            // 移动到框架应用根目录/public/uploads/ 目录下 move("保存地址","保存名称")
            $info = $file->validate(['ext' => 'xls'])->move(ROOT_PATH . 'public' . DS . 'uploads', date('YmdHis'));
    
            if ($info) {
    
                //加载PHPExcel类,解析表格,结果为二维数组
                import('PHPExcel.Classes.PHPExcel', '', '.php');
                $object = new \PHPExcel_Reader_Excel5();
    //                $file_name = '/public/uploads/' . $file_name;
    //                $file_name = iconv("utf-8", "gb2312",$file_name);
                $objPHPExcel = $object->load($info->getPathname());
                $ExcelData   = $objPHPExcel->getActiveSheet()->toArray('', true, true, true);
    
                //验证Excel第2行($ExcelData[2])非空列数
    //                if (count(array_filter($ExcelData[2])) != 8)
    //                    $this->error('订单字段不正确,请参照模板');
    
                //输出实例
                print_r('<pre>');
                print_r($ExcelData);
            } else {
                // 上传失败获取错误信息
                $this->error($file->getError());
            }
        }else{
            return '<body><form action="" method="post" enctype="multipart/form-data"><input type="file" name="fileUpload" /><input type="submit" value="上传Excel文件" /></form></body>';
        }
    }
  • PHPExcel导出(Excel5)
     /**
     * 乘法口诀表
     * @return mixed
     */
    public function index()
    {
        $objPHPExcel = new \PHPExcel();
    
        $row_array    = [1, 2, 3, 4, 5, 6, 7, 8, 9];
        $column_array = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
        $column       = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', "I", 'J'];
    
        /*
         * setCellValue(列ABC . 行123, "字段")
         * 注意垃圾Excel从1开始数
         */
    
        /*
         * 头部
         */
        $objPHPExcel->getActiveSheet()->setCellValue($column[0] . '1', "\\");
        foreach ($column_array as $key=>$value) {
            $objPHPExcel->getActiveSheet()->setCellValue($column[$key+1] . '1', $value);
        };
    
        /*
         * 主体
         */
        $row = 2;   //第二行开始
        foreach ($row_array as $number) {  //每行
            $objPHPExcel->getActiveSheet()->setCellValue('A' . $row, $number);
            foreach ($column_array as $key => $value) { //这一行的每列,第二列开始
                $objPHPExcel->getActiveSheet()->setCellValue($column[$key+1] . $row, ($key+1) * $number);
            };
            $row++;  //下一行
        }
    
        // 输出Excel表格到浏览器下载
        ob_end_clean();
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="abc.xls"');
        header('Cache-Control: max-age=0');
        // If you're serving to IE 9, then the following may be needed
        header('Cache-Control: max-age=1');
        // If you're serving to IE over SSL, then the following may be needed
        header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
        header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT'); // always modified
        header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
        header('Pragma: public'); // HTTP/1.0
        $objIOFactory = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
    
        return $objIOFactory->save('php://output');
    }
  • 出于版权保护的考虑,如果在Word 2010中打开从网络上下载的文档,Word 2010会自动处于保护模式下,默认禁止编辑,想修改必须点击一下启用编辑(Enble Editing)。
  • 原因分析:由于office 2010的一些新功能造成了这种情况。
    1. 临时解决办法:修改文件属性
      选择需要打开的文件,点右键属性里面选择”解除锁定”,然后确定后。即可正常打开了。
    2. 彻底解决办法:修改选项配置
      进入文件菜单中的选项->信任中心->点信任中心设置然后点受保护的视图,把右边的所有钩上的内容都不钩,最后保存退出即可。
      Word/Excel都要设置一下。