2017-10-12 45 views
0

我必须创建一个数据表的Excel文件,该数据表根据数据库和包含多个数据透视表的工作表具有各自的数据透视图。使用“exceldatatables”加入两张不同的工作簿

“data.xlsx”包含一张包含所有新数据的工作表。

“graph.xlsx”包含具有旧数据的工作表和带有数据透视表的工作表。

我的目标是让“graph.xlsx”包含一张包含所有新数据的工作表和包含数据透视表的工作表。

我找到了一个完美的lib做到这一点:https://github.com/svrnm/exceldatatables

但我阻止对使用它,我就开“graph.xlsx”删除其命名为“香槟数据”表,然后添加一个新的名为“brut data”的表使用“data.xlsx”中包含的新数据初始化。

要做到这一点,我从ExcelWorkbook.php中看到了这个函数。

public function addWorksheet(ExcelWorksheet $worksheet, $id = null, $name = null) 

但我不明白如何使用它。

回答

0

(我所提到的库的作者)

有你需要采取两个步骤,以实现自己的目标,首先是读data.xlsx。第二个是将这些数据写入你的graph.xlsx。该库正在解决第二步:

require_once('../vendor/autoload.php'); 
    $dataTable = new Svrnm\ExcelDataTables\ExcelDataTable(); 
    $in = 'graph.xlsx'; 
    $out = 'out.xlsx'; 
    $data = /* ... step 1 ... */ 
    $dataTable->showHeaders()->addRows($data)->attachToFile($in, $out); 

对于第1步,您可以利用PHPExcel。我没有测试过,但类似这样的:

$r = PHPExcel_IOFactory::createReader('Excel2007'); 
$data = $r->load($filename)->getActiveSheet()->toArray(null, true, true); 

还有另一种选择:你可以拆开两个graph.xlsx和data.xlsx并合并表。