2013-07-13 1 views
1

У меня есть 2 xls, я хочу построить эту информацию на одной странице HTML.PHPExcel Mulitple excel файл в одной HTML-странице

Примечание: для предположения я упоминал как xls. фактические позиции xls уже находятся в таблице базы данных. Я просто сделаю это положение и занесение в HTML-страницу.

include_once("Classes/PHPExcel/IOFactory.php"); 
// Create new PHPExcel object 
$objPHPExcel = new PHPExcel(); 

//first excel file 


$objPHPExcel->getActiveSheet() 
      ->setCellValue('c5','10'); 
$objPHPExcel->getActiveSheet() 
      ->setCellValue('c6','20'); 
$objPHPExcel->getActiveSheet() 
      ->setCellValue('c7','30'); 
$objPHPExcel->getActiveSheet() 
      ->setCellValue('c8','40'); 


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); 

//second excel file 

$objPHPExcel->getActiveSheet() 
      ->setCellValue('c5','50'); 
$objPHPExcel->getActiveSheet() 
      ->setCellValue('c6','60'); 


$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML');   

$objWriter->save('combinedexcelpage.html'); 

ответ

1

Я не собираюсь объяснять, почему это не сработает, потому что для объяснения потребуется слишком много времени; но есть несколько решений, которые вы могли бы предпринять, чтобы достичь того, чего вы хотите:

Вариант № 1

Excel Учебное пособие включает в себя один или несколько рабочих листов, так что вы можете создать каждый «файл», как отдельный лист, а не отдельный файл.

// Create new PHPExcel object 
$objPHPExcel = new PHPExcel(); 

// First excel worksheet, (created when you instantiate a new PHPExcel object) 
$objPHPExcel->getActiveSheet() 
    ->setCellValue('c5','10'); 
$objPHPExcel->getActiveSheet() 
    ->setCellValue('c6','20'); 
$objPHPExcel->getActiveSheet() 
    ->setCellValue('c7','30'); 
$objPHPExcel->getActiveSheet() 
    ->setCellValue('c8','40'); 

// Second excel worksheet 
// Add new sheet, which should also set it as the new "active" sheet 
$objPHPExcel->createSheet() 

$objPHPExcel->getActiveSheet() 
    ->setCellValue('c5','50'); 
$objPHPExcel->getActiveSheet() 
    ->setCellValue('c6','60'); 

По умолчанию HTML Writer будет писать только один лист (первый), но вы можете установить его, чтобы написать все листы:

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); 
$objWriter->writeAllSheets(); 
$objWriter->save('combinedexcelpage.html'); 

Вариант № 2

Метод HTML Writer save() всегда генерирует поток файлов (будь то файл файловой системы или php: // output), но вместо использования save() вы можете вызывать отдельные методы в классе для создания строки, содержащей форматированный лист данных и собственный выход из этих «блоков».

$data = ''; 

// First excel file 
$objPHPExcel1 = new PHPExcel(); 

$objPHPExcel1->getActiveSheet() 
    ->setCellValue('c5','10'); 
$objPHPExcel1->getActiveSheet() 
    ->setCellValue('c6','20'); 
$objPHPExcel1->getActiveSheet() 
    ->setCellValue('c7','30'); 
$objPHPExcel1->getActiveSheet() 
    ->setCellValue('c8','40'); 

$objWriter1 = PHPExcel_IOFactory::createWriter($objPHPExcel, 'HTML'); 
$objWriter1->generateStyles(false); 
$data .= $objWriter1->generateHTMLHeader(); 
$data .= $objWriter1->generateSheetData(); 

// Second excel file 
$objPHPExcel2 = new PHPExcel(); 

$objPHPExcel2->getActiveSheet() 
    ->setCellValue('c5','50'); 
$objPHPExcel2->getActiveSheet() 
    ->setCellValue('c6','60'); 

$objWriter2 = PHPExcel_IOFactory::createWriter($objPHPExcel2, 'HTML');   
$objWriter2->generateStyles(false); 
$data .= $objWriter2->generateSheetData(); 
$data .= $objWriter2->generateHTMLFooter(); 

file_put_contents('combinedexcelpage.html', $data); 

Обе эти опции описаны в разделе 6.8 документации разработчика

Смежные вопросы