亚洲国产精品成人无码区,公天天吃我奶躁我的比视频,亚洲国产欧美视频亚洲国产精品一区二区成人片不卡,天天躁日日躁狠狠躁视频2021,起视碰看97视频在线少妇久久久久久人妻无码, 芒果乱码一线二线三线新区 ,亚洲熟妇无码AⅤ不卡在线播放,人妻少妇乱子伦无码专区

400-800-9385
網(wǎng)站建設(shè)資訊詳細(xì)

PHPExcel-超過(guò)26列數(shù)據(jù)的導(dǎo)出

發(fā)表日期:2019-11-15 16:25:07   作者來(lái)源:劉紅旺   瀏覽:3284   標(biāo)簽:    
在網(wǎng)站制作中,經(jīng)常會(huì)遇到的功能就是數(shù)據(jù)的導(dǎo)入和導(dǎo)出,PHP導(dǎo)入導(dǎo)出功能的實(shí)現(xiàn)不算很復(fù)雜,因?yàn)橛幸粋€(gè)比較好的插件PHPEXCEL。

最近遇到一個(gè)問(wèn)題,用phpExcel 導(dǎo)出數(shù)據(jù)的時(shí)候發(fā)現(xiàn)報(bào)錯(cuò) Invalid cell coordinate  一直在用這個(gè)插件沒(méi)有遇到過(guò)這樣的問(wèn)題,網(wǎng)上找了一下原來(lái)是當(dāng)數(shù)據(jù)大于26列的時(shí)候 26個(gè)字母用完了需要對(duì)列數(shù)進(jìn)行處理 大于26應(yīng)該AA,AB,AC,AD…排列下去。PHPExcel數(shù)據(jù)導(dǎo)出方式是一行一行的循環(huán)處理
比如:第一行是標(biāo)題,輸出的時(shí)候以A1,B1,C1,D1…AA1,BB1,CC1順序循環(huán)。
**
 * PHPExcel使用類(lèi)
 * +------------------------------------使用------------------------------------+
 * 導(dǎo)入excel表
 * vendor('PHPExcel.PHPExcelUser');
 * $file='./cs.xlsx';
 * $excel=new \PHPExcelUser($file);
 * $data=$excel->excelImport(1);//從第一行讀取,如果有非字符串和函數(shù)的話(huà)則會(huì)返加一個(gè)錯(cuò)誤的數(shù)組
 * 導(dǎo)出excel表
 * vendor('PHPExcel.PHPExcelUser');
 * $file='./cs.xlsx';
 * $excel=new \PHPExcelUser($file);
 * $excel->excelExport($data=array(),$title=array());
 * +------------------------------------使用------------------------------------+
 * Class FileTemp
 */
class  PHPExcelUser {
    public $excelFilename; //excel導(dǎo)入或?qū)С龅奈募拿Q(chēng)
    public $strCheck; //是否進(jìn)行導(dǎo)入全部字符串驗(yàn)證
    public $funCheck; //是否進(jìn)行導(dǎo)入函數(shù)驗(yàn)證
    public $errorArr = array(); //當(dāng)需要檢查并且有錯(cuò)誤時(shí)返回的錯(cuò)誤統(tǒng)計(jì)數(shù)組
 
    /**
     * 構(gòu)造函數(shù)
     * @param $excelFilename 文件名稱(chēng)
     * @param bool $strCheck 是否進(jìn)行字符串驗(yàn)證檢測(cè)
     * @param bool $funCheck 是否進(jìn)行函數(shù)驗(yàn)證檢測(cè)
     */
    public function __construct($excelFilename, $strCheck = false, $funCheck = false) {
        if (!$excelFilename) {
            try {
                $error = '請(qǐng)輸入Excel文件名稱(chēng)';
                throw new Exception($error);
            } catch (Exception $e) {
                echo $e->getMessage();
            }
        }
        $this->excelFilename = $excelFilename;;
        $this->strCheck = $strCheck;
        $this->funCheck = $funCheck;
    }
/**
     * 導(dǎo)出成Excel文件
     * @param array $data 一個(gè)二維數(shù)組,結(jié)構(gòu)如同從數(shù)據(jù)庫(kù)查出來(lái)的數(shù)組
     * @param array $title excel的第一行標(biāo)題,一個(gè)數(shù)組,如果為空則沒(méi)有標(biāo)題
     * @exapme
     * $arr = $Model -> select();
     * excelExport($arr,array('id','賬戶(hù)','密碼','昵稱(chēng)'),'文件名');
     */
    function excelExport($data = array(), $title = array()) {
        require_once('PHPExcel.php');
        error_reporting(E_ALL);
        date_default_timezone_set('Europe/London');
        $objPHPExcel = new PHPExcel();
 
        /*以下是一些設(shè)置 ,什么作者  標(biāo)題啊之類(lèi)的*/
        $objPHPExcel->getProperties()->setCreator($this->excelFilename)
            ->setLastModifiedBy($this->excelFilename)
            ->setTitle("數(shù)據(jù)EXCEL導(dǎo)出")
            ->setSubject("數(shù)據(jù)EXCEL導(dǎo)出")
            ->setDescription("備份數(shù)據(jù)")
            ->setKeywords("excel")
            ->setCategory("result file");
        /*以下就是對(duì)處理Excel里的數(shù)據(jù), 橫著取數(shù)據(jù),主要是這一步,其他基本都不要改*/
        $model = $objPHPExcel->setActiveSheetIndex(0);
        $key = 65; //只有A-Z
        $key2 = ord("@");//@--64
        foreach ($title as $k => $v) {
        if($key>ord("Z")){
            $key2 += 1;
            $key = ord("A");
            $colum = chr($key2).chr($key);//超過(guò)26個(gè)字母時(shí)才會(huì)啟用  
        }else{
            if($key2>=ord("A")){
                $colum = chr($key2).chr($key);//超過(guò)26個(gè)字母時(shí)才會(huì)啟用  
            }else{
                $colum = chr($key);
            }
        }
 
            $model->setCellValue($colum . '1', $v);
            $key++;
        }
        $column = 2;  //從第二行開(kāi)始
      foreach($data as $key => $rows){ //行寫(xiě)入  
        $span = ord("A");  
        $span2 = ord("@");
        foreach ($rows as $m => $n) {
             foreach($title as $k=>$v){  
             if($span>ord("Z")){  
                $span2 += 1;  
                $span = ord("A");  
           $j = chr($span2).chr($span);//超過(guò)26個(gè)字母時(shí)才會(huì)啟用  
            }else{  
                if($span2>=ord("A")){  
                    $j = chr($span2).chr($span);  
                }else{  
                    $j = chr($span);  
                }  
            }
            }   
                //dump($j.$column.'|'.$n);
                $model->setCellValue($j . $column, $n);
               //數(shù)據(jù)從第二行開(kāi)始 A2,B2,C2,D2… 開(kāi)始循環(huán)
                $span++;         
         }
 
  
        $column++;  
    }  
    //exit;
        $objPHPExcel->getActiveSheet()->setTitle('siteape');
        $objPHPExcel->setActiveSheetIndex(0);
        header('Content-Type: applicationnd.ms-excel');
        header('Content-Disposition: attachment;filename="' . $this->excelFilename . '.xls"');
        header('Cache-Control: max-age=0');
        $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
        $objWriter->save('php://output');
        exit;
    }
 
    /**
     * Excel讀取
     * @param $begin 開(kāi)始讀取的行數(shù)
     * @return array|string
     */
    function excelImport($begin) {
        require_once('PHPExcel.php');
        $filename = $this->getRealFile($this->excelFilename);
        //建立reader對(duì)象
        $PHPReader = new PHPExcel_Reader_Excel2007();
        if (!$PHPReader->canRead($filename)) {
            $PHPReader = new PHPExcel_Reader_Excel5();
            if (!$PHPReader->canRead($filename)) {
                return array();
            }
        }
        //建立excel對(duì)象,此時(shí)你即可以通過(guò)excel對(duì)象讀取文件,也可以通過(guò)它寫(xiě)入文件
        $PHPExcel = $PHPReader->load($filename);
        /*讀取excel文件中的第一個(gè)工作表*/
        $currentSheet = $PHPExcel->getSheet(0);
        /*取得最大的列號(hào)*/
        $allColumn = $currentSheet->getHighestColumn();
        /*取得一共有多少行*/
        $allRow = $currentSheet->getHighestRow();
        $returnCell = '';
        //循環(huán)讀取每個(gè)單元格的內(nèi)容。注意行從1開(kāi)始,列從A開(kāi)始
        for ($rowIndex = $begin; $rowIndex <= $allRow; $rowIndex++) {
            for ($colIndex = 'A'; $colIndex <= $allColumn; $colIndex++) {
                $addr = $colIndex . $rowIndex;
                $cell = $currentSheet->getCell($addr)->getCalculatedValue();
                if ($cell instanceof PHPExcel_RichText) {
                    //富文本轉(zhuǎn)換字符串
                    $returnCell[$rowIndex][$colIndex] = $cell->__toString();
                } else {
                    $returnCell[$rowIndex][$colIndex] = $cell;
                }
            }
        }
        return $returnCell;
    }
 
    /**
     * 獲取正確的路徑
     * @param $file
     * @return string
     */
    public function getRealFile($file) {
        $file = $file ? $file : $this->excelFilename;
        $error = '';
        if (substr($file, 0, 4) == 'http') {
            $realfile = $file;
        } elseif (!$file) {
            $error = '請(qǐng)指定文件路徑';
        } elseif (file_exists($file)) {
            $realfile = $file;
        } elseif (file_exists('.' . $file)) {
            $realfile = '.' . $file;
        } elseif (file_exists('..' . $file)) {
            $realfile = '..' . $file;
        } else {
            $error = '您輸入的文件不存在';
        }
        if ($error != '') {
            try {
                throw new Exception($error);
            } catch (Exception $e) {
                echo $e->getMessage();
            }
        } else {
            return $realfile;
        }
    }
 
    /**
     * 根據(jù)數(shù)據(jù)與字段匹配內(nèi)容生成標(biāo)準(zhǔn)的表頭
     * @param $titleArr 二維數(shù)組,field=>title
     * @param $data
     * @return array
     */
    public function getArrayTitle($titleArr, $data) {
        $reData = array();
        $firstData = $data[0]; //只需要取第一條數(shù)據(jù)即可
        if ($firstData) {
            foreach ($firstData as $k => $v) {
                $title = $titleArr[$k];
                $reData[] = $title;
            }
        } else {
            //直接輸入默認(rèn)順序的title
            foreach ($titleArr as $k => $v) {
                $reData[] = $v;
            }
        }
        return $reData;
    }
}
 
如沒(méi)特殊注明,文章均為方維網(wǎng)絡(luò)原創(chuàng),轉(zhuǎn)載請(qǐng)注明來(lái)自http://m.oulysa.com/news/5437.html
欧美精品成人久久网站| 国产av日韩aⅴ亚洲av| 国产成人综合久久亚洲精品| 日本喷奶水视频中文字幕97| 精品久久久无码人妻字幂| 色窝窝无码一区二区三区| 一级爱象视频免费高清无码| 亚洲熟女伦子伦av一区二区三区| 香蕉久久一区二区不卡无毒影院| 免费一级做a爰片久久毛片潮| 欧美XXXXX高潮喷水麻豆| 88国产精品欧美一区二区三区| 日本伊人精品一區二區三區| 日韩丝袜按摩在线播放| 国产成av人片在线观看天堂无码| 久久久久精品无码AV专区| 亚洲AV无码国产精品麻豆天美| 少妇人妻偷人精品视频| 亚洲中文无码h在线观看| 成人一区二区三区无码| 精品人无码一区二区三区| 国产乱子伦一区二区| 极品少妇被猛的白浆直喷白浆| 国产亚洲午夜高清国产拍精品| 国产成人精品在线观看| 国产女人水多毛片18| 中文字幕精品亚洲无线码VR| 亚洲精品乱码久久久久久蜜桃| 日韩人妻一区二区三区蜜桃视频| 性xxxxBBBB,精品国产YW在线观看| 少妇愉情理伦片高潮日本| 77777在线视频免费播放| 伊人久久大香线蕉成人| 麻豆一区二区99久久久久| 免费高清在线影片一区| 久久精品99久久香蕉国产| 国产精品区免费视频| 嗯…啊%20摸%20湿%20奶头免费视频| 日本日本乱码伦视频在线| 国产在观线免费观看久久| 国产V亚洲V天堂无码久久久|