2009-12-18 25 views
2

Nous avons une application .NET 32 bits qui utilise la version 32 bits de DSOFile.dll 2.1 pour lire les propriétés communes à partir de documents Office. Cela fonctionne sur les versions 32 bits de Windows, pour les documents Office 2003 et Office 2007. Nous examinons maintenant le comportement de notre application dans un environnement 64 bits, et plus particulièrement dans Windows Server 2008 64 bits.Impossible de lire les accessoires doc 2007 Office utilisant x86 dsofile.dll sur le système x64

Dans cet environnement 64 bits, DSOFile.dll peut lire avec succès les propriétés de documents Office 2003 (par exemple, DOC), mais dans le cas des documents Office 2007 (par exemple, DOCX), seules les chaînes vides sont renvoyées pour toutes les propriétés, sinon une erreur est générée.

Voici mes observations:

Environnement: clean install
Lire les accessoires DOC: OK
Lire props DOCX: valeurs vides retournés

Environnement: Office 2007 Pack de compatibilité installé
Lire les accessoires DOC : OK
Lecture des accessoires DOCX: valeurs vides renvoyées

Environnement: Offi CE 2007 Pack de compatibilité SP1
Lire les accessoires DOC: OK
accessoires Lire DOCX: valeurs vides en retour

Environnement: Office 2007 installé
Lire les accessoires DOC: OK
accessoires Lire DOCX: message d'erreur = « document pas un fichier OLE "

Sur le système 64 bits, j'ai utilisé la copie de regsvr32 située dans% SystemRoot% \ Syswow64 pour enregistrer dsofile.dll.

Un conseil serait grandement apprécié.

+0

En bref aparté, vous n'avez pas à vous soucier de la version de regsvr32.exe vous utilisez, au moins si vous utilisez Windows 7. La version 64 bits appellera la version 32 bits si passé un fichier 32 bits, et vice versa. (Je ne suis pas sûr que Vista a fait la même chose mais Win 7 le fait à coup sûr.) –

Répondre

0

Vous pouvez compiler votre application sur x86 au lieu de AnyCPU, puis cela fonctionnera correctement sur Windows x64.

Une autre possibilité est d'utiliser Open XML SDK 2.0 pour Microsoft Office. Voir si elle prend en charge les applications x64.

http://www.microsoft.com/downloads/details.aspx?FamilyId=C6E744E5-36E9-45F5-8D8C-331DF206E0D0&displaylang=en

+0

L'application cible déjà x86 plutôt que AnyCPU, c'est pourquoi il peut utiliser la version x86 de dsofile pour lire DOC propriétés (ne pas ouvrir les propriétés du document XML). Je vais regarder le SDK Open XML, merci. – user234332

2

Vous pouvez trouver le code source Dsofile (un coup d'oeil sur Google) et le compiler pour 64 bits, ou d'essayer ce lien qui quelqu'un dit qu'ils ont déjà fait: http://www.keysolutions.com/blogs/kenyee.nsf/d6plinks/KKYE-79KRU6

Je J'ai aussi une version x64 ici si vous en avez besoin, je peux le télécharger.

Il ne peut pas être directement lié à votre question, mais si vous voulez l'essayer, je l'ai utilisé x86 et x64