2011-09-29 12 views
23

require_once '../Classes/PHPExcel/IOFactory.php'; 


/** PHPExcel */require_once '../Classes/PHPExcel.php'; 

$excel2 = PHPExcel_IOFactory::createReader('Excel2007'); 
$excel2 = $excel2->load('dentkey.xlsx'); 
$excel2->setLoadAllSheets(); 
$excel2->setActiveSheetIndex(0); 
$excel2->getActiveSheet()->setCellValue('C6', '4')   

->setCellValue('C7', '5')   

    ->setCellValue('C8', '6')  

    ->setCellValue('C9', '7'); 
$excel2->setActiveSheetIndex(1); 
$excel2->getActiveSheet()->setCellValue('A7', '4') 

->setCellValue('C7', '5'); 


$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007'); 
$objWriter->save('dentkey1.xlsx'); 


tutaj, jestem w stanie załadować plik (.xlsx) i mogę również modyfikować (dentkey.xlsx). Ale po wygenerowaniu nowego pliku .xlsx (dentkey1.xlsx) .. wszystkie dane arkuszy roboczych, które były w (dentkey.xlsx) nie są ładowane, a także nie mogę ustawić wartości dla drugiego arkusza roboczego.PHPExcel modyfikuje istniejący plik .xlsx z wieloma arkuszami roboczymi

można precyzyjnie

$excel2->setActiveSheetIndex(1); 
$excel2->getActiveSheet()->setCellValue('A7', '4') 

->setCellValue('C7', '5'); 

nie jest ustawienie wartości 5 do kolumny 'C7' generowanego (dentkey.xlsx) Plik

proszę mi pomóc ...

dziękuję z z wyprzedzeniem

+0

to możliwe, aby napisać do programu Excel w trybie dopisywania? scenariusz: 1) utworzyć nowy obiekt excel i wstawić dane 2) Napisz obiektu do istniejącego pliku excel dodając nowy arkusz więc jeśli plik ma Arkusz: „Arkusz 1”, „Arkusz 2”, " arkusz 3" zapisu stworzy «arkusz 4», ale nie usuwa wcześniej napisany arkusze – Denish

Odpowiedz

48

Ten kod wydaje się działać, przetestowany w lokalnym środowisku WampServer Version 2.1

Downalod Najnowsza wersja PHPExcel stąd PHPExcel 1.7.6

Kodeks pracy.

<?php 
error_reporting(E_ALL); 
date_default_timezone_set('Europe/London'); 
require_once '../Classes/PHPExcel/IOFactory.php'; 
require_once '../Classes/PHPExcel.php'; 

$excel2 = PHPExcel_IOFactory::createReader('Excel2007'); 
$excel2 = $excel2->load('nTest.xlsx'); // Empty Sheet 
$excel2->setActiveSheetIndex(0); 
$excel2->getActiveSheet()->setCellValue('C6', '4') 
    ->setCellValue('C7', '5') 
    ->setCellValue('C8', '6')  
    ->setCellValue('C9', '7'); 

$excel2->setActiveSheetIndex(1); 
$excel2->getActiveSheet()->setCellValue('A7', '4') 
    ->setCellValue('C7', '5'); 
$objWriter = PHPExcel_IOFactory::createWriter($excel2, 'Excel2007'); 
$objWriter->save('Nimit New.xlsx'); 
?> 

Usuń tę linię ze swojego kodu. $excel2->setLoadAllSheets();

nadzieję, że pomoże

+0

Dzięki za odpowiedź ... hi nDudani, po prostu poinformować, mój plik XLSX (dentket.xlsx) zawiera makro i funkcja (obliczenie), używając twojego kodu, nowy plik (dentkey1.xlsx) jest generowany, ale nie składający się z istniejącej funkcji lub makr, mam nadzieję, że rozumiesz moje pytanie ..... – Denish

+0

czy możesz gdzieś wysłać plik dentket.xlsx? więc mogę testować w prawdziwym scenariuszu –

+0

tak, oczywiście, masz jakąś ideę formularza, gdzie (po załadowaniu tego pliku xlsx) ty i ja możemy uzyskać dostęp do tego pliku .. lub możesz dać mi swój adres emai wyślę natychmiast ...Z góry dziękuję. – Denish

Powiązane problemy