2015-06-24 46 views
0

我正在使用phpExcel建立一個excel文件。我填充所有需要的單元格,最後我在excel文件上設置了一些格式。我正在做的事情之一是調整單元格寬度,但我得到了一個奇怪的結果。沒有列設置爲正確的寬度。有些設置爲更大的寬度,另一個設置爲原始寬度。我不會在任何地方使用粗體字體,只在第一行使用一些背景顏色。 這是我格式化實際代碼:phpExcel不設置列寬自動

$header = 'A1:EK1'; 
$ews->getStyle($header)->getFill()->setFillType(\PHPExcel_Style_Fill::FILL_SOLID)->getStartColor()->setARGB('ff00008b'); 
$style = array(
    'font' => array('bold' => false, 
     'color' => array('rgb' => 'FFFFFF'), 
     'size' => 12, 
     'name' => 'Verdana'), 
    'alignment' => array('horizontal' => \PHPExcel_Style_Alignment::HORIZONTAL_CENTER,), 
    ); 
$ews->getStyle($header)->applyFromArray($style); 
for ($col = ord('A'); $col <= ord('HK'); $col++) 
{ 
    $ews->getColumnDimension(chr($col))->setAutoSize(true); 
} 

我有一看這麼多的問題和GOOGLE了一下,但我只在CSV文件的情況下(我的是一個XLSX)或粗體發現的問題(我根本沒有)。由於我仍然在學習這個庫的工作方式,所以我正在尋找一些幫助

回答

1

如果一列設置爲AutoSize,PHPExcel會嘗試根據列的計算值計算列寬(因此任何公式)以及格式掩碼(例如千分隔符)添加的任何其他字符。

默認情況下,這是一個estimated寬度:基於使用GD,可以使用更精確的計算方法,GD也可以處理粗體和斜體等字體樣式特徵;但是這是一個更大的開銷,所以它默認關閉。您可以啓用使用

PHPExcel_Shared_Font::setAutoSizeMethod(PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT); 

然而,更精確的計算,自動調整並不適用於所有的作家的格式,... CSV文件不支持任何格式,不僅僅是數據,所以列的寬度(被格式化)不能當您編寫CSV文件時應用

+0

謝謝。我知道!正如你在問題中看到的,我正在寫一個xlsx –

+0

你能幫助我如何啓用它嗎?我不喜歡OOP :) –