Библиотека документов microsoft word

Что такое библиотека документов?

SharePoint Server по подписке SharePoint Server 2019 SharePoint в Microsoft 365 Office для бизнеса Office 365 для малого бизнеса SharePoint в Microsoft 365 для малого бизнеса Еще…Меньше

Библиотека документов обеспечивает безопасное хранение файлов, простой поиск документов, совместную работу над ними и доступ к ним с любого устройства. Например, с помощью библиотеки документов на сайте в SharePoint можно хранить все файлы, относящиеся к определенному проекту или конкретному клиенту. Для добавления файлов в библиотеку и их перемещения между папками можно использовать перетаскивание.

Представление эскизов в библиотеке документов, в котором ничего не выбрано.

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

Примечание: Некоторые функции в настоящее время доступны только в классическом варианте. Нажмите кнопку Вернуться SharePoint в левом нижнем углу страницы, чтобы перейти к классическому.

По умолчанию в SharePoint и SharePoint Server 2019 есть библиотека документов, и она создается автоматически при создании нового сайта. При необходимости на сайт можно добавить дополнительные библиотеки документов. Это полезно, например, если нужно ограничить доступ к набору файлов. В каждой библиотеке отображаются список файлов, папки и основные сведения о каждом из элементов, например о том, кто создал или изменил файл. Эти сведения можно использовать для упорядочения файлов и упрощения их поиска.

В библиотеке документов вы можете:

  • Добавляйте, редактируете, удаляйте файлы,папки или ссылки из SharePoint, совместно редактируете и скачииваете документы.

  • предоставлять и отменять разрешения на доступ к библиотеке, а также к отдельным папкам и файлам в ней;

  • отслеживать действия с файлом, например узнавать, когда он в последний раз изменялся, и получать уведомления об изменениях;

  • создавать пользовательские представления библиотеки документов;

  • предоставлять общий доступ к файлам и папкам;

  • добавлять ссылки на объекты, которые находятся вне библиотеки, на файл в другой библиотеке или на внешнюю веб-страницу;

  • выделять ссылки, файлы и папки в библиотеке документов, чтобы к ним можно было быстро получать доступ.

Знакомство с библиотекой

В левом верхнем углу библиотеки документов находится главное меню.

SharePoint Меню "Библиотека документов Onine"

Здесь вы можете создавать папки, документы или ссылки на объекты, которые находятся вне библиотеки документов,

Office 365: создание папки или документа

Примечание: Список типов документов зависит от разрешений и от того, как был настроен сайт.

а также выкладывать папки и файлы.

Office 365: добавление файлов или папки в библиотеку документов

Примечание: В настоящее время папки не поддерживаются Internet Explorer.

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

В правой верхней части страницы библиотеки документов щелкните Параметры просмотра, чтобы изменить представление библиотеки документов на Список, Сжатие, Плитки. Если вы Internet Explorer, вы можете открыть библиотеку документов в Windows проводнике, нажав кнопку Просмотреть в проводнике. Вы также можете сохранить настраиваемые представления, нажав кнопку Сохранить представление как. Если вы владелец библиотеки или администратор, вы можете изменить или создать представления на странице параметров библиотеки, щелкнув Изменить текущее представление.

Office 365: изменение представления библиотеки документов

Чтобы добавить новые столбцы и выбрать столбцы для отображения, щелкните + или + Добавить столбцы в правой части столбцов, если вы в представлении списка или, если вы в представлении Плитки, щелкните Кнопка "Упорядочить" в библиотеке документов и выберите Кнопка "Добавить столбец" в библиотеке документов в правой части колонок столбцов.

Добавление столбца в библиотеку документов, подключенную к группе

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

Office 365: панель метаданных документа

При выборе файла или папки в меню в верхней левой части библиотеки документов выводится список действий, которые можно выполнять с ними.

Изменения в меню библиотеки документов в выбранном файле

Примечание: Чтобы показать меню файла или папки в представлении эскизов, щелкните правый верхний угол эскиза.

Чтобы просмотреть другую версию меню документа, щелкните имя файла правой кнопкой мыши или, если в представлении списка, щелкните много много Office 365: многоточие в списке библиотеки документов рядом с именем файла. Это меню содержит дополнительные действия, такие как Закрепление наверху, которое выделяет файлы, чтобы вы и другие люди могли быстро найти их.

Закрепление к началу меню "Файл"

Готовы начать?

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

Работа с файлами в библиотеке документов

Создание папки в библиотеке документов

Создание файла в библиотеке документов

Просмотр и изменение сведений о файле, папке или ссылке в библиотеке документов

служба хранилища и другие ограничения на программное обеспечение в SharePoint

Когда следует использовать библиотеку документов, а не OneDrive для работы или учебы?

Чтобы узнать, где лучше хранить файлы, см. статью Где сохранять OneDrive или SharePoint?.

Нужна дополнительная помощь?

SharePoint Server по подписке SharePoint Server 2019 SharePoint в Microsoft 365 Office для бизнеса Office 365 для малого бизнеса SharePoint в Microsoft 365 для малого бизнеса Еще…Меньше

Вы можете создать файл в библиотеке документов, не выходя из нее. В Microsoft 365 доступны следующие типы файлов:

  • документы Word;

  • книги Excel;

  • презентации PowerPoint;

  • записные книжки OneNote;

  • Формы для Excel 

Типы файлов, которые можно создать, зависят от шаблонов, которые владелец сайта или администратор связал с библиотекой. Если требуется создать в библиотеке файл другого типа, обратитесь к владельцу сайта или администратору.

Примечание: Чтобы добавить существующие файлы в библиотеку документов, см. Upload файлы и папки в библиотеку документов.

Создание файла в библиотеке документов

  1. Перейдите к расположению в библиотеке документов, в котором вы хотите создать файл. Если вам нужно создать папку для хранения файла, см. создание папки в библиотеке документов.

  2. В главном меню библиотеки документов нажмите кнопку Создать и выберите нужный тип файла.

    Примечание: Выбор типа файла может различаться.

    Чтобы создать файл в библиотеке документов, откройте меню Создать и выберите нужный тип файла.

  3. Добавьте текст и другие элементы в файл. Новый файл автоматически сохраняется в библиотеке документов и выводится в списке файлов. Оно имеет универсальное имя файла.

  4. После завершения щелкните стрелку «Назад» в браузере, чтобы вернуться к библиотеке документов.

  5. Если вы не видите свои файлы в библиотеке, обновите браузер.

  6. Чтобы переименовать файл, щелкните показать Кнопка Показать действия.рядом с документом, нажмите кнопку Переименовать   и введите имя. 

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

  • В зависимости от настроек библиотеки при сохранении файла могут быть запрошены дополнительные сведения о нем. Например, может быть выведен запрос типа контента файла или других сведений.

  • Если файл сохраняется в библиотеке, которая требует извлечения файлов, файл первоначально извлекается. Чтобы другие пользователи смогли вносить в него изменения, файл нужно вернуть.

  • Если библиотека требует утверждения контента, файл должен быть утвержден до того, как он станет видимым для всех пользователей с разрешением на просмотр файлов в библиотеке.

Нужна дополнительная помощь?

Продолжаем работу над приложением и сегодня изучим способы его взаимодействия с Word. Разберем основные методы программной работы с документами такого типа и попробуем применить их на практике.

Для успешного освоения материала рекомендуем вам изучить следующие понятия:

DB (Database), БД. Организованная структура, предназначенная для хранения, изменения и обработки взаимосвязанной информации, преимущественно больших объемов

Windows Presentation Foundation. Аналог WinForms, система для построения клиентских приложений Windows с визуально привлекательными возможностями взаимодействия с пользователем, графическая (презентационная) подсистема в составе .NET Framework (начиная с версии 3.0), использующая язык XAML

Демонстрация работы с документами Word в WPF

На данном занятии будет реализована возможность экспорта данных из приложения для визуализации расходов пользователей в документ Word. Расходы каждого пользователя будут экспортироваться на отдельную страницу, названием которой будет ФИО пользователя. Расходы будут просуммированы по категориям и представлены в виде таблицы. Под таблицей будет размещена информация о максимальном и минимальном платежах данного пользователя. Основные шаги построения приложения:

  1. Подготовительный этап
  2. Реализация экспорта в документ Word
  3. Завершение оформления документа Word

1. Подключаем библиотеку для работы с Word

Важно

Для экспорта данных в Word используется библиотека InteropWord (Object Library), расположенная во вкладке COM

2. Добавляем кнопку экспорта

Важно

Экспорт данных в Word будет осуществляться с помощью кнопки «Экспорт в Word»

3. Подключаем пространство имен для работы с Word

Важно

Требуемое пространство имен подключается с помощью директивы using

Реализация экспорта в документ Word

1. Получаем список пользователей и категорий

Важно

Список пользователей и категорий выгружается из базы данных

2. Создаем новый документ Word

Важно

После создания экземпляра Word в приложение добавляется новый документ, с которым далее происходит работа

3. Создаем параграф для хранения названий страниц

Важно

Основной структурной единицей текста является параграф, представленный объектом Paragraph. Все абзацы объединяются в коллекцию Paragraphs, причем новые параграфы добавляются с помощью метода Add. Доступ к тексту предоставляет объект Range, являющийся свойством Paragraph, а текстовое содержание абзаца доступно через Range.Text. В данном случае для хранения ФИО каждого пользователя создается новый параграф

4. Добавляем названия страниц

Важно

В качестве названия выбирается имя пользователя, к которому применяется стиль «Title», после чего добавляется новый параграф для таблицы с платежами

5. Добавляем и форматируем таблицу для хранения информации о платежах

Важно

После создания параграфа для таблицы и получения его Range, добавляется таблица с указанием числа строк (по количеству категорий + 1) и столбцов. Последние две строчки касаются указания границ (внутренних и внешних) и выравнивания ячеек (по центру и по вертикали)

6. Добавляем названия колонок и их форматирование

Важно

Таблица состоит из трех колонок с названиями «Иконка», «Категория» и «Сумма расходов». Названия колонок выделяются жирным шрифтом и выравниваются по центру

7. Заполняем первую колонку таблицы

Важно

Положение ячейки заносится в переменную cellRange. Метод AddPicture() класса InlineShape позволяет добавить изображение в ячейку. Иконки категорий размещаются в новой папке Assets, основные шаги создания которой изображены на скриншоте

8. Форматируем первую колонку таблицы

Важно

Для первой колонки устанавливаются длина, ширина, а также горизонтальное выравнивание по центру

9. Заполняем вторую и третью колонки

Важно

Сумма платежей приводится к нужному формату с указанием единиц измерения (руб.) непосредственно в коде

Завершение оформления документа Word

1. Добавляем максимальную величину платежа

Важно

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

2. Добавляем минимальную величину платежа

Важно

Аналогично среди всех платежей данного пользователя определяется наименьший платеж и отображается шрифтом зеленого цвета

3. Делаем заключительные шаги

Важно

По завершении работы с данными пользователя добавляется разрыв страницы. Далее, разрешается отображение таблицы по завершении экспорта. Наконец, документ сохраняется в формате .docx и .pdf

Вы познакомились с основными программными методами работы с документами Word в WPF. Теперь давайте перейдем от теории к практике!

Для закрепления полученных знаний пройдите тест

Выберите неверное утверждение относительно работы с документами Word:

Paragraph содержит все абзацы документа

Range предоставляет доступ к тексту абзаца

Обращение к ячейке начинается с указания номера строки

Range.Text и Paragraphs являются:

К сожалению, вы ответили неправильно

Прочитайте лекцию и посмотрите видео еще раз

Но можно лучше. Прочитайте лекцию и посмотрите видео еще раз

Вы отлично справились. Теперь можете ознакомиться с другими компетенциями

Вопрос тот же, что и в заголовке, но исключая работу через сервер офиса в Interop (на слабых компах с новым офисом это работает просто ужасно).

В целом по функционалу полностью устраивает OpenXml SDK, но очень уж он громоздкий и почти нет «готовых» функций, всё надо писать в «лоб» (что в целом можно, но ведь наверняка кто-то всё это уже сделал).
Есть ли что-то бесплатное и более удобное чем OpenXml (пусть даже основанный на нем).

Тот же https://github.com/JanKallman/EPPlus из ссылки выше — платный. Из рекомендаций СтакОверфлоу тоже подключил какую-то библиотеку (уже забыл название), всё очень удобно — только создает дополнительный лист с надписью «это триал блабла, перейдите по ссылке, получите бесплатный код на год…». В общем не очень интересный вариант.

Можно и дальше перебирать варианты, но может кто подскажет с высоты опыта, что сейчас наиболее удобное?

      Большинству операций, выполняемых программным способом, есть эквиваленты в пользовательском интерфейсе (UI), доступные как команды в меню и на панелях инструментов. Также существует нижележащая архитектура, обеспечивающая поддержку команд, выбираемых из UI. Всякий раз, когда вы создаете новый документ Word, он базируется на каком-либо шаблоне; расширение файлов шаблонов «.dot», а файлы документов – «.doc». Шаблон Word может содержать текст, код, стили, панели инструментов, элементы автотекста, комбинации клавиш для быстрого доступа к командам. Новый документ связывается с шаблоном и получает полный доступ к его элементам. Если вы не указываете конкретный шаблон, новый документ создается на основе стандартного шаблона «Normal.dot», который устанавливается при установке Word).

      Шаблон Normal.dot является глобальным, он доступен любому документу, который вы создаете. Вы могли бы при желании поместить весь свой код в Normal.dot и создавать все документы в своей среде на основе собственного шаблона Normal (Обычный). Но тогда его файл мог бы стать чрезмерно большим, поэтому более эффективное решение для многих разработчиков — создание собственных шаблонов для конкретных приложений. В документах, создаваемых на основе вашего шаблона, код из стандартного шаблона Normal по-прежнему будет доступен. При необходимости можно связывать документ с несколькими шаблонами в дополнение к шаблону Normal.

      Для работы с приложением Microsoft Word в .NET, используется объект Application, который является предком всех остальных объектов. Получив на него ссылку, вы можете работать с его методами и свойствами. Этот объект предоставляет большой набор методов и свойств, позволяющих программным путем управлять Microsoft Word. Код инициализации нового объекта Application, представлен ниже.

Microsoft.Office.Interop.Word.Application winword = 
  new Microsoft.Office.Interop.Word.Application();

Чтобы открыть существующий документ или создать новый, необходимо создать новый объект Document.

object missing = System.Reflection.Missing.Value;
Microsoft.Office.Interop.Word.Document document =
     winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);

      Выполняя какую-либо операцию в пользовательском интерфейсе Word (например, добавляя верхний колонтитул), вы выделяете соответствующую секцию, используя объект «Selection», определяющий текущую позицию «невидимого» курсора и применяете к ней новый параметр форматирования с использованием объекта «Range». Данный объект представляет область в документе и может включать в себя все что угодно — от пары символов, до таблиц, закладок и много другого. Вы не ограничены одним объектом «Range» — в одном документе можно определить сразу несколько таких объектов.

//Добавление верхнего колонтитула
foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)
{                   
    Microsoft.Office.Interop.Word.Range headerRange = 
    section.Headers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    headerRange.Fields.Add(headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);
    headerRange.ParagraphFormat.Alignment = 
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    headerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
    headerRange.Font.Size = 10;
    headerRange.Text = "Верхний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
}

//Добавление нижнего колонтитула
foreach (Microsoft.Office.Interop.Word.Section wordSection in document.Sections)
{                   
    Microsoft.Office.Interop.Word.Range footerRange =
   wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
    
    footerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;
    footerRange.Font.Size = 10;
    footerRange.ParagraphFormat.Alignment = 
    Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
    footerRange.Text = "Нижний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
}

Чтобы добавить текст в документ, необходимо указать позицию для вставки и сам текст.

//Добавление текста в документ
document.Content.SetRange(0, 0);
document.Content.Text = "www.CSharpCoderR.com" + Environment.NewLine;

Так же вы можете применить к тексту определенный стиль.

//Добавление текста со стилем Заголовок 1
Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
object styleHeading1 = "Заголовок 1";
para1.Range.set_Style(styleHeading1);
para1.Range.Text = "Исходники по языку программирования CSharp";
para1.Range.InsertParagraphAfter();

      В классе Microsoft.Office.Interop.Word.Document, присутствует коллекция «Tables», которая позволяет добавить таблицу в документ с использованием метода Add.

//Создание таблицы 5х5
Table firstTable = document.Tables.Add(para1.Range, 5, 5, ref missing, ref missing);

firstTable.Borders.Enable = 1;
foreach (Row row in firstTable.Rows)
{
    foreach (Cell cell in row.Cells)
    {
        //Заголовок таблицы
        if (cell.RowIndex == 1)
        {
            cell.Range.Text = "Колонка " + cell.ColumnIndex.ToString();
            cell.Range.Font.Bold = 1;
            //Задаем шрифт и размер текста
            cell.Range.Font.Name = "verdana";
            cell.Range.Font.Size = 10;                                                     
            cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
            //Выравнивание текста в заголовках столбцов по центру
            cell.VerticalAlignment = 
                 WdCellVerticalAlignment.wdCellAlignVerticalCenter;
            cell.Range.ParagraphFormat.Alignment = 
                 WdParagraphAlignment.wdAlignParagraphCenter;
        }
        //Значения ячеек
        else
        {
            cell.Range.Text = (cell.RowIndex - 2 + cell.ColumnIndex).ToString();
        }
    }
}

       Для функционирования описанного выше кода, необходимо добавить к текущему проекту объектную библиотеку MS Word. Перейдите в меню «Проект» и выберете команду «Добавить ссылку» или в обозревателе решений, найдите пункт «Ссылки» и сделайте клик правой клавишей мыши по нему, из появившегося контекстного меню выберете соответствующий пункт.

      В открывшемся окне «Добавить ссылку», перейдите на вкладку «COM» и выберете «Microsoft Word 14.0 Object Library» из предложенного списка библиотек.

В обозревателе решений у вас появится ссылка на данную библиотеку.

      Перейдите в конструктор главной формы и добавьте из панели элементов, командную кнопку «Button». Данный элемент необходим для запуска процесса создания документа и вызов MS Word для отображения.

      Сделайте двойной клик левой клавишей мыши по элементу «Button» и вы перейдете в автоматически созданный метод события «button1_Click». Добавьте в него приведенный ниже код.

try
{               
    Microsoft.Office.Interop.Word.Application winword = 
        new Microsoft.Office.Interop.Word.Application();
    
    winword.Visible = false;

    //Заголовок документа
    winword.Documents.Application.Caption = "www.CSharpCoderR.com";

    object missing = System.Reflection.Missing.Value;

    //Создание нового документа
    Microsoft.Office.Interop.Word.Document document =
        winword.Documents.Add(ref missing, ref missing, ref missing, ref missing);

    //добавление новой страницы
    //winword.Selection.InsertNewPage();

    //Добавление верхнего колонтитула
    foreach (Microsoft.Office.Interop.Word.Section section in document.Sections)
    {                   
        Microsoft.Office.Interop.Word.Range headerRange = section.Headers[
        Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
        headerRange.Fields.Add(
       headerRange, Microsoft.Office.Interop.Word.WdFieldType.wdFieldPage);
        headerRange.ParagraphFormat.Alignment = 
       Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
        headerRange.Font.ColorIndex = 
       Microsoft.Office.Interop.Word.WdColorIndex.wdBlue;
        headerRange.Font.Size = 10;
        headerRange.Text = "Верхний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
    }

    //Добавление нижнего колонтитула
    foreach (Microsoft.Office.Interop.Word.Section wordSection in document.Sections)
    { 
        //
        Microsoft.Office.Interop.Word.Range footerRange =
wordSection.Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].Range;
        //Установка цвета текста
        footerRange.Font.ColorIndex = Microsoft.Office.Interop.Word.WdColorIndex.wdDarkRed;
        //Размер
        footerRange.Font.Size = 10;
        //Установка расположения по центру
        footerRange.ParagraphFormat.Alignment = 
            Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter;
        //Установка текста для вывода в нижнем колонтитуле
        footerRange.Text = "Нижний колонтитул" + Environment.NewLine + "www.CSharpCoderR.com";
    }

    //Добавление текста в документ
    document.Content.SetRange(0, 0);
    document.Content.Text = "www.CSharpCoderR.com" + Environment.NewLine;

    //Добавление текста со стилем Заголовок 1
    Microsoft.Office.Interop.Word.Paragraph para1 = document.Content.Paragraphs.Add(ref missing);
    object styleHeading1 = "Заголовок 1";
    para1.Range.set_Style(styleHeading1);
    para1.Range.Text = "Исходники по языку программирования CSharp";
    para1.Range.InsertParagraphAfter();

    //Создание таблицы 5х5
    Table firstTable = document.Tables.Add(para1.Range, 5, 5, ref missing, ref missing);

    firstTable.Borders.Enable = 1;
    foreach (Row row in firstTable.Rows)
    {
        foreach (Cell cell in row.Cells)
        {
            //Заголовок таблицы
            if (cell.RowIndex == 1)
            {
                cell.Range.Text = "Колонка " + cell.ColumnIndex.ToString();
                cell.Range.Font.Bold = 1;
                //Задаем шрифт и размер текста
                cell.Range.Font.Name = "verdana";
                cell.Range.Font.Size = 10;                                                     
                cell.Shading.BackgroundPatternColor = WdColor.wdColorGray25;
                //Выравнивание текста в заголовках столбцов по центру
                cell.VerticalAlignment =
                WdCellVerticalAlignment.wdCellAlignVerticalCenter;
                cell.Range.ParagraphFormat.Alignment = 
                WdParagraphAlignment.wdAlignParagraphCenter;
            }
            //Значения ячеек
            else
            {
                cell.Range.Text = (cell.RowIndex - 2 + cell.ColumnIndex).ToString();
            }
        }
    }
    winword.Visible = true;
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

      Запустите ваш проект, нажав на клавиатуре, клавишу «F5». Нажмите на единственную кнопку, расположенную на главной форме вашего проекта. У вас автоматически откроется документ Microsoft Word с заполненным верхним и нижним колонтитулом, обычным и с применением стиля текстом, а так же заполненной таблицей.

      Для сохранения документа в определенной директории, добавьте приведенный ниже код, после строки «winword.Visible = true;».

//Сохранение документа
object filename = @"d:temp1.docx";
document.SaveAs(ref filename);
//Закрытие текущего документа
document.Close(ref missing, ref missing, ref missing);
document = null;
//Закрытие приложения Word
winword.Quit(ref missing, ref missing, ref missing);
winword = null;

      При работе с приложением Word в памяти компьютера создается отдельный процесс, если его не закрыть или не вывести созданный документ на экран, то он будет работать до выключения компьютера. Так же при постоянной работе с такими документами, их процессы будут накапливаться незаметно для пользователя, что может привести к зависанию компьютера или другим последствиям.

Модуль python-docx предназначен для создания и обновления файлов с расширением .docx — Microsoft Word. Этот модуль имеет одну зависимость: сторонний модуль lxml.

Модуль python-docx размещен на PyPI, поэтому установка относительно проста.

# создаем виртуальное окружение, если нет
$ python3 -m venv .venv --prompt VirtualEnv
# активируем виртуальное окружение 
$ source .venv/bin/activate
# ставим модуль python-docx
(VirtualEnv):~$ python3 -m pip install -U python-docx

Основы работы с файлами Microsoft Word на Python.

  • Открытие/создание документа;
  • Добавление заголовка документа;
  • Добавление абзаца;
  • Применение встроенного стиля в Microsoft Word к абзацу;
  • Жирный, курсив и подчеркнутый текст в абзаце;
  • Применение стилей Microsoft Word к символам текста (к прогону);
    • Пользовательский стиль символов текста;
  • Добавление разрыва страницы;
  • Добавление картинки в документ;
  • Чтение документов MS Word.

Открытие/создание документа.

Первое, что вам понадобится, это документ, над которым вы будете работать. Самый простой способ:

from docx import Document

# создание документа
document = Document()
# открытие документа
document = Document('/path/to/document.docx')

При этом создается пустой документ, основанный на «шаблоне» по умолчанию. Другими словами, происходит примерно то же самое, когда пользователь нажимает на иконку в Microsoft Word «Новый документ» с использованием встроенных значений по умолчанию.

При этом шрифт документа и его размер по умолчанию для всего документа можно задать следующим образом:

from docx import Document
from docx.shared import Pt

doc = Document()
# задаем стиль текста по умолчанию
style = doc.styles['Normal']
# название шрифта
style.font.name = 'Arial'
# размер шрифта
style.font.size = Pt(14)
document.add_paragraph('Текст документа')

Так же, можно открывать существующий документ Word и работать с ним при помощи модуля python-docx. Для этого, в конструктор класса Document() необходимо передать путь к существующему документу Microsoft Word.

Добавление заголовка документа.

В любом документе, основной текст делится на разделы, каждый из которых начинается с заголовка. Название таких разделов можно добавить методом Document.add_heading():

# без указания аргумента `level` 
# добавляется заголовок "Heading 1"
head = document.add_heading('Основы работы с файлами Microsoft Word на Python.')
from docx.enum.text import WD_ALIGN_PARAGRAPH
# выравнивание посередине
head.alignment = WD_ALIGN_PARAGRAPH.CENTER

По умолчанию, добавляется заголовок верхнего уровня, который отображается в Word как «Heading 1». Если нужен заголовок для подраздела, то просто указываем желаемый уровень в виде целого числа от 1 до 9:

document.add_heading('Добавление заголовка документа', level=2)

Если указать level=0, то будет добавлен текст с встроенным стилем титульной страницы. Такой стиль может быть полезен для заголовка относительно короткого документа без отдельной титульной страницы.

Так же, заголовки разделов можно добавлять методом document.add_paragraph().add_run(), с указанным размером шрифта.

Например:

from docx import Document
from docx.shared import Pt

doc = Document()
# добавляем текст прогоном
run = doc.add_paragraph().add_run('Заголовок, размером 24 pt.')
# размер шрифта
run.font.size = Pt(24)
run.bold = True
doc.save('test.docx')

Добавление абзаца.

Абзацы в Word имеют основополагающее значение. Они используются для добавления колонтитулов, основного текста, заголовков, элементов списков, картинок и т.д.

Смотрим самый простой способ добавить абзац/параграф:

p = document.add_paragraph('Абзацы в Word имеют основополагающее значение.')

Метод Document.add_paragraph() возвращает ссылку на только что добавленный абзац (объект Paragraph). Абзац добавляется в конец документа. Эту ссылку можно использовать в качестве своеобразного «курсора» и например, вставить новый абзац прямо над ним:

prior_p = p.insert_paragraph_before(
          'Объект `paragraph` - это ссылка на только что добавленный абзац.')

Такое поведение позволяет вставить абзац в середину документа, это важно при изменении существующего документа, а не при его создании с нуля.

Ссылка на абзац, так же используется для его форматирования встроенными в MS Word стилями или для кастомного/пользовательского форматирования.

Пользовательское форматирование абзаца.

Форматирование абзацев происходит при помощи объекта ParagraphFormat.

Простой способ форматировать абзац/параграф:

from docx import Document
from docx.shared import Mm
from docx.enum.text import WD_ALIGN_PARAGRAPH

doc = Document()
# Добавляем абзац
p = doc.add_paragraph('Новый абзац с отступами и красной строкой.')
# выравниваем текст абзаца
p.alignment = WD_ALIGN_PARAGRAPH.JUSTIFY
# получаем объект форматирования
fmt = p.paragraph_format
# Форматируем:
# добавляем отступ слева
fmt.first_line_indent = Mm(15)
# добавляем отступ до 
fmt.space_before = Mm(20)
# добавляем отступ слева
fmt.space_after = Mm(10)
doc.add_paragraph('Новый абзац.')
doc.add_paragraph('Еще новый абзац.')
doc.save('test.docx')

Чтобы узнать, какие параметры абзаца еще можно настроить/изменить, смотрите материал «Объект ParagraphFormat»

Очень часто в коде, с возвращенной ссылкой (в данном случае p) ничего делать не надо, следовательно нет смысла ее присваивать переменной.

Применение встроенного стиля в Microsoft Word к абзацу.

Стиль абзаца — это набор правил форматирования, который заранее определен в Microsoft Word, и храниться в редакторе в качестве переменной. По сути, стиль позволяет сразу применить к абзацу целый набор параметров форматирования.

Можно применить стиль абзаца, прямо при его создании:

document.add_paragraph('Стиль абзаца как цитата', style='Intense Quote')
document.add_paragraph('Стиль абзаца как список.', style='List Bullet')

В конкретном стиле 'List Bullet', абзац отображается в виде маркера. Также можно применить стиль позже. Две строки, в коде ниже, эквивалентны примеру выше:

document.add_paragraph('Другой стиль абзаца.').style = 'List Number'

# Эквивалентно 

paragraph = document.add_paragraph('Другой стиль абзаца.')
# применяем стиль позже
paragraph.style = 'List Number'

Стиль указывается с использованием его имени, в этом примере имя стиля — 'List'. Как правило, имя стиля точно такое, как оно отображается в пользовательском интерфейсе Word.

Обратите внимание, что можно установить встроенный стиль прямо на результат document.add_paragraph(), без использования возвращаемого объекта paragraph

Жирный, курсив и подчеркнутый текст в абзаце.

Разберемся, что происходит внутри абзаца:

  • Абзац содержит все форматирование на уровне блока, такое как — отступ, высота строки, табуляции и так далее.
  • Форматирование на уровне символов, например полужирный и курсив, применяется на уровне прогона paragraph.add_run(). Все содержимое абзаца должно находиться в пределах цикла, но их может быть больше одного. Таким образом, для абзаца с полужирным словом посередине требуется три прогона: обычный, полужирный — содержащий слово, и еще один нормальный для текста после него.

Когда создается абзац методом Document.add_paragraph(), то передаваемый текст добавляется за один прогон Run. Пустой абзац/параграф можно создать, вызвав этот метод без аргументов. В этом случае, наполнить абзац текстом можно с помощью метода Paragraph.add_run(). Метод абзаца .add_run() можно вызывать несколько раз, тем самым добавляя информацию в конец данного абзаца:

paragraph = document.add_paragraph('Абзац содержит форматирование ')
paragraph.add_run('на уровне блока.')

В результате получается абзац, который выглядит так же, как абзац, созданный из одной строки. Если не смотреть на полученный XML, то не очевидно, где текст абзаца разбивается на части. Обратите внимание на конечный пробел в конце первой строки. Необходимо четко указывать, где появляются пробелы в начале и в конце прогона, иначе текст будет слитный (без пробелов). Они (пробелы) автоматически не вставляются между прогонами paragraph.add_run(). Метод paragraph.add_run() возвращает ссылку на объект прогона Run, которую можно использовать, если она нужна.

Объекты прогонов имеют следующие свойства, которые позволяют установить соответствующий стиль:

  • .bold: полужирный текст;
  • .underline: подчеркнутый текст;
  • .italic: курсивный (наклонный) текст;
  • .strike: зачеркнутый текст.
paragraph = document.add_paragraph('Абзац содержит ')
paragraph.add_run('форматирование').bold = True
paragraph.add_run(' на уровне блока.')

Получится текст, что то вроде этого: «Абзац содержит форматирование на уровне блока».

Обратите внимание, что можно установить полужирный или курсив прямо на результат paragraph.add_run(), без использования возвращаемого объекта прогона:

paragraph.add_run('форматирование').bold = True
# или
run = paragraph.add_run('форматирование')
run.bold = True

Передавать текст в метод Document.add_paragraph() не обязательно. Это может упростить код, если строить абзац из прогонов:

paragraph = document.add_paragraph()
paragraph.add_run('Абзац содержит ')
paragraph.add_run('форматирование').bold = True
paragraph.add_run(' на уровне блока.')

Пользовательское задание шрифта прогона.

from docx import Document
from docx.shared import Pt, RGBColor

# создание документа
doc = Document()
# добавляем текст прогоном
run = doc.add_paragraph().add_run('Заголовок, размером 24 pt.')
# название шрифта
run.font.name = 'Arial'
# размер шрифта
run.font.size = Pt(24)
# цвет текста
run.font.color.rgb = RGBColor(0, 0, 255)
# + жирный и подчеркнутый
run.font.bold = True
run.font.underline = True
doc.save('test.docx')

Применение стилей Microsoft Word к символам текста (к прогону).

В дополнение к встроенным стилям абзаца, которые определяют группу параметров уровня абзаца, Microsoft Word имеет стили символов, которые определяют группу параметров уровня прогона paragraph.add_run(). Другими словами, можно думать о стиле текста как об указании шрифта, включая его имя, размер, цвет, полужирный, курсив и т. д.

Подобно стилям абзацев, стиль символов текста будет определен в документе, который открывается с помощью вызова Document() (см. Общие сведения о стилях).

Стиль символов можно указать при добавлении нового прогона:

paragraph = document.add_paragraph('Обычный текст, ')
paragraph.add_run('текст с акцентом.', 'Emphasis')

Также можете применить стиль к прогону после его добавления. Этот код дает тот же результат, что и строки выше:

paragraph = document.add_paragraph()
paragraph.add_run('Обычный текст, ')
paragraph.add_run('текст с акцентом.').style = 'Emphasis'

Как и в случае со стилем абзаца, имя стиля текста такое, как оно отображается в пользовательском интерфейсе Word.

Пользовательский стиль символов текста.

from docx import Document
from docx.shared import Pt, RGBColor

# создание документа
doc = Document()
# задаем стиль текста по умолчанию
style = doc.styles['Normal']
# название шрифта
style.font.name = 'Calibri'
# размер шрифта
style.font.size = Pt(14)
p = doc.add_paragraph('Пользовательское ')
# добавляем текст прогоном 
run = p.add_run('форматирование ')
# размер шрифта
run.font.size = Pt(16)
# курсив
run.font.italic = True
# добавляем еще текст прогоном
run = p.add_run('символов текста.')
# Форматируем:
# название шрифта
run.font.name = 'Arial'
# размер шрифта
run.font.size = Pt(18)
# цвет текста
run.font.color.rgb = RGBColor(255, 0, 0)
# + жирный и подчеркнутый
run.font.bold = True
run.font.underline = True
doc.save('test.docx')

Добавление разрыва страницы.

При создании документа, время от времени нужно, чтобы следующий текст выводился на отдельной странице, даже если последняя не заполнена. Жесткий разрыв страницы можно сделать следующим образом:

document.add_page_break()

Если вы обнаружите, что используете это очень часто, это, вероятно, знак того, что вы могли бы извлечь выгоду, лучше разбираясь в стилях абзацев. Одно свойство стиля абзаца, которое вы можете установить, — это разрыв страницы непосредственно перед каждым абзацем, имеющим этот стиль. Таким образом, вы можете установить заголовки определенного уровня, чтобы всегда начинать новую страницу. Подробнее о стилях позже. Они оказываются критически важными для получения максимальной отдачи от Word.

Жесткий разрыв страницы можно привязать к стилю абзаца, и затем применять его для определенных абзацев, которые должны начинаться с новой страницы. Так же можно установить жесткий разрыв на стиль заголовка определенного уровня, чтобы с него всегда начинать новую страницу. В общем, стили, оказываются критически важными для того, чтобы получить максимальную отдачу от модуля python-docx.

Добавление картинки в документ.

Microsoft Word позволяет разместить изображение в документе с помощью пункта меню «Вставить изображение«. Вот как это сделать при помощи модуля python-docx:

document.add_picture('/path/to/image-filename.png')

В этом примере используется путь, по которому файл изображения загружается из локальной файловой системы. В качестве пути можно использовать файловый объект, по сути, любой объект, который действует как открытый файл. Такое поведение может быть полезно, если изображение извлекается из базы данных или передается по сети.

Размер изображения.

По умолчанию, изображение добавляется с исходными размерами, что часто не устраивает пользователя. Собственный размер рассчитывается как px/dpi. Таким образом, изображение размером 300×300 пикселей с разрешением 300 точек на дюйм появляется в квадрате размером один дюйм. Проблема в том, что большинство изображений не содержат свойства dpi, и по умолчанию оно равно 72 dpi. Следовательно, то же изображение будет иметь одну сторону, размером 4,167 дюйма, что означает половину страницы.

Чтобы получить изображение нужного размера, необходимо указывать его ширину или высоту в удобных единицах измерения, например, в миллиметрах или сантиметрах:

from docx.shared import Mm

document.add_picture('/path/to/image-filename.png', width=Mm(35))

Если указать только одну из сторон, то модуль python-docx использует его для вычисления правильно масштабированного значения другой стороны изображения. Таким образом сохраняется соотношение сторон и изображение не выглядит растянутым.

Классы Mm() и Cm() предназначены для того, чтобы можно было указывать размеры в удобных единицах. Внутри python-docx используются английские метрические единицы, 914400 дюймов. Так что, если просто указать размер, что-то вроде width=2, то получится очень маленькое изображение. Классы Mm() и Cm() импортируются из подпакета docx.shared. Эти классы можно использовать в арифметике, как если бы они были целыми числами. Так что выражение, width=Mm(38)/thing_count, работает нормально.

Чтение документов Microsoft Word.

В модуле python-docx, структура документа Microsoft Word представлена тремя различными типами данных. На самом верхнем уровне объект Document() представляет собой весь документ. Объект Document() содержит список объектов Paragraph(), которые представляют собой абзацы документа. Каждый из абзацев содержит список, состоящий из одного или нескольких объектов Run(), представляющих собой фрагменты текста с различными стилями форматирования.

Например:

>>> from docx import Document
>>> doc = Document('/path/to/example.docx')
# количество абзацев в документе
>>> len(doc.paragraphs)
# текст первого абзаца в документе
>>> doc.paragraphs[0].text
# текст второго абзаца в документе
>>> doc.paragraphs[1].text
# текст первого прогона второго абзаца
>>> doc.paragraphs[1].runs[0].text

Используя следующий код, можно получить весь текст документа:

text = []
for paragraph in doc.paragraphs:
    text.append(paragraph.text)
print('nn'.join(text))

А так можно получить стили всех параграфов:

styles = []
for paragraph in doc.paragraphs:
    styles.append(paragraph.style)

Использовать полученные стили можно следующим образом:

# изменим стиль 1 параграфа на 
# стиль взятый из 3 параграфа
doc.paragraphs[0].style = styles[2]

2006 г.

Word и его объекты
Лекция из курса «Основы офисного программирования и документы Word»

Биллиг Владимир Арнольдович
Интернет-Университет Информационных Технологий, INTUIT.ru

Оглавление

Целью нашего рассмотрения является знакомство с основными объектами приложения Word и, естественно, начать это знакомство с изучения, в первую очередь, каркаса документа Word.

Каркас документа Word

Каркас документа строится автоматически в момент его создания. Из общей совокупности библиотек объектов, составляющих Office 2000, в каркас документа входят те библиотеки, чьи объекты необходимы для построения документа данного типа. Часть из библиотек содержат общие объекты и входят в каркасы документов всех типов, создаваемых в Office 2000. Часть библиотек каркаса определяют специфику документа. Взгляните на каркас по умолчанию документа Word:

Каркас по умолчанию документа Word

увеличить изображение: увеличить изображение,
Рис. 1.1.  Каркас по умолчанию документа Word

Как можно видеть, в каркас входят кроме библиотеки Word еще три библиотеки и два проекта:

  • Word — библиотека, задающая основу документов Word. Здесь хранится класс, задающий корневой объект Word.Application, и все классы объектов, вложенных в корневой объект.
  • Office — библиотека объектов, общих для всех приложений Office 2000. Здесь находятся классы, определяющие инструментальные панели — CommandBar и классы других общих объектов. Здесь же находятся классы, задающие Помощника (объект Assistant и все классы, связанные с ним). В частности, появился новый объект, которого не было в предыдущей версии — Мастер Ответов (Answer Wizard).
  • Stdole — библиотека классов, позволяющая работать с OLE — объектами и реализовать Автоматизацию.
  • VBA — библиотека классов, связанных с языком VBA. Здесь хранятся все стандартные функции и константы, встроенные в язык, классы Collection и ErrObject .
  • Project — проект по умолчанию, связанный с документом. Классы, которые могут программистом создаваться в этом проекте, методы, свойства, — все это доступно для просмотра, так же, как и объекты классов, встроенных в стандартные библиотеки.
  • Normal — проект, доступный для всех документов Word. Здесь могут храниться функции и классы, используемые всеми документами.

До сих пор речь шла о каркасе, создаваемом по умолчанию. Но при работе с документом этот каркас можно существенно изменить, добавив в документ новые классы, а значит и новые свойства. Для этого достаточно включить в состав каркаса другие библиотеки классов из той совокупности, что входит в Office 2000. Заметим, набор дополнительно поставляемых библиотек в Office 2000 существенно вырос по сравнению с предыдущей версией.

А теперь о том, как это делается. Прежде всего, заметим, что расширение каркаса делается обычно руками, но можно делать это и программно. Для того чтобы вручную добавить в документ новые возможности, необходимо вначале войти в режим редактора программного проекта, для чего достаточно в меню Tools | Macro выбрать пункт Visual Basic Editor или нажать комбинацию клавиш Alt + F11. Затем уже в Редакторе из меню Tools следует выбрать пункт References и в появившемся списке возможных библиотек включить те, которые отвечают Вашим потребностям. На рис. 1.2 показан процесс подключения к документу Word новых библиотек.

Расширение возможностей каркаса документа
Рис. 1.2.  Расширение возможностей каркаса документа

В данном примере я подключил библиотеки объектов трех приложений — Outlook, Access и Excel, библиотеку с WEB — классами и загрузчик объявлений, необходимых для вызова API — функций. В результате каркас документа существенно обновился, и документ теперь обладает потенциально большими возможностями, чем документ, создаваемый по умолчанию. В этом документе можно организовать совместную работу четырех приложений Office 2000, работать с WEB — компонентами. Конечно, каркас обеспечивает только потенциальную возможность, чтобы все заработало, нужно многое сделать, наполняя каркас плотью. Например, необходимо описать и создать соответствующие объекты Application для каждого из совместно работающих приложений, прежде чем начать с ними работать.

На рис. 1.2 можно увидеть лишь небольшую часть всей совокупности библиотек (их несколько десятков), доступных в Office 2000. Завершая разговор о каркасе документа, нам остается сделать два важных замечания. Во-первых, заметим, что включение ссылок на новые библиотеки и соответствующее расширение каркаса документа немедленно отражается при просмотре объектов документа. Взгляните на рис. 1.3, где показано, что теперь все объекты, потенциально включенные в состав документа, стали доступными для просмотра и получения справки:

Окно просмотра объектов каркаса документа
Рис. 1.3.  Окно просмотра объектов каркаса документа

Во-вторых, обратим Ваше внимание на то, что технология работы в Office 2000 рекомендует создавать документы на основе некоторого шаблона. Поэтому, однажды создав документ с требуемым набором возможностей и сохранив его в качестве шаблона, в последующем можно открывать новые документы на основе этого шаблона, не задумываясь уже о том, как и какие библиотеки следует подключать.

Оглавление Вперёд

Microsoft.Office.Interop.Word

Как известно, Microsoft Word является COM-объектом, т.е. спроектирован таким образом, что позволяет другим программам подключаться к себе и управлять им. Программно можно проделать практически все операции, которые мы делаем вручную в Word: создать новый документ, внести в него правки, сохранить его и т.п. Но для ее работы требуется лицензия MS Office на каждом клиентском компьютере. Кроме того, MS Office загружается в фоновом режиме, вследствие чего занимает определенное количество оперативной памяти и загружает большое количество файлов и DLL. Приложения MS Office были разработаны как приложения для пользовательского интерфейса, и поэтому Microsoft.Office.Interop.Word работает очень медленно. Microsoft не рекомендует использовать Office Automation (или любой Office Interop) на сервере.

DocumentFormat.OpenXml

Open XML SDK предоставляет инструменты для работы с документами Office Word, Excel и PowerPoint. Он поддерживает такие сценарии, как заполнение содержимого в файлах Word из источника данных XML, разделение (измельчение) файла Word или PowerPoint на несколько файлов и объединение нескольких файлов Word, поиск и замена контента с использованием регулярных выражений. Но при присвоении некоторого стиля, в свойствах предоставляется только идентификатор предоставленого стиля, а сам стиль описывается отдельно в файле style.xml. В результате необходимости регулярного сопоставления ID стиля с контейнером style.xml для получения характеристик стилей абзацев, возрастает сложность программного использования библиотеки. link

Spire.Doc

Spire.Doc для .NET — это полностью независимая библиотека классов .NET Word, специально созданная для разработчиков, которая позволяет быстро генерировать, открывать, писать, редактировать и сохранять документы Word не требует установки в систему каждого пользователя MS Office, то есть возможность полностью независимой от него работы; объемная документация с примерами и пояснениями. Работать с библиотекой достатосно удобно. Однако полная версия Spire.Doc не является бесплатной, а бесплатная версия, FreeSpire.Doc, имеет определенные ограничения (например обработка не более 500 абзацев и 25 таблиц). link

Понравилась статья? Поделить с друзьями:
  • Библиотека для java для работы с excel
  • Бесплатный редактор excel для windows
  • Бесплатный редактор excel для iphone
  • Библиотека для excel с решением
  • Бесплатный программы word office 2010 бесплатно