17

を使用して、Excel (xlsx) のセルを行ごと、列ごとにマージする必要がありますPHPExcel。以下を試しました。

$sheet->mergeCells("G".($row_count+1).":G".($row_count+4));             
$sheet->mergeCells("H".($row_count+1).":H".($row_count+4));             
$sheet->mergeCells("I".($row_count+1).":I".($row_count+4));     

変数$row_countが 25、50、75 などの予測不可能な動的値を持つ場合 (規則的なパターンはありません)。

ここに画像の説明を入力

Noteセルのすぐ下にあるように、前のスナップ ショットに示すように、セルが結合されます。これらのセルを行ごとにマージした後、次のように列ごとにマージしようとしています。

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));             

しかし、うまくいきません。Excelファイルを開こうとすると、確認を求められます(確認ボックス付き)

Excel は、'report.xlsx' に判読できないコンテンツを検出しました。このブックの内容を復元しますか? このブックの発行元が信頼できる場合は、[はい] をクリックします。

次に、Excelで行と列ごとにセルを結合する方法は?

4

6 に答える 6

24

結合には、A1:B2 のような有効なセル範囲が必要なだけなので、

$sheet->mergeCells("G".($row_count+1).":I".($row_count+1));

問題なく動作するはずです。

これが問題の原因であり、スクリプト内の他の何かではないことを証明するために、簡単なテスト ケースを試してみてください。

編集

質問を読み直した後:問題は、各行をマージしてから列ごとにマージしようとするのではなく、既にマージ範囲の一部であるセルをマージしようとしている可能性があります。一度に全範囲をマージしてみてください。

$sheet->mergeCells("G".($row_count+1).":I".($row_count+4));              
于 2012-06-06T07:54:38.947 に答える
11

セル結合にはもう 1 つの方法があります

    /**
 * Set merge on a cell range by using numeric cell coordinates
 *
 * @param   int $pColumn1   Numeric column coordinate of the first cell
 * @param   int $pRow1      Numeric row coordinate of the first cell
 * @param   int $pColumn2   Numeric column coordinate of the last cell
 * @param   int $pRow2      Numeric row coordinate of the last cell
 * @throws  Exception
 * @return PHPExcel_Worksheet
 */
     public function mergeCellsByColumnAndRow($pColumn1 = 0, $pRow1 = 1, $pColumn2 = 0, $pRow2 = 1)
于 2016-02-11T09:38:35.063 に答える