2010-12-14 82 views
1

Nous stockons un document Word dans une base de données Oracle 10g en tant qu'objet BLOB. Je veux lire le contenu (le texte) de ce document Word, apporter quelques modifications et écrire le texte seul dans un champ différent dans un code C#.Lecture de documents Word stockés dans Oracle DB en tant qu'objet BLOB à l'aide de C#

Comment faire cela en C# 2.0?

La façon la plus logique que je suis venu avec est ce -

  1. Lire l'objet blob
  2. magasin dans le FileSystem
  3. Extrayez le contenu du texte
  4. Faites votre travail
  5. écrire le texte dans un champ séparé.

Je peux utiliser Word.dll mais pas de solutions commerciales telles que Aspose

+0

Personnellement, je décomposerais cela; 1 & 2 sont en grande partie sans rapport avec 3, 4 et 5 ... –

+0

@Marc: Hmm. Oui, ce serait l'option la plus sensée. Je me demandais si nous pouvions lire directement le texte de l'objet BLOB. – Magic

+0

Je suis à peu près sûr que vous devriez le stocker quelque part pour pouvoir l'utiliser à partir de Word. Mais utilisez simplement le 'Chemin.GetTempFileName' fonction pour obtenir un nom de fichier temporaire pour le stocker en tant que, puis supprimez-le à la fin. –

Répondre

1

Je suppose que vous savez déjà comment faire les étapes 1 et 2 (les Oracle.DataAccess et System.IO namespaces).

Pour les étapes 3 et 5, utilisez Word Automation. Cet article de support MS vous montre comment démarrer: How to automate Microsoft Word to create a new document by using Visual C#

Si vous savez quelle version de Word il sera, alors je suggère d'utiliser une liaison anticipée, sinon utilisez la liaison tardive. Plus de détails et exemples de code ici: Using early binding and late binding in Automation

Edit: Si vous ne savez pas comment utiliser BLOBs de C#, jetez un oeil ici: How to: Read and Write BLOB Data to a Database Table Through an Anonymous PL/SQL Block

+0

Jetez un oeil à Word Automation et voir comment cela fonctionne. En ce qui concerne la liaison tardive et la liaison anticipée, votre lien ne fonctionne pas. Pouvez-vous s'il vous plaît modifier la même chose. Je vous remercie. – Magic

+0

@Magic: Désolé, lien corrigé maintenant. –

+0

L'automatisation des mots sera probablement la plus facile. Sachez simplement qu'il y a beaucoup d'embûches si vous avez besoin que cela fonctionne dans un environnement de type serveur sans surveillance. – DarinH

0

Cela revient sans cesse dans mes recherches, donc je vais ajouter une réponse pour le bénéfice des futurs lecteurs.

Je recommande fortement d'éviter l'automatisation Word. Il est douloureusement lent et vous soumet aux caprices des développeurs de Microsoft à chaque mise à niveau. Au lieu de cela, traitez manuellement les fichiers si vous le pouvez. The files are nothing but zipped archives of XML files and resources (telles que les images incorporées dans le document).

Dans ce cas, vous devez simplement décompresser le docx en utilisant votre bibliothèque préférée, manipuler le fichier XML, puis compresser le résultat. Cela nécessite l'utilisation de fichiers docx plutôt que de fichiers doc, mais comme l'explique le lien ci-dessus, il s'agit du format Word par défaut depuis Office 2007 et ne devrait pas poser de problème à moins que vos utilisateurs ne s'accrochent désespérément au passé. . Pour un exemple de gain de temps, nous avons converti, en 2007, un processus qui a duré 45 minutes en utilisant Word Automation et, sur le même matériel, il a fallu 15 SECONDES pour traiter les fichiers manuellement. Pour être clair, je ne blâme pas Microsoft pour cela - leurs méthodes d'automatisation Word ne savent pas comment vous allez manipuler le document, alors ils doivent anticiper et suivre tout ce que vous pourriez changer. Vous, d'autre part, pouvez écrire votre méthode avec la mise au point laser, car vous savez exactement ce que vous voulez faire.