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');
Запустив это, я обнаружил, что создан новый файл, мой daat вставлен, но, к сожалению, с все существующее форматирование потеряно.
Итак, вопрос в том, есть ли способ заставить PHPExcel сохранить эти теги формата в новом файле ?Или пойти еще дальше:возможно ли вести графики и т.д.в файле шаблона и заполнить их так, как я пробовал?
Заранее спасибо за весь ваш опыт, которым вы поделились!
K
Решение
Хм, вы создаете новый рабочий лист, у которого нет формата по умолчанию.Я думаю , вам нужно добавить свои значения в существующий лист?
$objPHPExcel->setActiveSheetIndex(0); // index of sheet
$workSheet = $objPHPExcel->getActiveSheet();
$workSheet->setTitle('Pflaume');
Другие советы
Форматирование потеряно из-за этой строки $objReader->setReadDataOnly(true);который говорит читателю читать Только данные из вашей книги шаблонов, а не форматирование.
Вам также необходимо изменить данные в существующих таблицах.При создании нового листа будет создан неформатированный лист.В качестве альтернативы вы можете использовать метод копирования PHPExcel_WorkSheet()