PHPExcel модифицирует существующий файл .xlsx с несколькими рабочими листами

#php #wordpress #phpexcel

#php #wordpress #phpexcel

Вопрос:

 
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 ) не загружается, а также я не могу установить значение для 2-го листа.

вы можете нормально

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

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

не устанавливается значение 5 в столбец ‘C7’ сгенерированного (dentkey.xlsx ) файл

пожалуйста, помогите мне…

заранее большое спасибо

Комментарии:

1. возможно ли выполнить запись в Excel в режиме добавления? сценарий: 1) создать новый объект Excel и вставить данные 2) записать объект в существующий файл Excel, добавив новый рабочий лист, поэтому, если в файле есть рабочий лист: «Лист 1», «Лист 2», «Лист 3», запись создаст «Лист 4», но не удалит ранее записанныйлисты

Ответ №1:

Этот код кажется рабочим, протестирован в локальной среде WampServer Version 2.1

Загрузите последнюю версию PHPExcel отсюда PHPExcel 1.7.6

Рабочий код.

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

Удалите эту строку из вашего кода: $excel2->setLoadAllSheets(); .

Надеюсь, это поможет.

Комментарии:

1. Спасибо за ответ … привет, нДудани, просто дай тебе знать мой файл xlsx (dentket.xlsx ) содержит макрос и функцию (вычисление), используя ваш код, новый файл (dentkey1.xlsx ) генерируется, но не соответствует существующей функции или макросам, я надеюсь, вы понимаете мой вопрос…..

2. можете ли вы загрузить dentket.xlsx где-нибудь? так что я могу протестировать в реальном сценарии

3. да, конечно, есть ли у вас какая-либо идея, где (после загрузки этого файла xlsx) вы и я можем получить доступ к этому файлу .. или вы можете просто дать мне свой emai-адрес, который я немедленно отправлю вам… Заранее большое спасибо.

4. Макросы и пользовательские функции не поддерживаются в PHPExcel; и библиотека отбрасывает любые неподдерживаемые функции рабочей книги при ее загрузке, поэтому они вообще не существуют в объекте PHPExcel… при сохранении PHPExcel сохраняет только те элементы рабочей книги, которые существуют в объекте PHPExcel.

5. привет, нДудани, в PHPExce/cell.php строка № 288, я только что прокомментировал строку кода исключения, вывод заключается в том, что мой файл xlsx будет загружаться с существующими данными, но без ссылок на мультишаблоны, и вычисления также останутся прежними… Спасибо всем за помощь