讨论数量:
可以的,跟着文档过一遍。然后按照你想要的格式去合并和设置颜色就行啊。你甚至可以第一次循环data先把表格样式设置好,然后第二次循环在插入数据这样更明了
或者V我200手把手教。
----来自xlswriter的QQ群管理回答 :grin:
我是根据文档,将所有的样式设置封装成了基类,可以根据自己的需求去调用其中的方法,例如合并单元格:
// 调用时传入变量
$combine = [
['start' => 'A1', 'end' => 'H1'],
['start' => 'A2', 'end' => 'H2'],
];
// 合并单元格
$combineCount = count($combine);
for ($i = 0; $i < $combineCount; $i++) {
$objActSheet->mergeCells($combine[$i]['start'] . ':' . $combine[$i]['end']);
}
@test2018 我用的是 phpoffice/phpspreadsheet
,原理基本相近。
下面是PHP-Xlswriter合并单元格底层代码,其中value
类型为zval
,你传null
或者空字符串试试吧?
/*
* Merge cells.
*/
void merge_cells(zend_string *range, zval *value, xls_resource_write_t *res, lxw_format *format)
{
char *_range = ZSTR_VAL(range);
int error = worksheet_merge_range(res->worksheet, RANGE(_range), "", format);
// Cells that have been placed cannot be modified using optimization mode
WORKSHEET_INDEX_OUT_OF_CHANGE_IN_OPTIMIZE_EXCEPTION(res, error)
// Worksheet row or column index out of range
WORKSHEET_INDEX_OUT_OF_CHANGE_EXCEPTION(error)
// writer merge cell
type_writer(value, lxw_name_to_row(_range), lxw_name_to_col(_range), res, NULL, format);
}
推荐文章: