С создание документа Word

Обновлено: 20.11.2024

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

У меня есть три связанных вопроса.

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

Советую вам посмотреть на эту страницу, где автор объясняет, какое решение он принял для создания документов Word на сервере, без MsWord, без автоматизации или сторонних библиотек.

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

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

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

Использование Open Office XML SDK и Open Office XML напрямую является хорошим вариантом, если вы ориентируетесь на Word 2007 и более поздние версии.

Если вы ориентируетесь на пользователей Word 2003 и более ранних версий, возможно, это не лучший вариант. Однако даже эти пользователи могут установить бесплатный фильтр, позволяющий открывать документы Word 2007 (.docx) в Word 2003. Вы можете установить ссылку на эту загрузку из своего приложения. Большинство пользователей Word 2003 или более ранней версии, вероятно, все равно установили этот фильтр, поскольку они часто сталкиваются с ситуациями, когда люди обмениваются более новыми файлами.

SDK по-прежнему полезен тем, что содержит инструмент для просмотра файлов, который предоставляет вам графический проводник для существующих файлов. Если вы хотите узнать, как создать определенный контент, сделайте это в Word 2007, сохраните файл и посмотрите, что в нем содержится.

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

Помните, что для автоматизации Office с помощью C++ необходимо понимать, как использовать COM.

Вот несколько примеров выполнения различных задач в Word Usign C++:

В большинстве этих примеров показано, как это сделать с помощью MFC, но концепции использования COM для управления Word остаются теми же, даже если вы используете ATL или COM напрямую.

Как читать документы MS Word с помощью MFC?

Возможно, вы захотите использовать класс автоматизации Word для VC++/MFC, основанный на классе автоматизации Microsoft Excel (порт AutoXL в комплекте разработчика Excel 97). Он должен работать для всех версий MS Word (включая 2003/2007).

Чтение .docx на C++

Проще всего сделать это с помощью Word. Имеет ограничения по лицензированию.

Изменить:

В соответствии с этими вопросами/ответами можно распаковать файл Open XML и напрямую обработать файл XML:

Aspose.Words — это многофункциональный набор API-интерфейсов, который позволяет программно создавать, редактировать и преобразовывать документы MS Word. Он предоставляет широкий спектр основных, а также расширенных функций для работы с текстовыми документами. В этой статье вы узнаете, как использовать Aspose.Words для C++ и создавать документы MS Word с нуля с помощью C++. Пошаговое руководство, а также примеры кода помогут вам узнать, как вставлять текст, изображения, таблицы, списки и другие элементы в документы Word.

C++ API для создания документов MS Word

Aspose.Words for C++ позволяет генерировать и обрабатывать текстовые документы в приложениях C++ без MS Word. Вы можете скачать API или установить его в своих приложениях C++ с помощью NuGet с помощью следующей команды.

Создание документов MS Word с помощью C++

Давайте сначала создадим простой документ Word и сохраним его как файл .doc или .docx. Для этого вам необходимо выполнить следующие шаги:

  • Создайте пустой документ Word, используя класс Document.
  • Создайте объект класса DocumentBuilder, чтобы добавить содержимое в документ.
  • Добавьте текст, используя метод DocumentBuilder->Writeln().
  • Сохраните документ как файл .doc или .docx, используя метод Document->Save().

В следующем примере кода показано, как создать документ Word DOCX с помощью C++.

Редактировать или обновлять существующие файлы Word DOC/DOCX с помощью C++

Вы также можете редактировать существующие документы Word, используя Aspose.Words for C++. Для этого API использует объектную модель документа (DOM) для представления документа в памяти.DOM позволяет получить доступ к элементам документа Word, таким как верхний и нижний колонтитулы, абзацы, таблицы и т. д. Подробнее о DOM читайте здесь.

Чтобы обновить документ Word, просто загрузите его с помощью класса Document и обработайте по желанию. Ниже приведены шаги по редактированию и обновлению существующего документа Word.

  • Загрузите документ Word, используя класс Document.
  • Создайте объект класса DocumentBuilder для доступа к содержимому.
  • Доступ к нужному абзацу (или любому другому элементу) и обновление содержимого.
  • Сохраните обновленный документ с помощью метода Document->Save().

В следующем примере кода показано, как обновить текст абзаца в документе Word с помощью C++.

Вставка изображений в документ Word с помощью C++

Ниже приведены шаги для вставки изображения в документы MS Word с помощью C++.

  • Создайте новый документ Word или загрузите существующий с помощью класса Document.
  • Создайте объект DocumentBuilder и инициализируйте его с помощью объекта Document.
  • Вставьте изображение с помощью метода DocumentBuilder->InsertImage(String fileName, RelativeHorizontalPosition horzPos, double left, RelativeVerticalPosition vertPos, double top, double width, double height, WrapType wrapType).
  • Сохраните документ как файл Word.

В следующем примере кода показано, как вставить изображение в документ Word с помощью C++.

Вставка таблицы в документы Word с помощью C++

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

  • Создайте новый документ Word, используя класс Document.
  • Создайте объект класса Table.
  • Вставьте таблицу в документ с помощью метода Document->get_FirstSection()->get_Body()->AppendChild().
  • Создайте новую строку с помощью класса Row.
  • Вставьте строку в таблицу с помощью метода Table->AppendChild(row).
  • Создайте новую ячейку и вставьте в нее текст, используя метод Cell->get_FirstParagraph()->AppendChild().
  • Вставьте ячейку в строку с помощью метода Row->AppendChild().
  • Повторите процесс добавления нескольких строк.
  • Сохраните документ, используя метод Document->Save().

В следующем примере кода показано, как вставить таблицу в документ Word с помощью C++.

Добавление списков в документы Word с помощью C++

И последнее, но не менее важное: создание списка в документах Word. Ниже приведены шаги для создания маркированного списка.

  • Создайте новый документ Word или загрузите существующий с помощью класса Document.
  • Определите новый объект DocumentBuilder и инициализируйте его с помощью объекта Document.
  • Создайте список с помощью метода DocumentBuilder->get_ListFormat()->set_List(Document->get_Lists()->Add(ListTemplate::NumberArabicDot)).
  • Заполните список и установите уровень списка.
  • Сохраните документ как файл.

В следующем примере кода показано, как создать список в документе Word с помощью C++.

Заключение

В этой статье вы узнали, как создавать документы MS Word с нуля с помощью C++. Кроме того, вы узнали, как вставлять такие элементы, как текст, изображения, таблицы и списки, в новые или существующие документы Word. Вы можете узнать больше о расширенных функциях API, используя документацию.

Я надеюсь, что кто-то может указать мне правильное направление с этим. Можно ли создать документ Microsoft Word с помощью C? Это очень сложно? Или мне лучше использовать Visual Basic или что-то в этом роде?

В идеале я хотел бы сделать это на C, но я не уверен, с чего начать и что мне нужно.

Некоторые советы по этому поводу были бы очень признательны.

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

И FWIW. когда вы используете Word для создания файлов MSWord. вы используете C.
(Word был написан на C)

Легко ли получить доступ к форматам файлов, например, если у меня установлен MSWord, могу ли я просто найти их в файлах программы или что-то в этом роде? Я предполагаю, что мне понадобятся различные заголовки и тому подобное в программе C?
Кто-нибудь знает какие-нибудь туториалы или что-то в этом роде?

> Или мне лучше использовать Visual Basic или что-то в этом роде?
Но если у вас есть выбор языка реализации, выберите что-то другое, кроме C.
В частности, ищите языки с высокоуровневыми привязками, которые дают вам доступ к объектам типа «слово», таким как абзацы, страницы. и так далее.

Выделить их из языков низкого уровня будет непросто.

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

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

Сделайте шаг назад. Что ТОЧНО вы пытаетесь сделать?


РЕД. Я вижу, Салем предоставил информацию. отлично.

Там не будет много информации. Формат версии до 2007 года является проприетарным, и MS не хочет, чтобы вы связывались с ним, если только это не происходит через один из их API. API-интерфейсы COM можно использовать, но сделать это в C — тяжелая борьба. C++ проще, а если вы используете MSVC++, то это намного проще. Если вы хотите избежать этого маршрута, вы всегда можете попытаться заглянуть в необработанный формат, но это непросто (проект wv в Интернете перепроектировал формат и публикует библиотеку для чтения этих файлов, но не для их записи) .

С XML-файлами версии 2007 жизнь стала немного проще. Откройте один из этих файлов в программе распаковки (хорошо работает 7zip), и вы увидите, что это заархивированный архив. Основная часть содержимого слова находится в «word/document.xml», но для непосредственного редактирования этого файла вам необходимо использовать: библиотеку zip для доступа к содержимому, библиотеку xml для его чтения и редактирования и знание xml формат для Word 2007 - по крайней мере, это опубликовано MS.

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

6 ответов 6

Помните, что для автоматизации Office с помощью C++ необходимо понимать, как использовать COM.

Вот несколько примеров выполнения различных задач в Word Usign C++:

В большинстве этих примеров показано, как это сделать с помощью MFC, но концепции использования COM для управления Word остаются теми же, даже если вы используете ATL или COM напрямую.

Это отличный ответ на заданный вопрос. Я хочу указать другим, кто связан с этим ответом из других вопросов, что это не подходит для использования на стороне сервера или когда пользователь не вошел в систему. Это не ситуация в этом вопросе, но есть другие вопросы эта ссылка здесь, которая была об использовании на стороне сервера, и в этих случаях Office Automation не подходит. Для печати на рабочем столе он идеально подходит.

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

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

Вы можете использовать автоматизацию, чтобы открыть MS Word (в фоновом или активном режиме), а затем отправить необходимые команды.

Хорошей отправной точкой является статья базы знаний Office Automation Using Visual C++

Некоторый исходный код C доступен в разделе Как использовать Visual C++ для доступа к DocumentProperties с помощью автоматизации (в заголовке написано C++, но это обычный C)

У меня нет опыта интеграции с Microsoft Office, но я думаю, что есть несколько API, которые вы можете использовать для этого.

Однако, если вы хотите получить элементарный способ печати форматированного вывода и его экспорта в файл, который можно обрабатывать в Word, вам может понадобиться формат RTF. Формат довольно прост для изучения и поддерживается RtfTextBox (или RichTextBox?), который также имеет некоторые возможности печати. Формат rtf такой же, как и в Windows Wordpad (write.exe).

Это также имеет то преимущество, что работа не зависит от MS Office.

Мое решение — использовать следующую команду:

Это позволяет пользователю указать принтер, нет. копий и т.д.

Замените именем файла. Он должен быть заключен в двойные кавычки, если содержит пробелы. (например, file.rtf, "A File.docx")

Его можно поместить в системный вызов, например:

Вот заголовочный файл C++ с функциями, которые обрабатывают это, поэтому вам не нужно запоминать все переключатели, если вы часто его используете:

Читайте также: