当与excel的Opentbs合并时,我注意到,当用数据填充行时,Excel模板中的行占位符下方的合并单元格不会被推下。相反,它是...

问题描述 投票:0回答:0

已编辑: enter image description here为清晰度添加代码。我实际上将opentbs公共演示样本用于XLSX,因为我想知道该问题是否可以重现,并且是。 都可以在此处找到所有演示材料,只需选择XLSX模板,您就可以下载模板和PHP代码:

Https://www.tinybutstrong.com/opentbs.php?demo

基本上只是一个常规的合并行情况,这是我们一行编写占位符的地方,希望它会被我们的数据阵列填充。这是模板

当您在图片中注意到,我添加了一个位于单元格22D中的合并列,在我们的数据占位符下方仅两个行。 然后,然后运行PHP代码合并我的数据,XSLX

的OPENTBS演示是相同的 // A recordset for merging tables $data = array(); $data[] = array('rank' => 'A', 'firstname' => 'Sandra', 'name' => 'Hill', 'number' => '1523d', 'score' => 200, 'visits' => 15, 'email_1' => '[email protected]', 'email_2' => '[email protected]', 'email_3' => '[email protected]'); $data[] = array('rank' => 'A', 'firstname' => 'Roger', 'name' => 'Smith', 'number' => '1234f', 'score' => 800, 'visits' => 33, 'email_1' => '[email protected]', 'email_2' => '[email protected]', 'email_3' => '[email protected]'); $data[] = array('rank' => 'B', 'firstname' => 'William', 'name' => 'Mac Dowell', 'number' => '5491y', 'score' => 130, 'visits' => 16, 'email_1' => '[email protected]', 'email_2' => '[email protected]', 'email_3' => '[email protected]'); // Merge data in the first sheet $TBS->MergeBlock('a,b', $data); enter image description here this

在这里,除了合并格式之外,我们可以看到以前位于占位符下方的所有细胞内容和格式。由于我们的数据包含3个条目,因此填充了第20至22行,并将合并的单元格内容从第22行向下推到24。此外,我们的“这是合并的列”内容并不是真正位于合并的列中。
这是预期的结果:

enter image description here

在正确的方案中,数据按原样显示,并且合并的单元格内容和格式也不变,仅从第22行到24行。希望这有助于

不幸的是,OPENTB现在无法移动合并的单元格(OpentBS版本1.12.1)。 这是因为在XLSX纸中,合并的单元格被注册为单元的属性,而是在纸数据末端作为固定的单元格列表。 因此,Opentbs遵循移动的单元格变得困难(但并非不可能)。

为此功能的等待,您可以使用此技巧手动移动合并的单元格:

$old_merged_range = 'C22:D22'; $new_merged_range = 'C24:D24'; $TBS->Source = str_replace('<mergeCell ref="' . $old_merged_range . '"/>', '<mergeCell ref="' . $new_merged_range . '"/>', $TBS->Source); enter image description here

xlsx opentbs tinybutstrong
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.