999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

利用PHPExcel類實現Excel數據批量操作

2015-04-16 01:30:08胡必波
電腦與電信 2015年9期
關鍵詞:數據庫

胡必波

(廣州工商學院,廣東 廣州 510850)

1 引言

為滿足廣大師生的報修需求,我院后勤集團與信息化處整合了水、電、暖、網絡、固定電話、一卡通等維修類別中師生報修率最高的若干報修項目,推出了校園一站式服務網上“報修投訴平臺”,簡化了以往需要向不同單位申報故障的繁瑣過程,報修申請人只需登錄平臺,進入“我要報修”頁面,填寫信息申請報修。該系統中學生報修信息由一站式服務中心的管理人員以Excel表格的形式提供。本系統采用PHP+MySQL作為開發平臺,開發過程中MySQL數據庫與Excel表有進行導入導出等交互的開發需求。為此我們選用了微軟公司提供的類庫PHPExcel。本文就PHPExcel類庫中有關Excel導入數據庫及將數據庫中的內容導出的實現思路分別作介紹。

2 PHPExcel概述

PHPExcel是用來操作Office Excel文檔的一個PHP類庫,它基于微軟的OpenXML標準和PHP語言。可以使用它來讀取、寫入不同格式的電子表格,如Excel(BIFF).xls、Excel 2007(OfficeOpenXML).xlsx、CSV、Gnumeric、PDF、HTML等。更難得的是還可以在Excel中設置圖片、表格、字體大小、顏色等非常具體的格式。PHPExcel目前最高版本為1.8.0。

3 PHPExcel原理

圖1 PHPExcel基本架構

如圖1所示,PHPExcel在內存中是將數據以電子表格的形式來呈現的,我們只要編寫前端代碼調用PHPExcel對象模型,就可以很方便地創建一個Web電子表格。和我們使用桌面電子表格軟件一樣,PHPExcel所創建的電子表格包含一個或多個工作表,工作表的單元格又包含數據、公式、圖像等。

4 一站式服務系統中Excel批量數據操作功能實現

4.1 數據導入功能的實現

以網絡端口保修數據導出為例。該功能的實現是將網絡端口保修數據導入到MySQL中,將Excel表格中的數據導入數據庫使用的是PHPExcel類庫中的類PHPExcel_Reader_Excel5。具體的實現思路為首先創建PHPExcel_Reader_Excel5的對象$objReader,然后調用它的setReadDataOnly方法設置數據源為可讀,接著調用它的load方法設置要導入的Excel文件,最后通過調用getCellByColumnAndRow方法從Excel獲取數據并將數據插入到數據庫中。

4.2 數據導出功能的實現

該功能的實現是將某階段內的歷史數據從數據庫中導出到指定的Excel表格中。首先通過調用PHPExcel類庫中的PHPExcel類創建Excel文件,并通過調用其方法設置文檔屬性以及Sheet索引。然后通過調用活動單元格對象的方法setCellValue在表格的第一行設置字段名稱。最后通過調用數據庫的數據將數據寫入Excel文件,寫入方法同樣使用的是setCellValue方法。運行效果如圖2所示。

圖2 從一站式服務系統導出的報修數據

實現功能的核心代碼如下:

//生成數據

$column=2;

$objActSheet=$objPHPExcel->getActiveSheet();

foreach($data as$key=> $rows){//行寫入

$span=ord("B");

foreach($rows as$keyName=>$value){//列寫入

$j=getExcelColumnValue($span-65);

$objActSheet->setCellValue("A".$column,$column-1);

$objActSheet->setCellValue($j.$column,$value);

$span++;

4.3 經驗與技巧

4.3.1 亂碼的處理

(1)解決生成文件名的導出Excel亂碼

亂碼原因:客戶使用的中文版Windows系統平臺,Windows平臺的文件名編碼為gb2312(gbk),而我們網頁編碼一般都采用utf-8(國際化)編碼,這時當我們:header("Content-Disposition∶inline;filename="".$filename.".xls"")時就會出現亂碼,假如你的網頁編碼就是gb2312那就不用考慮編碼問題了。

解決辦法:對$filename轉碼,執行:iconv('utf-8","gb2312",$filename)。假如你的環境不支持iconv函數可以換別的函數,只要能將$filename的編碼轉為gbk就行。但是這樣問題又會來了,linux用戶又會出現文件名亂碼(因為linux平臺文件名不是gbk編碼)。考慮到這個問題采用兩個辦法:第一,放棄一部分客戶,畢竟windows系統用戶占絕大部分;第二,像gmail一樣,提供兩個下載地址:一個文件名gbk編碼,一個文件名utf-8編碼。

(2)解決Excel內數據的亂碼

PHP導出Excel亂碼的原因:網頁編碼與Excel編碼不一致。

解決辦法:定義Excel的字符集:header("Content-Type∶application/vnd.ms-excel;charset=UTF-8"),讓其與你的網頁編碼一致即可解決Excel內數據亂碼的問題。

PHPExcel導出到xls文件的時候出現內存亂碼,解決代碼如下:ob_end_clean();//清除緩沖區,避免亂碼,通過這個函數清除緩沖區,避免不必要的數據干擾生成的Excel文件導致Excel文件打不開。

4.3.2 分頁導出

實現分頁導出的思路是進入導出頁面時,傳遞查詢相關的參數。導出頁面再做相關的分頁查詢處理。

<li><a href="simple-download-xls.php?xiaoqu=<?php echo$GLOBALS['xiaoqu_query'];?>

&name=<?php echo$GLOBALS['name_query'];?>&start=<?php echo$start_row;?>">導出數據</a></li>

4.3.3 內存溢出

云平臺下使用PHPExcel進行excel數據批量導入,小數據量下測試都沒有問題,可是一到正式環境下,數據超過千條(一行十列為一條數據),就報內存溢出。在不進行特殊設置的情況下,PHPExcel將讀取的單元格信息保存在內存中,我 們 可 以 通 過 代 碼 PHPExcel_Settings∶setCacheStorage-Method()來設置不同的緩存方式,已達到降低內存消耗的目的。可采用的處理方式如下:

(1)將單元格數據序列化后保存在內存中

PHPExcel_CachedObjectStorageFactory∶cache_in_memory_serialized;

(2)將單元格序列化后再進行Gzip壓縮,然后保存在內存中

PHPExcel_CachedObjectStorageFactory∶cache_in_memory_gzip;

(3)緩存在臨時的磁盤文件中,速度可能會慢一些

PHPExcel_CachedObjectStorageFactory∶cache_to_dis -cISAM;

(4)保存在php∶//temp

PHPExcel_CachedObjectStorageFactory∶cache_to_php -Temp;

(5)保存在memcache中

PHPExcel_CachedObjectStorageFactory∶cache_to_memcache

這里限于篇幅不再展開論述。

5 結語

本文以實際項目校園一站式服務系統導出的Excel表為計算基礎,介紹了PHPExcel的基本原理,分析了一站式服務系統中Excel批量數據導入導出的實現思路。并以導出具體操作為例,給出了實現其功能的相關算法。在項目實施過程中,針對可能出現的導出文件亂碼問題、內存溢出問題,進行了分析和研究,并提出了相應的解決辦法。在此基礎上還進行了功能拓展,介紹了實現分頁批量導出Excel表數據技巧。在此應用基礎上,還需要進一步研究的問題有:優化Excel批量數據導出效果,提高導出文件美化效果。

[1]鄭阿奇.PHP實用教程(第2版)[M].北京:電子工業出版社,2014.

[2]唐俊.PHP+MySQL網站開發技術(項目式)[M].北京:人民郵電出版社,2013.

[3]Maarten Balliauw,Mark Baker.PHPExcel developer documentation.2014.

[4]丁月光.PHPExcel文件讀寫[J].電腦編程技巧與維護,2013,(9):14-18.

猜你喜歡
數據庫
數據庫
財經(2017年15期)2017-07-03 22:40:49
數據庫
財經(2017年2期)2017-03-10 14:35:35
兩種新的非確定數據庫上的Top-K查詢
數據庫
財經(2016年15期)2016-06-03 07:38:02
數據庫
財經(2016年3期)2016-03-07 07:44:46
數據庫
財經(2016年6期)2016-02-24 07:41:51
數據庫
財經(2015年3期)2015-06-09 17:41:31
數據庫
財經(2014年21期)2014-08-18 01:50:18
數據庫
財經(2014年6期)2014-03-12 08:28:19
數據庫
財經(2013年6期)2013-04-29 17:59:30
主站蜘蛛池模板: 亚洲免费成人网| 国产青榴视频| 国产精品久久久久婷婷五月| 亚洲区欧美区| 高清无码不卡视频| 黄色一级视频欧美| 欧美成人a∨视频免费观看| 欧美精品v| 欧美日韩另类国产| 久夜色精品国产噜噜| 国产真实二区一区在线亚洲| 国产一区在线视频观看| 国产欧美日韩18| 制服丝袜一区| 99ri精品视频在线观看播放| 色窝窝免费一区二区三区| 国产99精品久久| 91成人免费观看| 午夜综合网| 999福利激情视频| 精品视频第一页| 亚卅精品无码久久毛片乌克兰| 99视频精品在线观看| 亚洲欧美极品| 欧美全免费aaaaaa特黄在线| 国产免费人成视频网| 第一区免费在线观看| 国产剧情伊人| 色色中文字幕| 国产va在线观看| 无套av在线| 欧美日韩国产高清一区二区三区| 韩日午夜在线资源一区二区| 国产欧美自拍视频| 久久综合成人| 少妇精品在线| 国产精品永久在线| 日韩无码真实干出血视频| 91 九色视频丝袜| 香蕉色综合| 国产AV无码专区亚洲A∨毛片| 亚洲中文字幕av无码区| 91免费精品国偷自产在线在线| 国产草草影院18成年视频| 日韩乱码免费一区二区三区| 亚洲无码高清免费视频亚洲 | 一级成人a做片免费| www.亚洲色图.com| 乱码国产乱码精品精在线播放| 99精品免费欧美成人小视频| 新SSS无码手机在线观看| 这里只有精品在线播放| 国产精品私拍99pans大尺度| 久久婷婷综合色一区二区| 欧美在线国产| av尤物免费在线观看| 久久人人97超碰人人澡爱香蕉| 毛片免费在线| 萌白酱国产一区二区| 2021天堂在线亚洲精品专区| 国产女同自拍视频| 国产尤物在线播放| 97久久精品人人| 免费无码AV片在线观看中文| 无码免费的亚洲视频| 久久久无码人妻精品无码| 伊人久久久久久久| 亚洲 欧美 日韩综合一区| 暴力调教一区二区三区| 亚洲一区二区约美女探花| 成人小视频网| 亚洲成a人片77777在线播放| 91丝袜乱伦| 国产在线小视频| 国产乱子伦视频在线播放| 国产成人一区免费观看| 色婷婷色丁香| 久久综合伊人77777| 国产黄在线免费观看| 幺女国产一级毛片| 亚洲成A人V欧美综合天堂| 福利姬国产精品一区在线|