@Jonnyyy1

Как произвести и сохранить изменения в XML с помощью PHP?

Всем привет, бьюсь над скриптом,суть-распаковать xlsx как архив,изменить значение в ячейке,сохранить изменения и запаковать обратно в xls.Распаковываю,меняю значения,запаковываю-в результате изменения не сохраняются.Подскажите пожалуйста что делаю не так
оригинал sharedStrings.xml (тут ханятся данные которые меняем)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<sst xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" count="2" uniqueCount="2"><si><t>Name</t></si><si><t>LastName</t></si></sst>

После работы скрипта
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<worksheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"><sheetPr codeName="Лист1"/><dimension ref="B2:C2"/><sheetViews><sheetView tabSelected="1" workbookViewId="0"><selection activeCell="C2" sqref="C2"/></sheetView></sheetViews><sheetFormatPr defaultRowHeight="15"/><sheetData><row r="2" spans="2:3"><c r="B2" t="s"><v>0</v></c><c r="C2" t="s"><v>1</v></c></row></sheetData><pageMargins left="0.7" right="0.7" top="0.75" bottom="0.75" header="0.3" footer="0.3"/></worksheet>

Cам скрипт
<?php

require_once('pclzip.lib.php');
$archive = new PclZip('1.xlsx');
if ($archive->extract() == 0) {
die("Error : ".$archive->errorInfo(true));
}

$file=file_get_contents('xl/sharedStrings.xml');
$xml=(array)simplexml_load_string($file);
$sst=array();
foreach ($xml['si'] as $item=>$val)$sst[]=(string)$val->t;

$file=file_get_contents('xl/worksheets/sheet1.xml');
$xml=simplexml_load_string($file);
$data1=array();
foreach ($xml->sheetData->row as $row){
$currow=array();
foreach ($row->c as $c){
$value=(string)$c->v;
$attrs=$c->attributes();
if ($attrs['t']=='s'){
$currow[]=$sst[$value];
}else{
$currow[]=$value;
}
}
$data1[]=$currow;
}

$line = $data1;

$line[0][0] = 'Saymon';
$line[0][1] = ' Black';

$xml->asXML('xl/sharedStrings.xml');

$archive = new PclZip('2.xlsx');

$result = $archive->create('xl/_rels/workbook.xml.rels,xl/theme/theme1.xml,xl/worksheets/sheet1.xml,xl/sharedStrings.xml,xl/styles.xml,xl/vbaProject.bin,xl/workbook.xml,docProps/app.xml,docProps/core.xml,_rels/,[Content_Types].xml');

?>

Кто то скажит мол отдай на фриланс, уже пробовал,нашел человека, поговорили в скайпе, отправил предоплату 50% в пятницу,уехал на выхи.Сегодня захожу,смотрю на FL написано мол акк взломали,деньги не переводите,предоплат не беру и тд.Беда(
  • Вопрос задан
  • 323 просмотра
Пригласить эксперта
Ответы на вопрос 1
maximw
@maximw
Так у вас данные записываются в массив $line, и дальше с ними ничего не происходит. Надо их назад записать в объект $xml.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽