J'ai trois questions connexes. Je souhaite créer un fichier Word avec un nom en C++. Je veux être en mesure d'envoyer la commande d'impression à ce fichier, afin que le fichier soit imprimé sans que l'utilisateur doive ouvrir le document et le faire manuellement et je veux être en mesure d'ouvrir le document. Ouverture du document devrait juste ouvrir le mot qui ouvre ensuite le fichier.Création, ouverture et impression d'un fichier Word à partir de C++
Répondre
Je n'ai aucune expérience de l'intégration avec Microsoft Office, mais je suppose qu'il existe des API que vous pouvez utiliser pour cela. Cependant, si ce que vous voulez accomplir est un moyen rudimentaire d'imprimer une sortie formatée et de l'exporter dans un fichier qui peut être manipulé dans Word, vous pourriez vouloir regarder dans le format RTF. Le format est assez simple à apprendre, et est supporté par le RtfTextBox (ou est-ce RichTextBox?), Qui a aussi quelques capacités d'impression. Le format rtf est le même format que celui utilisé par Windows Wordpad (write.exe).
Cela a également l'avantage de ne pas dépendre de MS Office pour fonctionner.
Vous pouvez utiliser Office Automation pour cette tâche. Vous pouvez trouver des réponses aux questions fréquemment posées sur Office Automation avec C++ au http://support.microsoft.com/kb/196776 et http://support.microsoft.com/kb/238972. Gardez à l'esprit que pour Office Automation avec C++, vous devez comprendre comment utiliser COM.
Voici quelques exemples de la façon d'effectuer diverses tâches dans le mot usign C++:
- http://support.microsoft.com/kb/220911/en-us
- http://support.microsoft.com/kb/238393/en-us
- http://support.microsoft.com/kb/238611/en-us
La plupart de ces échantillons montrent comment le faire en utilisant MFC, mais les concepts d'utilisation de COM pour manipuler Word sont les mêmes, même si vous utilisez ATL ou COM directement.
Vous pouvez utiliser l'automatisation pour ouvrir MS Word (en arrière-plan ou en premier plan), puis envoyer les commandes nécessaires.
Un bon point de départ est l'article de base de connaissances Office Automation Using Visual C++
Une partie du code source C est disponible en How To Use Visual C++ to Access DocumentProperties with Automation (le titre dit C++, mais il est clair C)
Lorsque vous avez le fichier et que vous voulez juste pour l'imprimer, alors regardez this entry sur le blog de Raymond Chen. Vous pouvez utiliser le verbe "imprimer" pour imprimer.
Voir le shellexecute msdn entry pour plus de détails.
En tant que réponse à similar question, je vous conseille de regarder this page où l'auteur explique quelle solution il a pris pour générer des documents Word sur un serveur, sans MsWord étant disponible, sans automatisation ou bibliothèques tierces.
Ma solution est d'utiliser la commande suivante:
start /min winword <filename> /q /n /f /mFilePrint /mFileExit
Ceci permet à l'utilisateur de spécifier une imprimante, non. de copies, etc.
Remplacez <filename>
par le nom de fichier. Il doit être entouré de guillemets doubles s'il contient des espaces. (Par exemple file.rtf
, "A File.docx"
)
Il peut être placé dans un appel système comme dans:
system("start /min winword <filename> /q /n /f /mFilePrint /mFileExit");
Voici un fichier d'en-tête de C++ avec des fonctions qui gèrent cette sorte que vous ne pas se souvenir de tous les bascule si vous l'utilisez fréquemment:
/*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
- 1. Création/ouverture d'événements en C++ et vérification de leur déclenchement
- 2. Ouverture programmée d'un fichier xml dans MS Word
- 3. Word Automation en C# - Création de tableaux dans Word
- 4. Impression d'un fichier dwf/dwfx à partir de WPF
- 5. Impression d'un fichier PDF à partir d'un service Windows
- 6. Création d'un document Microsoft Word à partir de C++ dans Visual Studio 2005
- 7. Impression de certaines pages dans MS Word
- 8. Impression par lots Documents Word .Net?
- 9. Impression à partir d'applications Web
- 10. Impression de paysage à partir de HTML
- 11. Comment puis-je obtenir le nom de fichier d'un document Word à partir de C#?
- 12. Impression de valeurs à partir de l'objet
- 13. Ouverture/activation de documents Word dans une macro VBA
- 14. Création de contenu Web et de documents Word
- 15. Comment imprimer un document Word à partir de C#
- 16. Convertir modèle Word à partir de MS Word 2003 à MS Word 2007
- 17. Impression d'un document OOXML sans installation de MS Word
- 18. Création de tables dynamiques dans Word par C# .NET
- 19. Impression d'un LPCWSTR C++ dans un fichier
- 20. Ouverture d'une clé privée RSA à partir de Ruby
- 21. Obtention et impression de caractères dans C?
- 22. Impression SVG à partir du navigateur
- 23. TinyMCE et l'importation/copier coller à partir de Microsoft Word
- 24. Création et enregistrement de document Word sur le serveur
- 25. Ouverture d'un fichier personnalisé à la demande
- 26. Ouverture du projet VS2008 à partir de VSS sous Windows7
- 27. Ouverture de plusieurs copies du document de modèle Word à l'aide de VBA pour les applications
- 28. Impression de documents Word (MVC) ASP.NET dans SharePoint
- 29. Ouverture de l'application SerialPort C#
- 30. .Net Impression à partir d'un site Web?
Ceci est une excellente réponse à la question posée. Je tiens à signaler que d'autres personnes sont liées à cette réponse par d'autres questions, que ce n'est pas approprié pour une utilisation côté serveur ou lorsqu'il n'y a pas d'utilisateur connecté. Ce n'est pas le cas dans cette question, mais il y a d'autres questions ce lien ici qui étaient sur l'utilisation côté serveur et dans ces cas Office Automation n'est pas approprié. Pour l'impression sur un bureau, il est parfaitement adapté. –