[英]phpExcel column size issues
我想確保在phpExcel生成的工作簿中沒有切斷任何值。 要做到這一點,我打電話
$oCurrentSheet->getColumnDimension($aCurrentCoords['x'])->setAutoSize(true);
每次我寫一個單元格。 這似乎不起作用:許多列最終都很小。
有誰知道如何確保輸出的excel工作簿中的每一列都根據其內容確定大小?
每次寫單元格時都不要這樣做......這是不必要的開銷。 每列只做一次。
請注意,保存時它仍然很昂貴,因為PHPExcel然后遍歷該列中的每個單元格,根據該單元格的內容計算出必要的寬度,同時考慮公式計算和格式,並使用其中任何單元格的最大大小柱。 即使這樣,它也不是一個完美的解決方案:默認行為是估計,計算要顯示的字符數,並使用基於字體的通用乘數(Arial,Verdana of Calibri)和一點點填充。 為了更准確的計算,您可以更改用於計算的方法,然后代碼使用GD構建ttf邊界框並將單元格大小基於該框的尺寸。 這是一個更准確的計算,但速度要慢得多。
您可以使用以下方法更改計算方法:
PHPExcel_Shared_Font::setAutoSizeMethod($method);
在保存之前,其中$ method是以下之一:
PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX
PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT
這仍然不是一個完美的解決方案,但它是PHPExcel可以做的最佳計算。
另一種方法是在保存之前直接自己調用工作表的calculateColumnWidths()方法...然后遍歷每個列的維度,將值增加5%,以便在保存之前嘗試確保整個列適合。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.