台灣最大程式設計社群網站
線上人數
777
 
會員總數:246698
討論主題:190110
歡迎您免費加入會員
討論區列表 >> PHP >> phpexcel 自動欄寬的問題
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
phpexcel 自動欄寬的問題
價值 : 100 QP  點閱數:11187 回應數:10
樓主

阿潘
初學者
30 7
233 15
發送站內信

捐贈 VP 給 阿潘
foreach($title as $key => $value){
$objPHPExcel->getActiveSheet()->getColumnDimension(chr($i))->setAutoSize(true);
}

我把每個欄位都自動欄寬了,但是碰到中文就無法使用,有人遇到這種問題嗎?


搜尋相關Tags的文章: [ excel ] ,
本篇文章發表於2010-12-22 16:01
== 簽名檔 ==
我的網誌:http://web-aqp.blogspot.com/
1樓
回應

eva3223
檢舉此回應
您好啊
最近也在用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樓
作者回應

阿潘
捐贈 VP 給 阿潘 檢舉此回應
可是我存在陣列就可以咧~

$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樓
作者回應

阿潘
捐贈 VP 給 阿潘 檢舉此回應
我忘了寫中文進去,我是可以的~
本篇文章回覆於2010-12-22 17:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

eva3223
檢舉此回應
恩恩

還沒試到陣列……

小弟測的方法是
$name= $row_Recordset3['name'];

setCellValue('A1', "$name")

這樣$name的中文字就出不來了


小弟之後也會用陣列的說……

但在中文字就卡關了……
本篇文章回覆於2010-12-22 17:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

eva3223
檢舉此回應
小弟試了用陣列存中文字……中文字也是出不來……
本篇文章回覆於2010-12-23 10:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

eva3223
檢舉此回應
$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樓
作者回應

阿潘
捐贈 VP 給 阿潘 檢舉此回應
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樓
回應

eva3223
檢舉此回應
恩恩

回的有點偏了

不好意思

那依您的欄寬設定方式後…

中文字就會正常出現了?

目前還是跟phpexcel奮鬥

請您不要見怪。

還請您多請教。

謝謝。
本篇文章回覆於2010-12-23 14:42
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

阿潘
捐贈 VP 給 阿潘 檢舉此回應


中文顯示完全可以出現, 欄寬還是要自己設定.
本篇文章回覆於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
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.