成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

php處理Excel

gitmilk / 2277人閱讀

摘要:導(dǎo)出成為在絕大多數(shù)情況下,導(dǎo)出其實(shí)就是將二維數(shù)組轉(zhuǎn)化為表格。要保存的的名字轉(zhuǎn)換為表格的二維數(shù)組設(shè)置表格填充數(shù)據(jù)設(shè)置表格并輸出導(dǎo)入同理,導(dǎo)入其實(shí)就是將的數(shù)據(jù)轉(zhuǎn)化成為二維數(shù)組,這就要求必須符合格式。

遇到問(wèn)題

平時(shí)在工作中,時(shí)常會(huì)出現(xiàn)將數(shù)據(jù)庫(kù)表導(dǎo)出為Excel或者將Excel導(dǎo)入數(shù)據(jù)庫(kù)表的需求。這一需求早早就已經(jīng)實(shí)現(xiàn)過(guò)了,為了方便導(dǎo)入導(dǎo)出,我將其封裝成了兩個(gè)方法,作為記錄。

代碼實(shí)現(xiàn) phpexcel類(lèi)庫(kù)的引用

phpexcel擁有強(qiáng)大的Excel處理能力,在packagist上已經(jīng)擁有數(shù)百萬(wàn)次的下載量,不過(guò)實(shí)話(huà)實(shí)說(shuō),excel的處理速度仍然是非常慢,數(shù)據(jù)量較大時(shí)慎重使用。在packagist上下載或者直接用composer require phpoffice/phpexcel之后,便可以使用phpexcel了。

導(dǎo)出成為Excel

在絕大多數(shù)情況下,導(dǎo)出excel其實(shí)就是將二維數(shù)組轉(zhuǎn)化為表格。

    /**
     * @param $name string 要保存的Excel的名字
     * @param $ret_data 轉(zhuǎn)換為表格的二維數(shù)組
     * @throws PHPExcel_Exception
     * @throws PHPExcel_Reader_Exception
     */
    function exportExcel($name, $ret_data){
        $objPHPExcel = new PHPExcelPHPExcel();
        //設(shè)置表格
        $objPHPExcel->getProperties()->setCreator($name)
                ->setLastModifiedBy($name)
                ->setTitle("Office 2007 XLSX Test Document")
                ->setSubject("Office 2007 XLSX Test Document")
                ->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
                ->setKeywords("office 2007 openxml php")
                ->setCategory("Test result file");
        //填充數(shù)據(jù)
        foreach ($ret_data as $key => $row) {
            $num = $key + 1;
            //$row = array_values($row);
            $i=0;
            foreach ($row as $key2 => $value2) {
                $objPHPExcel->setActiveSheetIndex(0)->setCellValue( PHPExelCell::stringFromColumnIndex($i). ($num), $value2);
                $i++;
            }
        }
        //設(shè)置表格并輸出
        $objPHPExcel->getActiveSheet()->setTitle($name);
        header("Content-Type: application/vnd.ms-excel");
        header("Content-Disposition: attachment;filename={$name}.xls");
        header("Cache-Control: max-age=0");
        header("Cache-Control: max-age=1");
        header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
        header("Cache-Control: cache, must-revalidate");
        header("Pragma: public"); // HTTP/1.0
        $objWriter = PHPExcelIOFactory::createWriter($objPHPExcel, "Excel5");
        $objWriter->save("php://output");
        exit;
    }
導(dǎo)入Excel

同理,導(dǎo)入Excel其實(shí)就是將Excel的數(shù)據(jù)轉(zhuǎn)化成為二維數(shù)組,這就要求Excel必須符合格式。

 function getRows($inputFileName)
    {
        if (!file_exists($inputFileName)) {
            throw new Exception("File not existed");
        }
        $inputFileType = PHPExcelIOFactory::identify($inputFileName);
        $objReader = PHPExcelIOFactory::createReader($inputFileType);
        $objPHPExcel = $objReader->load($inputFileName);
        $objWorksheet = $objPHPExcel->getActiveSheet();
        $highestRow = $objWorksheet->getHighestRow();
        $highestColumn = $objWorksheet->getHighestColumn();
        $highestColumnIndex = PHPExcelCell::columnIndexFromString($highestColumn);//總列數(shù)
        $row = 1;
        $curr = array();
        while ($row <= $highestRow) {
            for ($col = 0; $col < $highestColumnIndex; $col++) {
                $value = str_replace(array("

", "
", "
"), "", $objWorksheet->getCellByColumnAndRow($col, $row)->getValue());
                $curr[$row][] = $value;
            }
            $row++;
        }
        array_shift($curr);//第一行一般是字段名(Excel中列的標(biāo)題),導(dǎo)入時(shí)要移除
        return $curr;
    }
其他

導(dǎo)出時(shí)保存的格式是xlsx,想要改成其他格式需要傳入不同的參數(shù)。

導(dǎo)入時(shí)如果有多個(gè)sheet時(shí)需要在上次打開(kāi)時(shí)在要導(dǎo)入的sheet頁(yè)(以保證當(dāng)前sheet為activeSheet)關(guān)閉,或者根據(jù)sheet名在程序中選擇sheet。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/21708.html

相關(guān)文章

  • php 導(dǎo)出 excel

    關(guān)于 PHP 導(dǎo)出 excel csv 常用的有 PHPexcel ,本文整理了一些其他方案。 高性能 Excel 擴(kuò)展 sudo apt-get install -y zlib1g-dev git clone https://github.com/jmcnamara/libxlsxwriter.git cd libxlsxwriter make && sudo make install // ...

    付永剛 評(píng)論0 收藏0
  • 如何在 Laravel 項(xiàng)目中處理 Excel 文件

    摘要:本文經(jīng)授權(quán)轉(zhuǎn)自社區(qū)說(shuō)明是一款強(qiáng)大的文件處理擴(kuò)展包能夠快速完成文件的的導(dǎo)出解析等功能本項(xiàng)目由團(tuán)隊(duì)成員整理發(fā)布首發(fā)地為社區(qū)文章的項(xiàng)目截圖運(yùn)行代碼請(qǐng)見(jiàn)請(qǐng)參照此文檔運(yùn)行文章概覽安裝基礎(chǔ)用法更多功能接下來(lái)是詳細(xì)解說(shuō)安裝使用安裝該擴(kuò)展包安裝完成后, 本文經(jīng)授權(quán)轉(zhuǎn)自 PHPHub 社區(qū) 說(shuō)明 maatwebsite/excel 是一款強(qiáng)大的 Excel 文件處理擴(kuò)展包, 能夠快速完成 Excel 文...

    chadLi 評(píng)論0 收藏0
  • ThinkPHPPHPExcle導(dǎo)出Excel文件

    摘要:本篇文章主要講述,如何在中使用中導(dǎo)出文件,是博主在實(shí)踐了好多篇?jiǎng)e人的帖子之后,總結(jié)歸納出來(lái)的文章,親測(cè)可用。我的博客歡迎騷擾原文地址用導(dǎo)出文件。將文件,重命名成。文章結(jié)束,歡迎轉(zhuǎn)載。 本篇文章主要講述,如何在thinkPHP中使用PHPExcel中導(dǎo)出Excel文件,是博主在實(shí)踐了好多篇?jiǎng)e人的帖子之后,總結(jié)歸納出來(lái)的文章,親測(cè)可用。thinkPHP版本是3.2。 我的博客:Mine-...

    rollback 評(píng)論0 收藏0
  • phpExcel實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(全步驟詳細(xì)解析)

    摘要:上傳添加需下載類(lèi)文件,引入到項(xiàng)目類(lèi)庫(kù)里接收前臺(tái)文件,接收前臺(tái)文件重設(shè)置文件名設(shè)置移動(dòng)路徑表用函數(shù)方法返回?cái)?shù)組創(chuàng)建一個(gè)讀取數(shù)據(jù),可用于入庫(kù)引用類(lèi)靜態(tài)類(lèi)設(shè)置為代表支持或以下版本,代表版開(kāi)始讀取上傳到服務(wù)器中的文件,返回一個(gè)二維數(shù)組 1.上傳添加excel (需下載PHPExcel類(lèi)文件,引入到項(xiàng)目類(lèi)庫(kù)里) //接收前臺(tái)文件, public function addExcel() ...

    zengdongbao 評(píng)論0 收藏0
  • PHP讀取超大的excel文件數(shù)據(jù)的方案

    摘要:場(chǎng)景和痛點(diǎn)說(shuō)明今天因?yàn)橐粋€(gè)老同學(xué)找我,說(shuō)自己公司的物流業(yè)務(wù)都是現(xiàn)在用處理,按月因?yàn)閿?shù)據(jù)量大,一個(gè)差不多有百萬(wàn)數(shù)據(jù),文件有接近,打開(kāi)和搜索就相當(dāng)?shù)穆?lián)想到場(chǎng)景要導(dǎo)入數(shù)據(jù),可能數(shù)據(jù)量很大,這里利用常用的一些方法比如會(huì)常有時(shí)間和內(nèi)存限制問(wèn)題下面我 場(chǎng)景和痛點(diǎn) 說(shuō)明 今天因?yàn)橐粋€(gè)老同學(xué)找我,說(shuō)自己公司的物流業(yè)務(wù)都是現(xiàn)在用excel處理,按月因?yàn)閿?shù)據(jù)量大,一個(gè)excel差不多有百萬(wàn)數(shù)據(jù),文件有接...

    dkzwm 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<