2016-09-05 4 views
1

Я использую PHPExcel для создания файла excel! Мне нужно, чтобы сохранить его как файл .xlsx и иметь файл .pdfПреобразование excel в pdf с использованием PHP

С PHPExcel мой PDF появляется в странном формате, например: Result

Но я хочу что-то вроде этого (это было вручную генерироваться , «сохранить как pdf»): What I Want

Знаете ли вы простой способ преобразования Excel в pdf?

$objReader = \PHPExcel_IOFactory::createReader("Excel2007"); 
$objPHPExcel = $objReader->load(Some_Path); 
$objPHPExcel->setActiveSheetIndex(0);   


$objPHPExcel->getActiveSheet() 
     ->setCellValue('B8', "testing"); 


//Write Excel 
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 
$objWriter->save('testing.xlsx'); 

// Write PDF 
$objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, 'PDF'); 
$objWriter->save('testing.pdf'); 
+0

у нас есть код PLZ :) – MaximeK

+0

Да! Извините @MaximeK :) –

+0

Какой механизм рендеринга PDF вы используете? Какие настройки вы включили для линий сетки? 'setShowGridlines()' должно быть установлено как false для рабочего листа –

ответ

0

Рассмотрите COM interface библиотеку объектов Excel при использовании PHP для ПК с ОС Windows. Это расширение для Windows и обычно поставляется с установкой PHP на ПК.

Этот подход позволяет делать практически все, что может сделать Excel VBA, включая вызов метода ExportAsFixedFormat для вывода файлов PDF. Обратите внимание, что этот метод может быть запущен на Workbook или Worksheet объектах (соблюдение заданных настроек/параметров печати по умолчанию), даже Диаграмма и Диапазон.

// EXCEL APP OBJECT 
$xlapp = new COM("Excel.Application") or Die ("Did not instantiate Excel"); 

// WORKBOOK AND WORKSHEET OBJECTS 
$wbk = $xlapp->Workbooks->Open("C:\\Path\\To\\Workbook.xlsx");  
$wks = $wbk->Worksheets(1); 

// SET CELL VALUE 
$wks->Range("B8")->Value = "testing"; 

// OUTPUT WORKSHEET TO PDF 
$xlTypePDF = 0; 
$xlQualityStandard = 0; 

try { 
    $wks->ExportAsFixedFormat($xlTypePDF, "C:\\Path\\To\\Output.pdf", $xlQualityStandard); 

} catch(com_exception $e) { 
    echo $e->getMessage()."\n"; 
    exit; 

} 

// OPEN WORKBOOK TO SCREEN 
$xlapp->Visible = true; 

// END PROCESS/FREE RESOURCES 
$xlapp = NULL; 
unset($xlapp); 
+0

Могу ли я каким-то образом имитировать этот COM-интерфейс на сервере Linux? –

+0

К сожалению, «COM» - это технология Windows. Возможно, вам придется написать макрос в книге Excel, которая увидела вещь, и PHP назовет ее через 'exec'. – Parfait

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