PHP_XLSXWriter muti-lines header 问题

PHP_XLSXWriter muti-lines header issue

我尝试使用 PHP_XLSXWriter 创建一个 excel 文件,其中包含 2 header(文本)行和以下行中的数值。 我设法从 php 创建一个包含 1 header 行的文件,其中包含 heder 行和后续数据行的预期类型和样式。这可以在 excel 中正确打开。 当我使用 writeSheetRow 方法从 php 插入第二个 header 行(文本)时,excel 显示 warning/error 消息并建议修复文件。 当我接受要修复的文件时,文件内容就可以了(header(2 行)和数字数据)。 保存文件后,打开文件时不再有警告信息。 有谁知道为了避免初始警告消息而继续进行的方法吗? 谢谢

更多详情: 问题是由于在编写 header(第 1 行,使用 writeSheetHeader 方法)时定义了 comumns 类型。这确定了所有后续行(从第 2 行到 ..)的列类型。在我的例子中,第 2 行不是数据线。它仅包含第二 header 行的字符串。这会导致问题,因为 header(数字)中定义的类型与行 (sring) 中的实际值之间存在冲突。

我通过创建我命名为 writeSheetRowHeader 的 writeSheetRow 方法的修改版本找到了解决方案。 在这个新方法中,我将通过此方法插入的值的类型强制为 'GENRAL'。

代替于:

public function writeSheetRow($sheet_name, array $row, $row_options=null)
{
    ....
        $c=0;
        foreach ($row as $v) {
            $number_format = $sheet->columns[$c]['number_format']; //BEFORE
            $number_format_type = $sheet->columns[$c]['number_format_type']; //BEFORE
            $cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) );
            $this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx);
            $c++;
        }
.....
}

我用

public function writeSheetRowHeader($sheet_name, array $row, $row_options=null)
{
    ....
        $c=0;
        foreach ($row as $v) {
            $number_format = 'GENERAL'; // AFTER
            $number_format_type = 'n_auto'; // AFTER
            $cell_style_idx = empty($style) ? $sheet->columns[$c]['default_cell_style'] : $this->addCellStyle( $number_format, json_encode(isset($style[0]) ? $style[$c] : $style) );
            $this->writeCell($sheet->file_writer, $sheet->row_count, $c, $v, $number_format_type, $cell_style_idx);
            $c++;
        }
.....
}