Скажем, у меня есть эта таблица в базе данных SQL:
+---------------+-----------------+-----------------+
| category | name | month |
+---------------+-----------------+-----------------+
| Fruit | Mango |January |
| Fruit | Apple |January |
| Fruit | Grape |February |
| Vegetable | Tommato |February |
| Vegetable | Cuccumber |March |
| Animal | Chicken |March |
+---------------+-----------------+-----------------+
, тогда я хотел бы динамически выводить файл Excel с использованием PHPExcel, что-то вроде этого:
поэтому, поскольку он динамический c, при каждом обновлении базы данных вывод Excel будет следующим: Обновление SqlTable:
+---------------+-----------------+-----------------+
| category | name | month |
+---------------+-----------------+-----------------+
| Fruit | Mango |January |
| Fruit | Apple |January |
| Fruit | Grape |February |
| Vegetable | Tommato |February |
| Vegetable | Cuccumber |March |
| Animal | Chicken |March |
| Vegetable | Onion |April |
| Animal | Fish |April |
+---------------+-----------------+-----------------+
Возможно ли это сделать с помощью phpExcel?
что я пробовал:
public function excel()
{
$spreadsheet = new Spreadsheet();
$month = $this->db
->select('month')
->distinct('category,name')
->order_by('category,name')
->get('mytable')->result_array();
$data = $this->db
->select('category,name')
->order_by('category,name')
->get('mytable')->result_array();
$col_data = 'b';
$row_category = 1;
$row_name = 2;
foreach ($data as $d) {
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue($col_data.$row_category, $d['category']);
$sheet->setCellValue($col_data.$row_name, $d['name']);
$col_data++;
}
$col_month = 'a';
$row_month = 3;
foreach ($month as $m) {
$sheet = $spreadsheet->getActiveSheet();
$sheet->setCellValue($col_month.$row_month, $m['month']);
$row_month++;
}
$writer = new Xlsx($spreadsheet);
$writer->save('hello world.xlsx');
}
Результат был такой:
Пожалуйста, дайте мне знать, как это сделать