PHPExcel – форматирование теряется при редактировании кода

В эти дни я играю с интеграцией PHP – MS Excel. Моя задача – открыть существующую таблицу, добавить некоторые данные и сохранить заполненную электронную таблицу в качестве нового файла. По сути, это механизм заполнения шаблонов, в то время как файлы xlsx используются в качестве шаблонов.

Я заглянул в PHPExcel, который выглядит довольно неплохо. Чтобы реализовать доказательство концепции, я сделал следующее (сведенное к минимуму, необходимое для иллюстрации того, что мне нужно сделать):

$objReader = PHPExcel_IOFactory::createReader('Excel2007'); $objReader->setReadDataOnly(true); $objPHPExcel = $objReader->load("myTemplateToFill.xlsx"); //Here comes the actual filling $objWorksheet = $objPHPExcel->createSheet(); $objWorksheet->setTitle('Apple') ; $objWorksheet->setCellValue('A1', 'Banana'); $objPHPExcel->setActiveSheetIndex(0); $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel); $objWriter->save('myFilledTemplate.xlsx'); 

Запустив это, я обнаружил, что создается новый файл, мой даат вставлен, но, к сожалению, все существующее форматирование теряется.

Итак, вопрос в том, есть ли способ заставить PHPExcel сохранять эти formattigs в новом файле? Или пойти еще дальше: возможно ли сохранить диаграммы и т. Д. В файле шаблона и заполнить их так, как я пытался?

Заранее благодарю за весь ваш опыт!

К

Related of "PHPExcel – форматирование теряется при редактировании кода"

Hum, вы создаете новый рабочий лист, который не имеет формата по умолчанию. Я думаю, вы должны добавить свои значения в существующий лист?

 $objPHPExcel->setActiveSheetIndex(0); // index of sheet $workSheet = $objPHPExcel->getActiveSheet(); $workSheet->setTitle('Pflaume'); 

Форматирование теряется из-за этой строки $ objReader-> setReadDataOnly (true); который говорит читателю читать только данные из вашей рабочей книги шаблонов, а не форматирование.

Вам также необходимо изменить данные в существующих листах. Создание нового рабочего листа создаст неформатированный рабочий лист. Кроме того, вы можете использовать метод PHPExcel_WorkSheet copy ()