|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
Уважаемые! Встал вопрос, так как зашел в тупик обращаюсь на форму за ответом. Опишу вкратце суть задания. Есть docx документ - шаблон, в который нужно добавить определенные данные в определенные места. Подключить библиотеку для работы не удалось, поэтому руками разобрал файл и достал от туда document.xml , в котором и хранятся все заветные данные. Дальше интересней! Вот код document.xml (сокращенный) Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Мне нужно заменить {$text$} - уникальное для каждой записи, после чего записать все это обратно в document.xml Появилась загвоздка именно на замене этих {$text$}, и внесения этих изменений в документ document.xml . После встает вопрос о собирании всего этого добра в архив и при помощи волшебства преобразование в docx. На официальных сайтах уже все перерыл и пересмотрел! ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2018, 16:21 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
bulaolenПоявилась загвоздка именно на замене этих {$text$},Показывайте проблемный php-код, показывайте исходные данные, ожидаемые и получившиеся. PS: Подозреваю, что $ надо экранировать в образце поиска или использовать одинарные кавычки. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.11.2018, 16:45 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
vkle, Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66.
... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 08:44 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
"Все смешалось в доме Облонских", как сказал классик... Если используется PhpSpreadsheet, тогда зачем вообще распаковывать архив на составные части. Оная библиотека умеет самостоятельно разбираться в исходном документе. Однако, инструкцию придется читать не по диагонали. А если уж архив распакован до уровня текстовых файлов с довольно ясными метками для замены фрагментов хотя бы той же str_replace(), то нафига городить огород с simplexml и циклами. И довершает всю картину DOMDocument, при помощи которого исходный файл сохраняется в нетронутом виде, отменяя возможные изменения, сделанные другим кодом. Такая вот "веселуха" получается по коду. Касаемо приведенного случая. От XML, наверняка, можно вовсе абстрагироваться и править обычный текстовый файл примерно так (без проверок): Код: php 1. 2. 3.
Или не опускаться на уровень XML вовсе, проделывая все манипуляции с исходным *.xlsx непосредственно при помощи PhpSpreadsheet, если эта библиотека имеется. Хотя, в первом приближении, там писанины малость побольше будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 10:02 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
vkleКасаемо приведенного случая. От XML, наверняка, можно вовсе абстрагироваться и править обычный текстовый файл примерно так (без проверок): Код: php 1. 2. 3.
То есть я могу обойтись простой заменой в самом документе командой str_replace ? И какой файл мне изменять? Сам docx или xml в разложенном архиве? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 10:23 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
bulaolen, Вы точно понимаете, что делаете? Если не вполне, то откройте тот и другой файл блокнотом и посмотрите. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 10:46 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
vkle, В том-то и дело, что я понимаю не полностью, а разобраться в мануале из интернета получается весьма смутно. То что примеры сухие и обобщенные я молчу, как и про то что по PHPSpReadSheet вообще нет толкового мануала. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 11:29 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
bulaolenпо PHPSpReadSheet вообще нет толкового мануалаМануал есть, только без знания объектной модели документа он практически бесполезен. Разберетесь в модели документа - сможете использовать. Не знаю, где сейчас есть информация по теме, сам разбирался в этих вопросах лет 15 назад при помощи встроенной справки MS Office, там весьма подробно было расписано. Тема весьма объемлющая для полного понимания. bulaolenВ том-то и дело, что я понимаю не полностьюОчевидно, следует сперва разобраться в сути вопроса. 1. Что такое *.xlsx или *.docx файл Вы уже в курсе, ибо распаковали его как архив и получили набор текстовых файлов. 2. Как внести изменения в текстовый файл - ну это из разряда "PHP для чайников", немного сложнее хеллоуворда. Ваш вариант вполне укладывается в три строчки кода, см. выше. 3. Вы так же в курсе, что после правки текстового файла с данными следует собрать архив заново. PHP имеет для этого вполне штатные средства. Что именно в этой последовательности действий не понятно? Мануал по PHP существует на официальном сайте, там даже примеров полно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.11.2018, 12:54 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
vkle, ну, если конкретизировать мой вопрос, то он прозвучит так: 1)как работать с docx документами через php (хорошая единая библиотека с большими возможностями)? 2)как через php собирать несколько каталогов в один файл и конвертировать его в docx? 3)есть ли какое-нибудь еще решение вопроса записи значений в специальные места в тексте, не нарушая его структуры? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2018, 13:50 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
bulaolen, 1. В общем то, библиотек по пальцам пересчитать . Возможно, для других ЯП есть более интересные и подходящие Вам библиотеки. Возможности выше простейших никогда не интересовали меня за ненадобностью для моих задач. 2. Изучайте Office Open XML для понимания структуры файлов + пхпшный класс ZipArchive. 3. Принципиально, вариантов не так уж много. Непосредственно MS Word, используя его COM-сервер для внешнего управления (возможно, LibreOffice умеет что-то аналогичное). Документ как как архив (распаковка-правка-упаковка). Сторонние библиотеки. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2018, 17:38 |
|
чтение запись xml документов с помощью php
|
|||
---|---|---|---|
#18+
vkle, Ну да, филе_гет_контентс, а потом стандартным образом парсится в пхп. Как-нибудь так: $obj=new SimpleXMLElement($xmlstr); Ну, обжи появляются, и всё другое. А дальше - дело техники - запихать всё это куда нужно. ПС. Для работы с оффисом имеется специальная штука - OpenXML. Впадлу было примерчик искать. Сами разберётесь. Там очень просто. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2018, 18:39 |
|
|
start [/forum/topic.php?fid=23&msg=39728739&tid=1460105]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 452ms |
0 / 0 |