2012-04-01 27 views
7

hiçbir değer phpExcel tarafından üretilen bir çalışma kitabında kesilmiş olduğundan emin olmak verir. Bunu yapmak için, bir hücre yazdığım her seferdephpExcel sütun boyutu

'u ararım. Bu işe görünmüyor: Birçok kolonlar gerçekten küçük sonunda.

herkes kendi içeriğine göre emin outputted excel çalışma kitabındaki her sütun boyutlandırılır nasıl biliyor mu?

cevap

12

bir hücre yazmak bu her zaman yapmayın ... Bu gereksiz bir havai bu. Her sütun için sadece bir kez yapın.

Uyarı, tasarruf sırasında hala pahalıdır, çünkü PHPExcel, o hücrenin içeriğine göre gerekli genişliği çalıştıran, bu hesaplamanın formülünü ve biçimlendirmesini göz önünde bulundurarak ve maksimum boyutu kullanarak, o sütundaki her hücreyi gezer. Bu sütundaki herhangi bir hücre. Hatta daha sonra mükemmel bir çözüm değildir: varsayılan davranış gösterilecek karakter sayısını sayma ve yazı dayalı bir jenerik çarpanı (Arial, Calibri ait Verdana) ve dolgu biraz kullanarak, tahmin etmektir. daha doğru bir hesaplaması için, hesaplama için kullanılan yöntemi değiştirebilir ve kodu daha sonra bir ttf sınırlayıcı kutusu oluşturmak ve bu kutunun boyutları hücre boyutu temel için GD kullanır. Bu daha doğru bir hesaplama, ama çok daha yavaş. $ Yöntemi aşağıdakilerden biri olduğu, kaydetmeden önce

PHPExcel_Shared_Font::setAutoSizeMethod($method); 

:

kullanarak hesaplama yöntemini değiştirebilir

PHPExcel_Shared_Font::AUTOSIZE_METHOD_APPROX 
PHPExcel_Shared_Font::AUTOSIZE_METHOD_EXACT 

Bu hala mükemmel bir çözüm değildir, ama bu PHPExcel'in yapabileceği en iyi hesaplama.

Bir alternatif, kaydetmeden önce çalışma sayfasının hesaplamak için CalculateColumnWidths() yöntemini doğrudan kendiniz çağırmanız ... ve daha sonra, kaydetmeden önce sütunun tamamının sığmaya çalıştığından emin olmak için değeri her 5 saniyede artırarak her bir sütunun boyutu boyunca yürümektir.