簡體   English   中英

phpExcel列大小問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM