2009-07-23 10 views
1

J'essaie de convertir un fichier XML en DBF. En ce moment, je le fais manuellement, en ouvrant le fichier XML dans Excel 2003 et en l'enregistrant comme un type de fichier DBF 4. C'est un processus ennuyeux et fastidieux, aggravé par le fait que ni Office 2007, ni Office 2008 pour Mac n'autorisent plus l'enregistrement en tant que DBF.Convertir un fichier XML en DBF

Je voudrais un moyen d'automatiser ceci, si possible. Connaissez-vous un moyen de le faire? Je ne sais même pas quel langage de programmation utiliser pour cela ...

Répondre

2

Utilisez un XmlReader, formatez vos données et utilisez OleDb pour enregistrer dans un fichier dbf. Ici vous pouvez trouver une chaîne de connexion pour dbf: www.connectionstrings.com

+0

Utilisé votre solution et cela a fonctionné. Merci! – alex

2

Visual FoxPro a une commande XMLTOCURSOR() qui convertit XML en un curseur Visual FoxPro. Ce curseur peut être transformé en un fichier DBF sur disque à l'aide de la commande COPY TO. Un inconvénient, la complexité du XML pourrait forcer une approche différente avec XMLAdapter, surtout s'il y a du XML hiérarchique (imbriqué). Le XMLAdapter dans Visual FoxPro 9 comporte des améliorations pour traiter ce format.

Rick Schummer

+0

Les fichiers XML sont en effet plutôt complexes. En outre, chaque fichier fait environ 100 Mo de large. Serait-ce un problème lors de l'utilisation de XMLAdapter? – alex

+0

Je ne suis pas sûr parce que je n'ai pas tiré dans un fichier de cette taille. Ce ne serait pas si difficile à tester cependant. –

1

Si vous ouvrez le fichier XML dans Excel 2003 et l'enregistrer comme un type de fichier DBF 4 vous fonctionne ce que peut vous devez simplement imiter ce processus par le biais d'un programme. Il y a au moins deux approches:

1) VBA Excel en cours d'exécution whithin:

L'autre approche utilise VBA qui fonctionne dans Excel et automatise les choses que vous faites manuellement. Pour avoir un sentiment pour ça. Vous pouvez exécuter l'enregistreur de macros et refaire manuellement la transformation. Ensuite, vous voyez le code VBA qui émule les choses que vous faites. Avec un peu de peaufinage, vous devriez pouvoir automatiser l'ensemble du processus.

2) Application externe: Fondamentalement, vous créez un objet Excel dans une application Windows distincte qui encapsule Excel et vous faites les choses que vous feriez manuellement via cet objet à distance.

Exemple de code en utilisant VS 2008, C# et .NET:

....

using System; 
using Microsoft.Office.Interop.Excel; 

...

Microsoft.Office.Interop.Excel.Application oExcelApplication = new 
Microsoft.Office.Interop.Excel.Application(); 

...

oExcelApplication.Workbooks.Open(....); 

....

et enregistrez le fichier au format DBF4.

J'espère que cela aide.

+0

J'aime vraiment votre deuxième approche, car il semble assez facile à faire. Je vais essayer et voir ce que je viens avec. Merci! – alex