![]() ![]() ![]() ![]() |
|||||
|
|||||
樓主 阿潘 ![]()
![]() ![]() |
$objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setAutoSize(true); } 我把每個欄位都自動欄寬了,但是碰到中文就無法使用,有人遇到這種問題嗎?
搜尋相關Tags的文章:
[ excel ] ,
本篇文章發表於2010-12-22 16:01
== 簽名檔 ==
我的網誌:http://web-aqp.blogspot.com/ |
1樓 |
您好啊
最近也在用phpexcel……小小研究了一個星期…… 就在剛剛放棄了……(也許是小弟太弱了……) 餵中文進去沒辦法出現…… 如果是直接給中文的話是可以 如:$objPHPExcel->setActiveSheetIndex(0) ->setCellValue('A1', '您好') 這樣是可以,但是如果您好存在變數裡的話……是不行(小弟自行測試的結論) 爬文的結果是寫入時不支援中文(在下列分享的第一篇)……… 分享一下找到的資料…… http://blog.roodo.com/taikobo0/archives/5625521.html http://hi.baidu.com/phpdb/blog/item/e8a9e982ef3a68b46c811981.html http://bayu.freelancer.web.id/2010/07/16/phpexcel-advanced-read-write-excel-made-simple/ 還有一些……但是在寫入的部份比較有用的就是這幾篇…… 有機會可以討論一下關於phpexcel 謝謝。
本篇文章回覆於2010-12-22 16:58
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
2樓
作者回應
阿潘 ![]() ![]() |
可是我存在陣列就可以咧~
$title=array('Designer','Client','Product Class'); $i=65; foreach($title as $key => $value){ //echo $value."<br />"; $objPHPExcel->getActiveSheet()->setCellValue(chr($i)."1", $value); $objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setAutoSize(true); $i++; } 你試看看摟~
本篇文章回覆於2010-12-22 17:14
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
3樓
作者回應
阿潘 ![]() ![]() |
我忘了寫中文進去,我是可以的~
本篇文章回覆於2010-12-22 17:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
4樓 |
恩恩
還沒試到陣列…… 小弟測的方法是 $name= $row_Recordset3['name']; setCellValue('A1', "$name") 這樣$name的中文字就出不來了 小弟之後也會用陣列的說…… 但在中文字就卡關了……
本篇文章回覆於2010-12-22 17:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
5樓 |
小弟試了用陣列存中文字……中文字也是出不來……
本篇文章回覆於2010-12-23 10:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
6樓 |
$title=array(iconv("Big5","utf-8","再一次"),'test','phpexcel');
$i=65; foreach($title as $key => $value){ //echo $value."<br />"; $objPHPExcel->getActiveSheet()->setCellValue(chr($i)."1", $value); $objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setAutoSize(true); $i++; } 用了iconv去轉了以後中文出現!! 可以試試…… 中文出現在接下來就是挑戰迴圈 再次燃起用phpexcel可能 謝謝。
本篇文章回覆於2010-12-23 12:33
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
7樓
作者回應
阿潘 ![]() ![]() |
if(chr($i)=="I"){
$objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setWidth(16); //設定寬16pt }else{ $objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setAutoSize(true); } 我欄寬最後就只自己設定了
本篇文章回覆於2010-12-23 14:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
8樓 |
恩恩
回的有點偏了 不好意思 那依您的欄寬設定方式後… 中文字就會正常出現了? 目前還是跟phpexcel奮鬥 請您不要見怪。 還請您多請教。 謝謝。
本篇文章回覆於2010-12-23 14:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
9樓
作者回應
阿潘 ![]() ![]() |
中文顯示完全可以出現, 欄寬還是要自己設定.
本篇文章回覆於2010-12-23 15:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
10樓 |
我試了很久,終於找到可行的方法。
1. 必須先知道整欄的資料裡面,最多的英文或數字的個數(中文字要當作2個英文字)。 我的方法: function getTextLen($text){ //目前測試的結果,好像利用mb_strlen($str,"utf-8")判斷1個中文字 = strlen($str)判斷3個字數 //所以$n2-$n1之後要除以2才是中文字的字數($nc), 然後用$n1-$nc就可以得到英文字字數($ne) //如果以一個中文字字寬=2個英文字的字寬來處哩,總共應該有 $nc*2+$ne 個字寬 $result = 0; $str = trim($text); $n1 = mb_strlen($str,"utf-8"); $n2 = strlen($str); $nc = ($n2-$n1)/2; $ne = $n1-$nc; //echo "中文字:".$nc.", 英文字:".$ne."\n"; $result = $nc*2+$ne; return $result; } 2. 在最後一列新增一個由空字串組合的儲存格內容 $temp = ""; for($i=0;$i<$v;$i++){ $temp .= " "; } $objPHPExcel->setActiveSheetIndex($ref_SheetIndex)->setCellValue($k.$Row_no,$temp); //$k.$Row_no表示儲存格的位置 3. 這樣該欄就可以有一個儲存格可以正確顯示英文數字的內容(空字串),用來判斷【自動欄寬】 $objPHPExcel->getActiveSheet($ref_SheetIndex)->getColumnDimension($k)->setAutoSize(true);
本篇文章回覆於2021-04-17 15:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔-- |
回覆 |
如要回應,請先登入. |