|
![]() |
#1 |
Участник
|
Небольшое исследование по выводу переноса в Excel-xml:
1. То, что формируется у меня - с потеряным переносом, в Екселе, понятно, в одну строку выводится: <Cell ss:StyleID="s29"><Data ss:Type="String">test it</Data></Cell> 2. Формирую строку указанным джобом, копирую в текстовом редакторе текст, получаю строку: <Cell ss:StyleID="s29"><Data ss:Type="String">test it</Data></Cell> Эта строка в текстовом редакторе переносится, но в Екселе - все равно в одну строку. 3. Открываю файл в Екселе, вставляю перенос строки прямо в ячейке, сохраняю файл, открываю в текстовом редакторе: <Cell ss:StyleID="s30"><Data ss:Type="String">test "& # 10 ;" it</Data></Cell> "& # 10 ;" - вставил пробелы, иначе не видно в обозревателе ![]() Именно вот этот управляющий символ мне и нужен. В итоге (тема поднималась почти год назад ![]()
__________________
Ivanhoe as is.. Последний раз редактировалось Ivanhoe; 01.12.2008 в 11:52. |
|
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
То получается символ " ".
__________________
Ivanhoe as is.. |
|
![]() |
#4 |
Участник
|
чтобы сохранить white space нетронутыми, есть метод XMLdocument.preserveWhitespace
![]() Кроме того, есть специальный класс XMLwhitespace, который является потомком xmlNode. Если уж так хочется включить проеблы в xml-структуру, то можно и так сделать. |
|
![]() |
#5 |
Участник
|
Цитата:
![]() ![]() P.S. XMLdocument.preserveWhitespace() попробовал и с true, и с false - одинаково "\n" выводится как " ".
__________________
Ivanhoe as is.. |
|
![]() |
#6 |
Участник
|
У меня такая же проблема что и у Ivanhoe, для неё всё-таки нашлось решение?
Т.е. я отправляю в XMLElement или \r, или \n, все равно получаю символ в xml-документе просто пробел, как насильно вставить туда именно перевод строки? Если в ручную в Экселе вставить перевод строки, то в xml документе он запишется как "& # 10;". Пытаюсь отправить этот код в XMLElement, на выходе в документе получаю некий преобразованный код "& amp; #10;", что уже не работает как перевод строки. Как все-таки можно вставить в XMLElement символ перевода строки? |
|
![]() |
#7 |
Читатель
|
Цитата:
Сообщение от Jackally
![]() У меня такая же проблема что и у Ivanhoe, для неё всё-таки нашлось решение?
Т.е. я отправляю в XMLElement или \r, или \n, все равно получаю символ в xml-документе просто пробел, как насильно вставить туда именно перевод строки? Если в ручную в Экселе вставить перевод строки, то в xml документе он запишется как "& # 10;". Пытаюсь отправить этот код в XMLElement, на выходе в документе получаю некий преобразованный код "& amp; #10;", что уже не работает как перевод строки. Понимаю, что закат солнца вручную, но если сохранять документ таким образом? X++: textBuffer.appendText(xMLDocument.xml()); textBuffer.replace("&#10;", "& #10;"); textBuffer.toFile(filename); Последний раз редактировалось b_nosoff; 11.01.2010 в 09:56. |
|
![]() |
#8 |
Участник
|
У меня получается 10 символ:
X++: efbbbf3c 3f786d6c 20766572 73696f6e # 00000000 ...<?xml version 3d22312e 30222065 6e636f64 696e673d # 00000010 ="1.0" encoding= 22757466 2d38223f 3e0d0a3c 7a65643e # 00000020 "utf-8"?>..<zed> 74657374 0a69743c 2f7a6564 3e # 00000030 test.it</zed> |
|
![]() |
#9 |
Участник
|
А у нас получается символ 0020
![]()
__________________
Ivanhoe as is.. |
|
![]() |
#10 |
Участник
|
вы уверены? 0x20 - это пробел. Может портится при передаче серез clipboard?
|
|
![]() |
#11 |
Участник
|
Это в файле так, я копи-пастом не пользовался.
__________________
Ivanhoe as is.. |
|
![]() |
#12 |
Участник
|
Мы обошли так: в настройках указан мета-символ, который пишется в xml-файл вместо перевода строки. После сохранения файла открываем его в режиме текстового файла, подменяем мета-символ на xml-льный перевод строки и сохраняем.
__________________
Ivanhoe as is.. |
|
![]() |
#13 |
Участник
|
Цитата:
Может есть способ заставить не делать его такое преобразование? Последний раз редактировалось Jackally; 29.12.2009 в 11:32. |
|
![]() |
#14 |
Участник
|
Цитата:
Сообщение от Jackally
![]() Это жестоко как-то ) я все-таки хочу попытаться вставлять в документ именно этот символ "& #10;", а xml парсер, видимо, считает что я хочу вставить это как текст в документ и преобразовывает в такой вот вид "& amp;#10;"...
Может есть способ заставить не делать его такое преобразование? ![]()
__________________
Ivanhoe as is.. |
|
![]() |
#15 |
Боец
|
попробуйте вместо '\n' использовать strfmt("%1%2", num2char(0x0D), num2char(0x0A))
|
|
![]() |
#16 |
Участник
|
|
|
![]() |
#17 |
Участник
|
такая штука, навколько я помню, называется entity - осталось посмотреть как их вставлять в документ
|
|
![]() |
#18 |
Участник
|
Насколько я понимаю, в нашем случае не подходит - потому что мы говорим про текст в одной отдельной ячейке Excel, если вставить entity, то это будет не одна ячейка.
__________________
Ivanhoe as is.. |
|
![]() |
#19 |
Участник
|
а если CDATA?
Последний раз редактировалось belugin; 29.12.2009 в 12:19. |
|
![]() |
#20 |
Участник
|
Пробывал в XMLElement отправлять текст такого вида:
"<![CDATA[ taram & #10; pam pam ]]>" (вставил пробел) на выходе в XML файле получаю: <Data ss:Type="String"><![CDATA[ taram &#10; pam pam ]]></Data> т.е. этот парсер заменил все спец. символы <, > и &. Он делает "полезную" работу, ведь наверняка есть способ выключить эту возможность... Последний раз редактировалось Jackally; 29.12.2009 в 14:08. |
|
Теги |
excel, xml, отчет, форматирование |
|
|