Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2012, 18:14   #1
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию XMLDocument вставка в данные перевода строки

Крутил и так, и сяк - не получается. Сделал тупым способом - вставил в нужные места #####, выгрузил в файл, по новой прочитал в StringList и заменил все ##### на & #10; и обратно в файл. Excel кушает результат, но на код тошно смотреть. Может есть способ посимпатичней? Вставка на прямую в XMLDocument #10 или & #10; или \n не катит. Даже здесь эта зараза (& #10;) выпендривается, пришлось пробел вставить
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 18.12.2012 в 18:17.
Аватар вне форума Ответить с цитированием
Старый 18.12.2012, 18:27   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

Chr(10) - пробовали?
Человек_Борща вне форума Ответить с цитированием
Старый 18.12.2012, 19:31   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

#10, chr(10) - какая разница?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2012, 19:36   #4
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

CDATA
createCDATASection
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 18.12.2012, 22:05   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

На 1-ом рисунке ячейка с принудительным переводом строки и фрагмент xml
Код:
<Cell ss:StyleID="s21"><Data ss:Type="String">111& #10;222</Data></Cell></Cell>
В дельфях удалось, используя
Код:
XMLDocument1.CreateNode('111& #10;222',ntCData);
xml таким сделать
Код:
<Cell ss:StyleID="s21"><Data ss:Type="String"><![CDATA[111& #10;222]]></Data></Cell>
В результате ячейка отображается хреново.
Изображения
Тип файла: jpg Рис1.jpg (39.0 Кб, 107 просмотров)
Тип файла: jpg Рис2.jpg (40.0 Кб, 103 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 18.12.2012, 22:34   #6
ReportCube
Форумчанин
 
Аватар для ReportCube
 
Регистрация: 11.03.2011
Сообщений: 426
По умолчанию

А не проще сохранять требуемое как атрибуты - никаких проблем не будет
ReportCube вне форума Ответить с цитированием
Старый 18.12.2012, 22:37   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не-а, Excel потом не поймет xml с левыми атрибутами
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2012, 06:31   #8
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

не проверял, но может так?

Код:
//ALARM AHTUNG
//MSXML НЕ СОХРАНЯЕТ ВЕДУЩИЕ ПРОБЕЛЫ и может быть КОНЕЧНЫЕ тоже
procedure SetNodeText(Node:variant;const Value:string='');
begin
  Node.text:=Value;
  if Node.text<>Value then
  begin
    Node.setAttribute('xml:space','preserve');
    Node.text:=Value;
  end;
end;
проверил, работает...
SetNodeText(node,'123'#13#10'321');
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 19.12.2012 в 06:38.
Slym вне форума Ответить с цитированием
Старый 19.12.2012, 11:02   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Просто вставка в Text #13#10 работает, но Excel игнорирует. Если сделать так
Код:
XMLDocument1.CreateNode('111'+#13+'222',ntCData)
то в xml получается ($d$a двоичные)
Код:
<Cell ss:StyleID="s21"><Data ss:Type="String"><![CDATA[111$d$a222]]></Data></Cell>
Все вроде неплохо, но $d лишний для Excel
Изображения
Тип файла: jpg Рис3.JPG (25.0 Кб, 106 просмотров)
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.12.2012, 14:43   #10
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Просто вставка в Text #13#10 работает, но Excel игнорирует. Если сделать так
Код:
XMLDocument1.CreateNode('111'+#13+'222',ntCData)
то в xml получается ($d$a двоичные)
Код:
<Cell ss:StyleID="s21"><Data ss:Type="String"><![CDATA[111$d$a222]]></Data></Cell>
Все вроде неплохо, но $d лишний для Excel
Ты не понял... последний мой пост еще раз перечитай... ключевое слово Node.setAttribute('xml:space','pres erve');

<Cell ss:StyleID="s21"><Data ss:Type="String" xml:space="preserve">111
222</Data></Cell>
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вставка строки bogdanchek C# (си шарп) 2 26.01.2012 18:10
Как упорядочить данные (перевести данные из стольбцов в строки)? opeck Microsoft Office Excel 3 21.11.2011 01:43
Вывод символа перевода строки из МЕМО в текст. файл (Delphi) ChEaTeR-abc Помощь студентам 5 02.07.2010 20:43
Как в текстовом файле распознать символ перевода строки? mzelenyy Общие вопросы C/C++ 4 12.06.2010 11:30
как присвоить char'у символ перевода строки? Retiz Помощь студентам 6 06.04.2008 00:05