php中導(dǎo)出數(shù)據(jù)到excel時(shí)數(shù)字變?yōu)榭茖W(xué)計(jì)數(shù)的解決方法
更新時(shí)間:2013年02月03日 17:03:22 作者:
導(dǎo)出數(shù)據(jù)到excel時(shí)數(shù)字變?yōu)榭茖W(xué)計(jì)數(shù)的解決方法,有需要的朋友可以參考下
在數(shù)據(jù)導(dǎo)出到excel時(shí)數(shù)字格式不對(duì),一般分為以下兩種情況。
1、excel單元格設(shè)置長(zhǎng)度不夠
解決方法:
//在excel.php文件中
$objActSheet = $objPHPExcel->getActiveSheet();
// 設(shè)置 欄目名稱(chēng)
$objActSheet->setCellValue("b1", "卡號(hào)");
// 設(shè)置列的寬度
$objActSheet->getColumnDimension('b')->setWidth(20);//改變此處設(shè)置的長(zhǎng)度數(shù)值
2、字符被excel理解成數(shù)字了,一般就是把那個(gè)字段設(shè)置成文本 或者想辦法加入一些空格一類(lèi)的。
解決方法:
//添加數(shù)據(jù)處,主要是把要顯示數(shù)據(jù)以chunk_split()函數(shù)處理以下,此函數(shù)的具體用法可以自己查看
$objActSheet->setCellValue ( "b$i", chunk_split("123456789 ",4," ") );//當(dāng)然,如果不想讓用戶看到數(shù)字間有空格,那就把要分割的字段值設(shè)大一些,如例子中的4設(shè)為大于等于9的即可。
我導(dǎo)出EXcel的主要代碼的前面部分:
<?
if(count($data)>40000){
$filename_type='csv';
}else{
$filename_type='xls';
}
header("Content-Type: application/vnd.ms-excel");
Header("Accept-Ranges:bytes");
Header("Content-Disposition:attachment;filename=".$filename.".".$filename_type); //$filename導(dǎo)出的文件名
header("Pragma: no-cache");
header("Expires: 0");
if($filename_type=='xls'){
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name></x:Name>
<x:WorksheetOptions>
<x:DisplayGridlines/>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>';
}
后面就是以<table><tr><td></td></tr></table>的格式輸出數(shù)據(jù)
查了大半天終于查到了一點(diǎn)有用的資料,現(xiàn)在摘抄如下:
“首先,我們了解一下excel從web頁(yè)面上導(dǎo)出的原理。當(dāng)我們把這些數(shù)據(jù)發(fā)送到客戶端時(shí),我們想讓客戶端程序(瀏覽器)以excel的格式讀取它,所以把mime類(lèi)型設(shè)為:application/vnd.ms-excel,當(dāng)excel讀取文件時(shí)會(huì)以每個(gè)cell的格式呈現(xiàn)數(shù)據(jù),如果cell沒(méi)有規(guī)定的格式,則excel會(huì)以默認(rèn)的格式去呈現(xiàn)該cell的數(shù)據(jù)。這樣就給我們提供了自定義數(shù)據(jù)格式的空間,當(dāng)然我們必須使用excel支持的格式。下面就列出常用的一些格式:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 數(shù)字:vnd.ms-excel.numberformat:#,##0.00
4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
這些格式你也可以自定義,比如年月你可以定義為:yy-mm等等。那么知道了這些格式,怎么去把這些格式添加到cell中呢?很簡(jiǎn)單,我們只需要把樣式添加到對(duì)應(yīng)的標(biāo)簽對(duì)(即閉合標(biāo)簽)即可。如<td></td>,給標(biāo)簽對(duì)<td></td>添加樣式,如下: <td style="vnd.ms-excel.numberformat:@">410522198402161833</td>
同樣,我們也可以給<div></div>添加樣式,也可以給<tr></tr>,<table></table>添加樣式;當(dāng)我們?cè)诟笜?biāo)簽對(duì)和子標(biāo)簽對(duì)都添加樣式時(shí),數(shù)據(jù)會(huì)以哪一個(gè)樣式呈現(xiàn)呢?經(jīng)過(guò)測(cè)試,會(huì)以離數(shù)據(jù)最近的樣式呈現(xiàn).
1、excel單元格設(shè)置長(zhǎng)度不夠
解決方法:
復(fù)制代碼 代碼如下:
//在excel.php文件中
$objActSheet = $objPHPExcel->getActiveSheet();
// 設(shè)置 欄目名稱(chēng)
$objActSheet->setCellValue("b1", "卡號(hào)");
// 設(shè)置列的寬度
$objActSheet->getColumnDimension('b')->setWidth(20);//改變此處設(shè)置的長(zhǎng)度數(shù)值
2、字符被excel理解成數(shù)字了,一般就是把那個(gè)字段設(shè)置成文本 或者想辦法加入一些空格一類(lèi)的。
解決方法:
復(fù)制代碼 代碼如下:
//添加數(shù)據(jù)處,主要是把要顯示數(shù)據(jù)以chunk_split()函數(shù)處理以下,此函數(shù)的具體用法可以自己查看
$objActSheet->setCellValue ( "b$i", chunk_split("123456789 ",4," ") );//當(dāng)然,如果不想讓用戶看到數(shù)字間有空格,那就把要分割的字段值設(shè)大一些,如例子中的4設(shè)為大于等于9的即可。
我導(dǎo)出EXcel的主要代碼的前面部分:
復(fù)制代碼 代碼如下:
<?
if(count($data)>40000){
$filename_type='csv';
}else{
$filename_type='xls';
}
header("Content-Type: application/vnd.ms-excel");
Header("Accept-Ranges:bytes");
Header("Content-Disposition:attachment;filename=".$filename.".".$filename_type); //$filename導(dǎo)出的文件名
header("Pragma: no-cache");
header("Expires: 0");
if($filename_type=='xls'){
echo '<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="expires" content="Mon, 06 Jan 1999 00:00:01 GMT">
<meta http-equiv=Content-Type content="text/html; charset=gb2312">
<!--[if gte mso 9]><xml>
<x:ExcelWorkbook>
<x:ExcelWorksheets>
<x:ExcelWorksheet>
<x:Name></x:Name>
<x:WorksheetOptions>
<x:DisplayGridlines/>
</x:WorksheetOptions>
</x:ExcelWorksheet>
</x:ExcelWorksheets>
</x:ExcelWorkbook>
</xml><![endif]-->
</head>';
}
后面就是以<table><tr><td></td></tr></table>的格式輸出數(shù)據(jù)
查了大半天終于查到了一點(diǎn)有用的資料,現(xiàn)在摘抄如下:
“首先,我們了解一下excel從web頁(yè)面上導(dǎo)出的原理。當(dāng)我們把這些數(shù)據(jù)發(fā)送到客戶端時(shí),我們想讓客戶端程序(瀏覽器)以excel的格式讀取它,所以把mime類(lèi)型設(shè)為:application/vnd.ms-excel,當(dāng)excel讀取文件時(shí)會(huì)以每個(gè)cell的格式呈現(xiàn)數(shù)據(jù),如果cell沒(méi)有規(guī)定的格式,則excel會(huì)以默認(rèn)的格式去呈現(xiàn)該cell的數(shù)據(jù)。這樣就給我們提供了自定義數(shù)據(jù)格式的空間,當(dāng)然我們必須使用excel支持的格式。下面就列出常用的一些格式:
1) 文本:vnd.ms-excel.numberformat:@
2) 日期:vnd.ms-excel.numberformat:yyyy/mm/dd
3) 數(shù)字:vnd.ms-excel.numberformat:#,##0.00
4) 貨幣:vnd.ms-excel.numberformat:¥#,##0.00
5) 百分比:vnd.ms-excel.numberformat: #0.00%
這些格式你也可以自定義,比如年月你可以定義為:yy-mm等等。那么知道了這些格式,怎么去把這些格式添加到cell中呢?很簡(jiǎn)單,我們只需要把樣式添加到對(duì)應(yīng)的標(biāo)簽對(duì)(即閉合標(biāo)簽)即可。如<td></td>,給標(biāo)簽對(duì)<td></td>添加樣式,如下: <td style="vnd.ms-excel.numberformat:@">410522198402161833</td>
同樣,我們也可以給<div></div>添加樣式,也可以給<tr></tr>,<table></table>添加樣式;當(dāng)我們?cè)诟笜?biāo)簽對(duì)和子標(biāo)簽對(duì)都添加樣式時(shí),數(shù)據(jù)會(huì)以哪一個(gè)樣式呈現(xiàn)呢?經(jīng)過(guò)測(cè)試,會(huì)以離數(shù)據(jù)最近的樣式呈現(xiàn).
您可能感興趣的文章:
- PHP讀取Excel內(nèi)的圖片(phpspreadsheet和PHPExcel擴(kuò)展庫(kù))
- 利用phpExcel實(shí)現(xiàn)Excel數(shù)據(jù)的導(dǎo)入導(dǎo)出(全步驟詳細(xì)解析)
- PHPExcel讀取Excel文件的實(shí)現(xiàn)代碼
- PHP導(dǎo)入Excel到MySQL的方法
- php讀取EXCEL文件 php excelreader讀取excel文件
- php導(dǎo)入導(dǎo)出excel實(shí)例
- ThinkPHP使用PHPExcel實(shí)現(xiàn)Excel數(shù)據(jù)導(dǎo)入導(dǎo)出完整實(shí)例
- php中使用PHPExcel讀寫(xiě)excel(xls)文件的方法
- php生成excel文件的簡(jiǎn)單方法
- phpExcel導(dǎo)出大量數(shù)據(jù)出現(xiàn)內(nèi)存溢出錯(cuò)誤的解決方法
- PHP上傳Excel文件導(dǎo)入數(shù)據(jù)到MySQL數(shù)據(jù)庫(kù)示例
- 基于PHPExcel的常用方法總結(jié)
- PHP使用PhpSpreadsheet操作Excel實(shí)例詳解
相關(guān)文章
Zend Studio for Eclipse的java.lang.NullPointerException錯(cuò)誤的解決方
Zend Studio for Eclipse 6.x 可以算得上是最好的PHP的IDE了.2008-12-12防止本地用戶用fsockopen DDOS攻擊對(duì)策
php腳本中的 fsockopen 函數(shù),對(duì)外部地址,通過(guò)UDP發(fā)送大量的數(shù)據(jù)包,攻擊對(duì)方2011-11-11php遞歸實(shí)現(xiàn)無(wú)限分類(lèi)的方法
這篇文章主要介紹了php遞歸實(shí)現(xiàn)無(wú)限分類(lèi)的方法,涉及php遞歸遍歷的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07PHP設(shè)計(jì)模式之注冊(cè)樹(shù)模式分析
這篇文章主要介紹了PHP設(shè)計(jì)模式之注冊(cè)樹(shù)模式,結(jié)合實(shí)例形式詳細(xì)分析了注冊(cè)樹(shù)模式的概念、原理、實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下2018-01-01PHP生成圖像驗(yàn)證碼的方法小結(jié)(2種方法)
這篇文章主要介紹了PHP生成圖像驗(yàn)證碼的方法,結(jié)合實(shí)例形式分析了加法運(yùn)算驗(yàn)證碼與字符驗(yàn)證碼2種方法供大家參考借鑒,需要的朋友可以參考下2016-07-07兩種設(shè)置php載入頁(yè)面時(shí)編碼的方法
設(shè)置php頁(yè)面編碼的方法有兩種,一是輸出meta標(biāo)簽,二是使用header函數(shù),下面為大家詳細(xì)介紹下2014-07-07PHP 中的面向?qū)ο缶幊蹋和ㄏ虼笮?PHP 工程的辦法
PHP 中的面向?qū)ο缶幊蹋和ㄏ虼笮?PHP 工程的辦法...2006-12-12