2011-09-29 2 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'); 


여기에서 (.xlsx) 파일을로드 할 수 있으며 수정할 수도 있습니다 (dentkey.xlsx). 그러나 새 .xlsx 파일 (dentkey1.xlsx)을 생성 한 후 (dentkey.xlsx)에 있던 모든 워크 시트 데이터가로드되지 않고 두 번째 워크 시트의 값을 설정할 수 없습니다.PHPExcel은 다중 워크 시트가있는 기존 .xlsx 파일을 수정합니다.

당신이 미세 할 수

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

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

는 ... 생성 (dentkey.xlsx)의 'C7'열

저를 도와주세요 파일에

덕분에 많은의를 값 5를 설정하지 않습니다 advance

+0

도움이 될 것입니다 $excel2->setLoadAllSheets();

희망은 추가 모드에서 엑셀에 쓸 수 있습니까? 시나리오 : 1) 새 워크 시트를 추가하여 파일을 엑셀 새 Excel 개체를 만들고 존재하는 데이터를 2) 쓰기 개체를 삽입 파일이 워크 시트가 그렇다면 "시트 1", "시트 2", " 시트 3 " 쓰기는"시트 4 "를 만들지 만 이전에 쓰여진 시트는 삭제하지 않습니다. – Denish

답변

48

이 코드는 작동하는 것으로 보입니다. 로컬 환경에서 테스트되었습니다. WampServer Version 2.1

PHPExcel의 최신 버전은 여기에서 PHPExcel 1.7.6

Working Code.

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

코드에서이 줄을 제거하십시오. 이

+0

답장을 보내 주셔서 감사합니다 ... 안녕하세요 nDudani, 그냥 내 xlsx 파일 (dentket.xlsx)에 매크로 및 기능이 포함되어 있음을 알려드립니다 (계산), 귀하의 코드를 사용하여 새 파일 (dentkey1.xlsx)이 생성되지만 기존 함수 또는 매크로로 loding하지 않으면 내 질문을 이해할 수 있기를 바랍니다 ..... – Denish

+0

dentket.xlsx 어딘가에 업로드 할 수 있습니까? 그래서 진짜 시나리오에서 테스트 할 수 있습니다 –

+0

예 ofcourse, 당신은 (이 xlsx 파일을 업로드 한 후) 당신과 나는이 파일에 접근 할 수있는 아이디어 양식이 있습니까? 아니면 당신에게 emai-address를 줄 수 있습니까? 즉시 보내 드리겠습니다. ...많은 감사드립니다. – Denish

관련 문제