Giter Club home page Giter Club logo

phplus's People

Contributors

kingsmlin249 avatar

Watchers

 avatar

phplus's Issues

Ueditor的使用:单独使用多文件上传

<!--html-->
<input type="text"  id="pic" name="pic"  value=""/>
<a href="javascript:void(0);" class="easyui-linkbutton fontawesome-icon-button" onclick="upImage();">上传图片</a>
<!--载入js start-->
<script type="text/javascript" src="./editor/js/ueditor.config.js"></script>
<script type="text/javascript" src="./editor/js/ueditor.all.js"></script>
<script type="text/plain" id="upload_ue"></script>
<!--载入js end-->
<!--上传图片模块-->
<script type="text/javascript">
    var theEditor ;
    $(function() {
        //重新实例化一个编辑器,防止在上面的editor编辑器中显示上传的图片或者文件
        theEditor = UE.getEditor('upload_ue',
            {
                upload_model: "banner",
                UEDITOR_HOME_URL:'__ROOT__Application/ESAdmin/Public/editorUploadImages/js/',
            });
        theEditor .ready(function () {
            //设置编辑器不可用
            // theEditor .setDisabled();
            //隐藏编辑器,因为不会用到这个编辑器实例,所以要隐藏
            theEditor .hide();
            //侦听图片上传
            theEditor .addListener('beforeInsertImage', function (t, arg) {
                //将地址赋值给相应的input,只去第一张图片的路径
                $("#pic").attr("value", arg[0].src);
                //图片预览
                $("#show_pic").attr("href", arg[0].src);
                $("#show_pic").show();
            })
            //侦听文件上传,取上传文件列表中第一个上传的文件的路径
            // theEditor .addListener('afterUpfile', function (t, arg) {
            //     $("#file").attr("value", theEditor .options.filePath + arg[0].url);
            // })
        });
    });
    //弹出图片上传的对话框
    function upImage() {
        var myImage = theEditor .getDialog("insertimage");
        myImage.open();
    }
</script>

Thinkphp扩展PHPExcel的接入

PHPExcel的安装配置

从PHPExcel官网中下载放置Vendor目录下
image

PHPExcel的读取数据操作

  public function readerExcel($file){
        //载入PHPExcel类型
        vendor('PHPExcel18.PHPExcel');
        $objectReader = \PHPExcel_IOFactory::createReaderForFile($file);
        $objPHPExcel  = $objectReader->load($file);
        //获取单页的Excel数据
        $sheet            = $objPHPExcel->getSheet(0);
        //获取Excel的横纵行数据
        $heightRow       = $sheet->getHighestRow();
        $heightColumn = $sheet->getHighestColumn();
        //创建存放数据的数组
        $data=array();
        for($j=1;$j<=$heightRow;$j++){
            for($k='A';$k<=$heightColumn ;$k++){
                // 读取单元格
                $data[$j][$k]=$sheet->getCell("$j$k")->getValue();
            }
        }
        return $data;
   }

注意事项:当HeightColumn大于Z的时候,如AA时,输出数据错误,所以必要时需要对height进行处理
步骤:导入Excel模板->保存数据
结果:最后我们就能获取到导入的Excel数据

PHPExcel的读写数据操作

    public function exportAction($file){
        //载入PHPExcel类型
        Vendor('PHPExcel18.PHPExcel');
        //实例化PHPExcel类
        $objectReader = \PHPExcel_IOFactory::createReaderForFile($file);
        //载入文件
        $objPHPExcel = $objectReader->load($file);
        //对需要修改的单元格位置进行修改
        $objPHPExcel->getActiveSheet()->setCellValue('A5', 'Hello!');//指定要写的单元格位置
        //进行写入操作
        $objWriter   = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        //处理中文字符串及IE浏览器
        $userBrowser = $_SERVER['HTTP_USER_AGENT'];
        if (preg_match( '/MSIE/i', $userBrowser )){
             $file           = urlencode($file);
        }
        $file =    iconv('UTF-8', 'GBK//IGNORE', $file);
        //引入头进行下载
        header("Pragma: public");
        header("Expires: 0");
        header("Cache-Control:must-revalidate, post-check=0, pre-check=0");
        header("Content-Type:application/force-download");
        header("Content-Type:application/vnd.ms-execl");
        header("Content-Type:application/octet-stream");
        header("Content-Type:application/download");
        header('Content-Disposition:attachment;filename="'.$file.'"');
        header("Content-Transfer-Encoding:binary");
        $objWriter->save('php://output');
        unset($objWriter);
        unset($objPHPExcel);
    }

步骤:导入Excel模板->修改所需数据->保存->导出
结果:最后我们就能导出自己所需的Excel

ASCII转换Column值

    /**
     * Create Format ASCII
     * @param $index
     * @param bool $getAsc
     * @return float|int|string
     */
    private function getExcelColumnChar($index,$getAsc = true){
        if($getAsc){
            if (chr($index) > "Z") {
                return "A" . chr($index - ord("Z") - 1 + ord("A"));
            } else {
                return chr($index);
            }
        }else{
            if(strlen($index) == 2 && is_string($index)){
                $start_str = "A";
                $end_str   = "Z";
                $str1 = substr_replace($index,'',1,1);
                $str2 = substr_replace($index,'',0,1);
                $cycle = (ord($end_str) - ord($start_str) + 1);
                $cycle_sum = $cycle *( ord($str1) - ord($start_str) + 1 );
                return $cycle_sum + ord($start_str) + ord($str2) - ord($start_str);
            }elseif(!is_string($index)){
                return $this->getExcelColumnChar($index);
            }else{
                return ord($index);
            }
        }

    }

作用:为避免PHP HeightColumn超过Z,通过该函数来对其进行装换

调用ASCII转换,修改读取数据操作

  public function readerExcel($file){
        //载入PHPExcel类型
        vendor('PHPExcel18.PHPExcel');
        $objectReader = \PHPExcel_IOFactory::createReaderForFile($file);
        $objPHPExcel  = $objectReader->load($file);
        //获取单页的Excel数据
        $sheet            = $objPHPExcel->getSheet(0);
        //获取Excel的横纵行数据
        $heightRow       = $sheet->getHighestRow();
        $heightColumn = $sheet->getHighestColumn();
        //创建存放数据的数组
        $data=array();
        for($j=1;$j<=$heightRow;$j++){
            for($k=ord('A');$k<=$this->getExcelColumnChar($heightColumn,false) ;$k++){
                // 读取单元格
                $kc  = $this->getExcelColumnChar($k,true);
                $data[$j][$kc]=$sheet->getCell("$j$kc")->getValue();
            }
        }
        return $data;
   }

PHPExcel的常用设置

创建人
$objPHPExcel->getProperties()->setCreator("Autor");
最后修改人
$objPHPExcel->getProperties()->setLastModifiedBy("Autor");
标题
$objPHPExcel->getProperties()->setTitle("Office 2007 Excel");
题目
$objPHPExcel->getProperties()->setSubject("Office 2007 XLSX");
描述
$objPHPExcel->getProperties()->setDescription("Test document for Office 2007 XLSX");
关键字
$objPHPExcel->getProperties()->setKeywords("office 2007 xlsl ");
种类
$objPHPExcel->getProperties()->setCategory("file");
设置当前的sheet 0为第一个,依次往上加
$objPHPExcel->setActiveSheetIndex(0);
设置sheet的name
$objPHPExcel->getActiveSheet()->setTitle('Default');
设置单元格的值
$objPHPExcel->getActiveSheet()->setCellValue('A1', 'H');
$objPHPExcel->getActiveSheet()->setCellValue('A2', e);
$objPHPExcel->getActiveSheet()->setCellValue('A3', l);
$objPHPExcel->getActiveSheet()->setCellValue('A4', l);
$objPHPExcel->getActiveSheet()->setCellValue('A5', o);
$objPHPExcel->getActiveSheet()->setCellValue('A6', '=SUM(A1:A2)');
$objPHPExcel->getActiveSheet()->setCellValue('A7', '=MIN(A3:A4)');
合并单元格
$objPHPExcel->getActiveSheet()->mergeCells('A1:B2');
分离单元格
$objPHPExcel->getActiveSheet()->unmergeCells('A2:B2');
保护cell
$objPHPExcel->getActiveSheet()->getProtection()->setSheet(true); 
$objPHPExcel->getActiveSheet()->protectCells('A3:E13', 'PHPExcel');
设置字体
$objPHPExcel->getDefaultStyle()->getFont()->setName('微软雅黑');
设置格式
// Set cell number formats
echo date('H:i:s') . " Set cell number formats\n";
$objPHPExcel->getActiveSheet()->getStyle('E4')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_CURRENCY_EUR_SIMPLE);
$objPHPExcel->getActiveSheet()->duplicateStyle( $objPHPExcel->getActiveSheet()->getStyle('E4'), 'E5:E13' );
设置宽width
// Set column widths
$objPHPExcel->getActiveSheet()->getColumnDimension('B')->setAutoSize(true);
$objPHPExcel->getActiveSheet()->getColumnDimension('D')->setWidth(12);
设置font
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setName('Candara');
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setSize(20);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->setUnderline(PHPExcel_Style_Font::UNDERLINE_SINGLE);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle('E1')->getFont()->getColor()->setARGB(PHPExcel_Style_Color::COLOR_WHITE);
$objPHPExcel->getActiveSheet()->getStyle('D13')->getFont()->setBold(true);
$objPHPExcel->getActiveSheet()->getStyle('E13')->getFont()->setBold(true);
设置align
$objPHPExcel->getActiveSheet()->getStyle('D11')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('D12')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('D13')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_JUSTIFY);
//水平居中
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER); 
//垂直居中
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setVertical(PHPExcel_Style_Alignment::VERTICAL_CENTER);
设置自动换行
$objPHPExcel->getActiveSheet()->getStyle('A18')->getAlignment()->setWrapText(true);
设置column的border
$objPHPExcel->getActiveSheet()->getStyle('A4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('B4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('C4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('D4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
$objPHPExcel->getActiveSheet()->getStyle('E4')->getBorders()->getTop()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);
设置border的color
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getLeft()->getColor()->setARGB('FF993300');
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getTop()->getColor()->setARGB('FF993300');
$objPHPExcel->getActiveSheet()->getStyle('D13')->getBorders()->getBottom()->getColor()->setARGB('FF993300');
$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getTop()->getColor()->setARGB('FF993300');
$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getBottom()->getColor()->setARGB('FF993300');
$objPHPExcel->getActiveSheet()->getStyle('E13')->getBorders()->getRight()->getColor()->setARGB('FF993300');
设置填充颜色
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('A1')->getFill()->getStartColor()->setARGB('FF808080');
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID);
$objPHPExcel->getActiveSheet()->getStyle('B1')->getFill()->getStartColor()->setARGB('FF808080');
设置边框
$styleArray = array(
     'borders' => array(
     'allborders' => array(
             'style' => \PHPExcel_Style_Border::BORDER_THIN,//细边框
             'color' => array('argb' => $color),
            ),
     ),
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->applyFromArray($styleArray);
//或者
$objPHPExcel->getActiveSheet()->getStyle('A2:D2')->getBorders()->getAllBorders()->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN);  
);

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.