【问题标题】:PHP_XLSXWriter muti-lines header issuePHP_XLSXWriter 多行标题问题
【发布时间】:2019-03-28 18:10:48
【问题描述】:

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

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

【问题讨论】:

  • 能否请您说明您想要做什么。向我们展示你已经完成的代码 - 尝试过,预期的输出会很有用。花更多的时间问一个问题,而不是大致写下你想要的。

标签: php der


【解决方案1】:

我通过创建我命名的 writeSheetRow 方法的修改版本找到了解决方案:writeSheetRowHeader。 在这个新方法中,我将通过此方法插入的值的类型强制为“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++;
        }
.....
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-05-13
    • 2012-07-24
    • 2012-07-06
    • 1970-01-01
    相关资源
    最近更新 更多