Pergunta

Eu estou brincando com um PHP - Integração MS Excel estes dias. Minha tarefa é abrir uma planilha existente, adicionar alguns dados e salvar a cheia planilha como um arquivo novo. Basicamente uma espécie de modelo de motor de enchimento, eventhough xlsx arquivos são usados ??como modelos.

Eu olhei para PHPExcel que parece ser quadro bastante agradável. Em ordem para implementar uma prova de conceito que eu fiz o seguinte (reduzido ao mínimo necessário para ilustrar o que eu preciso fazer):

$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');

A execução deste descobri que um novo arquivo é criado, a minha daat está inserido, mas infelizmente com toda a formatação existente é perdido.

Portanto, a pergunta é, existe uma maneira de fazer PHPExcel manter esses formattigs na nova Arquivo? Ou ir ainda mais longe: é possível manter gráficos etc em um arquivo de modelo e preencher os do jeito que eu tentei?

Agradecemos antecipadamente por toda a sua experiência compartilhada!

K

Foi útil?

Solução

Hum, você está criando uma nova planilha, wich tem nenhum formato como padrão. Eu acho que você tem que adicionar seus valores para a folha existente?

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

Outras dicas

A formatação é perdido por causa desta linha $ ObjReader-> setReadDataOnly (true); que informa o leitor a ler única os dados da sua pasta de trabalho modelo, não a formatação.

Você também precisará modificar os dados nas planilhas existentes. Criando uma nova planilha irá criar uma planilha não formatado. Alternativamente, você pode usar o método de cópia PHPExcel_WorkSheet ()

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top