我使用PHPDocx(免费版)在PHP中动态创建一个msword文档。
我无法在页面中找到一个居中对齐的表格。我试过传递documentation中所述的样式参数,但没有快乐。
有关如何解决此问题的任何想法?
我目前的代码是;
$docx = new CreateDocx();
$valuesTable = array(
array(
11,
12
),
array(
21,
22
),
);
$paramsTable = array(
'jc' => 'center',
'border' => 'single',
'border_sz' => 20
);
$docx->addTable($valuesTable, $paramsTable);
$docx->createDocx('example_table');
答案 0 :(得分:0)
我遇到了同样的问题。如果您查看CreateTable源,您可以看到从不调用对齐generateJC()的方法,因此传递'jc'参数无效(这与大多数选项相同)。
您可以覆盖此项,创建一个新类,如:
class SmCreateTable extends CreateTable{
public function createTable()
{
$this->_xml = '';
$args = func_get_args();
if (is_array($args[0])) {
$this->generateTBL();
$this->generateTBLPR();
if(!empty($args[1]['jc'])){
$this->generateJC($args[1]['jc']);
}
$this->generateTBLW();
if (!empty($args[1]['border'])) {
$this->generateTBLBORDERS();
$this->generateTBLBOTTOM();
$this->generateTBLLEFT();
$this->generateTBLTOP();
$this->generateTBLRIGHT();
$this->generateTBLINSIDEH();
$this->generateTBLINSIDEV();
}
$this->generateTBLLOOK();
$this->generateTBLOVERLAP();
$intLine = 0;
foreach ($args[0] as $datDepth) {
$this->generateTR();
$intLine++;
foreach ($datDepth as $cont) {
$this->generateTC();
$this->generateP();
$this->generateR();
if ($args[1]['font'] != '') {
$this->generateRPR();
$this->generateRFONTS($args[1]['font']);
}
$this->generateT($cont);
}
$this->cleanTemplateR();
}
}
}
private function cleanTemplateR()
{
$this->_xml = preg_replace('/__GENERATETR__/', '', $this->_xml);
}
}
然后致电:
$table = new SmCreateTable();
$table->createTable($valuesTable, $paramsTable);