PHPExcel - Форматирование теряется при редактировании из кода

StackOverflow https://stackoverflow.com/questions/1859599

  •  13-09-2019
  •  | 
  •  

Вопрос

В эти дни я играю с интеграцией 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()

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top