Создание, открытие и печать текстового файла из C ++ - PullRequest
16 голосов
/ 28 сентября 2008

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

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

Ответы [ 6 ]

15 голосов
/ 28 сентября 2008

Вы можете использовать Office Automation для этой задачи. Ответы на часто задаваемые вопросы об автоматизации Office с C ++ можно найти по адресу http://support.microsoft.com/kb/196776 и http://support.microsoft.com/kb/238972.

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

Вот несколько примеров того, как выполнять различные задачи в слове usign C ++:

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

4 голосов
/ 28 апреля 2011

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

2 голосов
/ 28 сентября 2008

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

Подробнее см. Запись shellexecute msdn .

1 голос
/ 28 сентября 2008

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

Хорошей отправной точкой является статья базы знаний Автоматизация делопроизводства с использованием Visual C ++

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

0 голосов
/ 01 декабря 2011

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

start /min winword <filename> /q /n /f /mFilePrint /mFileExit

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

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

Он может быть помещен в системный вызов как:

system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit");

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

/*winword.h
 *Includes functions to print Word files more easily
 */

#ifndef WINWORD_H_
#define WINWORD_H_

#include <string.h>
#include <stdlib.h>

//Opens Word minimized, shows the user a dialog box to allow them to
//select the printer, number of copies, etc., and then closes Word
void wordprint(char* filename){
   char* command = new char[64 + strlen(filename)];
   strcpy(command, "start /min winword \"");
   strcat(command, filename);
   strcat(command, "\" /q /n /f /mFilePrint /mFileExit");
   system(command);
   delete command;
}

//Opens the document in Word
void wordopen(char* filename){
   char* command = new char[64 + strlen(filename)];
   strcpy(command, "start /max winword \"");
   strcat(command, filename);
   strcat(command, "\" /q /n");
   system(command);
   delete command;
}

//Opens a copy of the document in Word so the user can save a copy
//without seeing or modifying the original
void wordduplicate(char* filename){
   char* command = new char[64 + strlen(filename)];
   strcpy(command, "start /max winword \"");
   strcat(command, filename);
   strcat(command, "\" /q /n /f");
   system(command);
   delete command;
}

#endif
0 голосов
/ 28 сентября 2008

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

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

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

...