Создание акта в word C#

268
28 февраля 2018, 06:15

Доброго времени суток. Нужно создать акт в word на основе данных, имеющихся на winforms. Подскажите, как лучше это сделать или с чего вообще начать? На листе будет отформатированный текст и таблица, число строк в которой каждый раз будет разным, но не более 10. Примерный внешний вид акта можно увидеть на фото ниже. Места, где замазано, как раз надо будет заменить на свои. Ну и, как писал выше, добавить строки в таблицу. В изначальном шаблоне есть только шапка таблицы, без строк.

Answer 1

Используй стандартное расширение Microsoft.Office.Interop.Word и подготовь шаблон с данного документа с закладками в требуемых местах. Краткий код работы с документом:

    Word._Document document;
    Word._Application application=new Word.Application();
    object missingObj = Missing.Value;
    object templatePathObj = documentpath;
    //открытие файла
    try
        {
            document = application.Documents.Add(ref templatePathObj, ref missingObj, ref missingObj, ref missingObj);
        }
    catch
        {
            document.Close(ref falseobj, ref missingObj, ref missingObj);
            application.Quit(ref missingObj, ref missingObj, ref missingObj);
            document = null;
            application = null;
        }
        //заполнение закладок
        object bookmarkObj = "закладка";
        Word.Range bookmarkRange = document.Bookmarks.get_Item(ref bookmarkObj).Range;
        bookmarkRange.Text = "";
        //работа с таблицей
        Word.Table _table = _document.Tables[tableNumber]; //Выбрать уже существующую таблицу внутри документа можно по ее порядковому номеру (начиная с 1 и начала документа)
        _table.Rows.Add(ref _missingObj);
        Word.Range _currentRange = _table.Cell(rowIndex, columnIndex).Range;
        _currentRange.Text="";

        //Вывод на печать
        document.PrintOut(ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj, ref missingObj);
        document.Close(Word.WdSaveOptions.wdDoNotSaveChanges);
        application.Quit();

Подробно об этом расширении есть тут и тут.

READ ALSO
Как динамически изменить слой у объекта в unity?

Как динамически изменить слой у объекта в unity?

Добрый вечерКак из кода изменить слой у 3D объекта в иерархии

464
Как задать модель для шаблона?

Как задать модель для шаблона?

Есть сайт на ASPNet Core MVC

252
Защищённая децентрализованная сеть

Защищённая децентрализованная сеть

Доброго времени сутокПытаюсь писать диплом на тему "Разработка приложения многофакторной аутентификации для защищённой децентрализованной...

213
Как задать значение смещения для строки при её форматировании

Как задать значение смещения для строки при её форматировании

Нужно на выходе получить некую таблицу

295