PHP_XLSXWriter多行标题问题

时间:2018-10-24 10:50:06

标签: php der

我尝试使用PHP_XLSXWriter创建一个Excel文件,该文件具有2个标题(文本)行和以下各行中的数值。 我设法从php创建一个文件,该文件具有1个标头行,并带有预期的类型和样式,用于后跟行和后续数据行。可以在excel中正确打开。 当我从PHP插入带有writeSheetRow方法的第二个标题行(文本)时,excel将显示警告/错误消息并建议修复该文件。 当我接受要修复的文件时,文件内容就可以了(标题(2行)和数字数据)。 保存文件后,打开文件时不再有警告消息。 有人知道如何进行处理以避免发出初始警告消息吗? 谢谢。

更多详细信息: 该问题是由于以下事实造成的:在写入标头(使用writeSheetHeader方法的第1行)时定义了逗号类型。这将确定以下所有行(从第2行到..)的列类型。在我的情况下,第2行不是数据线。它仅包含作为第二个标题行的字符串。造成此问题的原因是,标头(数字)中定义的类型与行(sring)中的实际值之间存在冲突。

1 个答案:

答案 0 :(得分:0)

我找到了一个解决方案,方法是创建一个名为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++;
        }
.....
}