Je n'avais jamais utilisé d'outils tiers, car je n'ai écrit que des applications Office Automation pour les PC sur lesquels Office est déjà installé.
Créer des documents à partir de zéro, ou en les basant sur un modèle, est assez simple. Avec les modèles, vous pouvez définir des signets et des champs de fusion et publipostage pour faciliter la recherche et le remplacement des éléments de document.
Voici un certain nombre de choses que vous pouvez trouver utiles:
Arguments nommés et en option
Le modèle d'objet Word est assez facile à travailler. VB.NET était plus facile à utiliser que C#: comme les API Office Automation ont été écrites à l'origine avec VB, vous pouvez tirer parti des paramètres facultatifs. Dans les versions antérieures de C#, vous deviez spécifier chaque argument dans les appels API, ce qui était assez fastidieux. Je comprends que cela a changé dans Visual C# 2010:
Comment: utiliser Named et arguments facultatifs en programmation Bureau (C# Guide de programmation) http://msdn.microsoft.com/en-us/library/dd264738.aspx
Tutoriels
J'ai trouvé ces tutoriels très pratique:
Bureau Automatiser programmes avec VB.NET
http://www.xtremevbtalk.com/showthread.php?t=160433
VB.NET Au Bureau tomation FAQ
http://www.xtremevbtalk.com/showthread.php?t=160459
Présentation du modèle d'objet Word à partir de a.Point de vue de NET Developer
http://msdn.microsoft.com/en-us/library/aa192495%28office.11%29.aspx
précoce et la liaison tardive
Un point à mentionner: est normalement recommandé liaison tardive contre, mais il peut être très utile si vous ne savez pas quelle version d'Office sera déployée sur l'hôte de l'application. Liaison précoce a tendance à fonctionner plus rapidement, et a l'avantage de IntelliSense dans votre IDE:
utilisant une liaison anticipée et liaison tardive dans l'automatisation
http://support.microsoft.com/kb/245115
début par rapport à la liaison tardive
http://word.mvps.org/faqs/interdev/earlyvslatebinding.htm
Rechercher et remplacer
Une chose à savoir est que les objets find et replacement peuvent ne pas fonctionner comme vous le souhaitez. Plutôt que de chercher tout le document, il recherche seulement le texte principal. Si vous avez des cadres de texte dans le document, ceux-ci seront ignorés. Au lieu de cela, vous devez parcourir toutes les StoryRanges et rechercher le contenu de chacune. Voici ce que je fais dans VB.NET pour rechercher l'histoire de texte et cadres texte:
Private Sub FindReplaceAll(ByVal objDoc As Object, ByVal strFind As String, ByVal strReplacement As String)
Dim rngStory As Object
For Each rngStory In objDoc.StoryRanges
Do
If rngStory.StoryType = wdMainTextStory Or rngStory.StoryType = wdTextFrameStory Then
With rngStory.Find
.Text = strFind
.Replacement.Text = strReplacement
.Wrap = wdFindContinue
.Execute(Replace:=wdReplaceAll)
End With
End If
rngStory = rngStory.NextStoryRange
Loop Until rngStory Is Nothing
Next rngStory
End Sub
StoryRanges Collection Object
http://msdn.microsoft.com/en-us/library/bb178940%28office.12%29.aspx
+1 Merci pour le lien et aussi pour me rappeler que Word devrait être installé sur le serveur si son API était utilisée directement. –
Le composant Adpose semble assez intéressant. Leur site pointe vers une page intéressante sur le site de Microsoft, qui parle des problèmes avec l'automatisation de bureau côté serveur: http://support.microsoft.com/default.aspx?scid=kb;EN-US;q257757#kb2 – Mike
@Mike, merci pour le lien, c'est très révélateur. –