3

PHPExcel で作成しているドキュメントのセル幅をフォーマットしようとしていますが、getColumnDimension('A')->setWidth(7) メソッドを使用すると、生成された xlsx ファイルで正確に生成されません。

必要なセルの値を見つけることができるようにドキュメントを Excel で書式設定し、2 つの値 (1 つは Excel 単位、もう 1 つはインチ) を取得します。

例えば:

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('7');

7ではなく6.17の列幅が得られます。すでに文字列とint値の両方を使用してみましたが、何も変わりません。何か案は?

4

4 に答える 4

16

これは、MS Excelが図自体を独自の内部単位に調整するためです。これを説明する開発者向けドキュメント(セクション4.6.28、「列の幅の設定」というタイトル)にセクション全体があります。

そのセクションのサイドバーからの引用:

PHPExcelの列幅の測定値は、MicrosoftOfficeExcelで使用されている測定値と正確には対応していません。Excelでは列幅を処理するのが難しく、列幅にはいくつかの基準があります。

  1. 文字単位の内側の幅(たとえば、8.43これはおそらくExcelでよく知っているものです)
  2. 全幅(ピクセル単位)(例:64ピクセル)
  3. 文字単位の全幅(例:9.140625、値-1は未設定の幅を示します)

PHPExcelは常に3)「文字単位の全幅」で動作します。これは実際にはExcelファイルに保存される唯一の値であるため、最も信頼性の高い測定値です。残念ながら、MicrosoftOfficeExcelはこの対策を提供していません。代わりに、メジャー1)と2)は、ファイルが開かれたときにアプリケーションによって計算され、これらの値はさまざまなダイアログとツールのヒントに表示されます。

文字幅の単位は、ワークブックのデフォルトフォントの「0」(ゼロ)グリフの幅です。したがって、2つの異なるワークブックの文字単位で測定された列幅は、それらが同じデフォルトのワークブックフォントを持っている場合にのみ比較できます。

Excelファイルがあり、メジャー3)の列幅を知る必要がある場合は、PHPExcelを使用してExcelファイルを読み取り、取得した値をエコーすることができます。

(太字で強調)

于 2013-01-04T17:51:00.590 に答える
0

Excel セルの幅の値に 0.71 を追加し、その値を

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

例: A 列幅 = 3.71 (Excel 値)

列幅を与える= 4.42

同じセル幅の出力ファイルが得られます。

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(4.42);
于 2015-02-08T21:10:38.203 に答える
-4

これを試してください:-幅を設定する前に行の下に追加します:-

$objPHPExcel->setActiveSheetIndex(0);
于 2013-01-04T17:40:45.937 に答える