Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Fluent OpenXML - Foxby

1,068 views

Published on

Слайды презентации к докладу "Анонс OpenSource библиотеки для создания и изменения документов в формате OpenXml через Fluent-интерфейс" со второй конферции .NETConf

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Fluent OpenXML - Foxby

  1. 1. Вторая конференция .NET разработчиков<br />Анонс OpenSource библиотеки для создания и изменения документов в формате OpenXml через Fluent-интерфейс<br />Тимур Рахматиллаев<br />IndyCode<br />twitter.com/eskat0n<br />
  2. 2. Пользовательский сценарий<br />Шаблон<br />Пользователь скачивает документ<br />Пользователь редактирует документ<br />Генерация документа<br />Обновление некоторых значений в документе<br />Документ закачивается на сервер<br />
  3. 3. Требования<br /><ul><li>Генерация документа со сложным форматированием по шаблону
  4. 4. Подстановка значений в обновляемые поля
  5. 5. Возможность защиты документа (или его частей) от редактирования</li></li></ul><li>Содержимое документа нужновставлять вместо или внутрь специальных меток, заданных в шаблоне<br />
  6. 6. Tags<br />
  7. 7. Показ скрытых символов<br />
  8. 8. Tags<br />
  9. 9. Тег<br />Тег – скрытая метка-параграф, внутрь которой можно вставить объемлющий элемент документа:<br /><ul><li>Параграф
  10. 10. Список
  11. 11. Таблицу</li></ul> и т.д.<br />
  12. 12. Placeholders<br />
  13. 13. Placeholders<br />
  14. 14. Placeholder<br />Placeholder – скрытая метка внутри параграфа, внутрь которой можно вставить блок текста<br />
  15. 15. Запрет редактирования<br />
  16. 16. Запрет редактирования<br />
  17. 17. MS Word via COM Interop<br />Приложение<br />COM объект<br />
  18. 18. Трудности<br />Приложение<br />COM объект<br />
  19. 19. Имя им – Легион<br />
  20. 20. MS Word – лишний<br />
  21. 21. Пожирание денег<br />
  22. 22. So slow<br /><ul><li>2 – 5 мин на генерацию документа
  23. 23. Потери времени на запуск и закрытие приложения MS Word</li></li></ul><li>OpenXML SDK<br />
  24. 24. Формат OpenXML<br />
  25. 25. <ul><li> Дерево с элементами самоподобия
  26. 26. Используется иерархическая агрегация</li></li></ul><li>
  27. 27. Достоинства OpenXMLSDK<br /><ul><li>MS Word не используется
  28. 28. Высокая скорость работы
  29. 29. Работа с телом документа с меньшим уровнем абстракции
  30. 30. Возможность построения более гибкого API</li></li></ul><li>Божественный класс<br />publicinterfaceIDocxDocument{<br /> voidCleanContent(stringtagName);<br /> void Replace(stringsingleTagName, stringnewValue);<br /> void Replace(stringtagName, IEnumerable<TextBlock> content);<br /> void Replace(IEnumerable<KeyValuePair<string, string>> replacements);<br />OpenXmlElementGetParagraph(stringformattedName);<br />TagReplacerGetTagReplacer(string name);<br />boolExistsUniqueTagWithInnerText(string text);<br /> byte[]ToArray();<br /> void Unprotect();<br /> void Protect();<br /> voidSetProtectionAttribute(string value);<br /> voidSetCustomProperty(string name, string value);<br />stringGetCustomProperty(string name);<br />и еще 16 методов!<br />
  31. 31. Почему Fluent?<br />
  32. 32. Fluent –это<br /><ul><li>Декларативное задание желаемой структуры документа
  33. 33. Уменьшение числа методов
  34. 34. Низкий порог вхождения
  35. 35. Модно</li></li></ul><li>Пример использования<br />var builder =newDocxDocumentBuilder(document);   <br />builder <br /> .Tag("MAIN_CONTENT", x => x<br /> .EditableStart() .Indent.Paragraph("Тестовый 1").Indent.Paragraph("Тестовый 2").EditableEnd());<br />
  36. 36. Теги и placeholder’ыможно вставлять в документ в runtime<br />
  37. 37. Поддержка форматирования<br /><ul><li>Атрибуты текста
  38. 38. Выравнивание параграфов
  39. 39. Отступы
  40. 40. Таблицы с настраиваемым видом
  41. 41. Нумерованные списки</li></li></ul><li>Области применения<br /><ul><li>Создание договоров, выписок, бланков, отчетной документации
  42. 42. Системы электронного документооборота
  43. 43. Бухгалтерские системы</li></li></ul><li>Демонстрация<br />
  44. 44. code.google.com/p/fluent-openxml/Лицензия: GNU GPLv2<br />
  45. 45. Спасибо за внимание<br />Тимур Рахматиллаев<br />IndyCode<br />timur.rakhmatillaev@indycode.ru<br />twitter.com/eskat0n<br />

×