Найдите исполнителя для вашего проекта прямо сейчас!
Разместите заказ на фриланс-бирже и предложения поступят уже через несколько минут.

Цель проекта - создать C# библиотеку, которая будет частью приложения для помощи преподавателям в создании тестов для студентов. Допустим, у преподавателя есть документ с 200 вопросами для тестов. Преподаватель хочет сделать тест из 40 вопросов. Задача библиотеки - автоматизировать копирование и вставку этих вопросов из .docx файла, содержащего все вопросы, в .docx файл для конкретного теста из 40 вопросов.

Оригинальный .docx документ размечен так:

***begin:question1

content (mostly text, but including images, text boxes, drawings, equations, etc.)

***end:question1

***begin:question2

more content

***end:question2

и т.д.

Библиотека будет использована в программе для сборки .docx документов. Работа с библиотекой должна выглядеть примерно так:

string[] partsToInclude = new string[] { "titlepage", "instructions", "question1", "question3", "question5", "footer" };

DocumentAssembler myDoc = new DocumentAssembler(@"c:\master.docx");

myDoc.CreateSubDocument(partsToInclude, @"c:\newdocument.docx");

... для создания newdocument.docx, который содержит части master.docx между ***begin:xxx и ***end:xxx заголовками, указанными в массиве partsToInclude.

Мы можем немного изменять формат разметки документа, например, если будет нужно, все ***begin и ***end разделители могут быть в каком-то определенном стиле.

Важно, чтобы класс DocumentAssembler копировал ВСЕ содержимое исходного документа, включая картинки, рисунки, формулы, поля для ввода, и т.п. Все форматирование, разрывы страниц и т.п. должны быть сохранены. Свойства нового документа (отступы, заголовки, колонтитулы и т.п.) должны быть такими же, как в исходном документе.

Кроме основного копирование, желательно иметь еще одну вещь в классе DocumentAssembler. Может быть 2 типа содержимого для копирования из оригинального документа в новый - части, обозначенные как "question" и части, обозначенные по-другому (титульный лист, инструкции, и т.п.)

Желательно, чтобы DocumentAssembler отслеживал "текущий номер вопроса", и заменял текст "###" внутри блока содержимого на этот номер вопроса. Нумерация вопросов начинается с 1 и увеличивается после каждого блока "question".

То есть, для примера, если в оригинальном документе есть блок:

***begin:question78

###. What color is the sky?

A. red B. blue C. green D. purple

***end:question78

и создан тест, использующий блоки "titlepage", "question60", "question78", то ### в вопросе 78 будет заменено на строку "2", так как это второй блок в результирующем документе, имя которого начинается с "question".

Приемлимо (и желательно) использовать готовые библиотеки для этого проекта, например Open XML SDK от Microsoft.

Пример файла с вопросами - в приложении.

11 лет назад
xmorion
33 годаБолгария
11 лет в сервисе
Был
6 лет назад
  • Похожие заказы
  • $1000

    Сокращенный вариант Тип приложения - надстройка над картографическим сервисом. Графический гео-редактор. Применение: инструмент планирования при спасательных операциях. Проект некоммерческий, ориентирован на социальную задачу. Платформа: ГИС с веб-доступом = база данных + блок визуализации предпочтительно на базе leaflet Задача: - визуализация на карте ...

    Закрыт
    8 лет назад
  • Нужна программа для учета рабочего времени. Состоит из полноэкранного модуля с кнопками для работников, которые с помощью сенсорного монитора отмечают приход и уход с работы. Программа обрабатывает и выдает отчет. Примерно как выглядит отчет и ...

    Закрыт
    11 лет назад
  • Дизайн и его прототип в HTML: https://disk.yandex.ru/public/?hash=doFh2UiyiHD%2BWHFAgfCI9MlGEaaQevbq7WgCrtAwwso%3D Необходимо создать работающий прототип интерфейса клиентского приложения на базе библиотеки gtk2 согласно указанному дизайну. В результате должно быть предоставлено работающее приложение, в котором реализованы все окна и формы модели ...

    Закрыт
    11 лет назад
  • Нужен макрос, который 1 позволял выбрат столбец 2 находил в столбце ячейки с данным слово 3 удалял на мой выбо либо всю строку либо только содержание ячейки Это можно реализовать в виде двух макросов. Концом столбца считается 20 ...

    Закрыт
    11 лет назад
  • Есть директория с папками разного уровня вложенности. В них файлы, среди которых могут быть с расширением htm, html, txt. В программе или скрипте конфиг, в котором можно указать конечное местоположение обработанной директории, ключевое слово или ...

    Закрыт
    11 лет назад
  • $50

    Доброго времени суток! требуется переделать не сложную программу, саму программу дам, нужно изменить «под меня» на данный момент программа есть в паблике, требуется доработка со временем не спешу, требований к проге не много! чуть-чуть дополню, чтобы было меньше ...

    Закрыт
    11 лет назад
  • Добрый день. Есть не много не стандартная задача. Необходима программа которая могла бы "преобразовывать" звуки получаемые с микрофонов ( минимум 4 микрофона) в эквалайзер на монитор. Каждая дорожка эквалайзера должна соответствовать 1 микрофону. Микрофон - компьютер - монитор. Разработка ...

    Закрыт
    11 лет назад
  • Приветствую! Ищу человека, с опытом разработки под Mac OS. Очень приветствуется знание в области системных служб, нужно будет написать утилиту, связанную с DNS службой. Пишите в ЛС.

    Закрыт
    11 лет назад