Comment puis-je par programmation à l'interface d'une feuille de calcul Excel?
J'ai une demande pour un contrat de travail d'une organisation qui utilise Excel comme base de données et veut faire un peu de travail sur les données Excel via une base de données réelle. (Ouais, je sais, jamais l'esprit...)
Le client dispose d'une feuille Excel qu'ils utilisent en interne pour garder la trace de certains programmes gouvernementaux. Les données de cette feuille Excel utilisé pour être importés manuellement dans une base de données SQL via CSV comme format intermédiaire et mis à disposition via une petite application web. Des changements dans la feuille de calcul ou la db a été fait manuellement (par des personnes différentes) et a dû être synchronisées manuellement.
La spécification de nouvelles fonctionnalités comprend:
- télécharger le fichier Excel dans la web app
- apporter des modifications mineures via l'application web (ce bit est, bien sûr, un no-brainer)
- parfois exporter les données dans Excel
La feuille de calcul (en fait, c'est un couple d'entre eux dans un classeur) met en œuvre certaines recommandations nécessaires pour interagir avec d'autres institutions et, par conséquent, doit rester le même structurellement avant et après l'importation. Il contient beaucoup de mise en forme, les colonnes masquées et les boutons de tri ainsi que d'un lot de données de liens entre les cellules dans les différentes fiches.
Je ne veux pas reproduire la feuille de calcul à partir de zéro pour fournir de l'exportation, je ne veux extraire manuellement les colonnes appropriées en CSV avant de faire l'importation. Je suis plutôt à la recherche d'un moyen de charger le Excel, "requête" certains champs, les écrire à la DB et plus tard, de charger les données de la DB et de manipuler le contenu de la bonne cellules.
Est-il un moyen de par programmation d'interface avec une feuille de calcul existante et seulement de lire ou de modifier les bits que vous avez besoin?
OriginalL'auteur Hanno Fietz | 2008-10-25
Vous devez vous connecter pour publier un commentaire.
Nous sommes la lecture et la manipulation d'Excel-Données via Apache POI, ce qui n'est pas complet dans le décodage des fichiers Excel (à savoir la formule de cellules ne sont pas complètement pris en charge), mais nos clients sont très heureux avec nous.
PI est une Bibliothèque Java, donc si vous êtes un pur Windows boutique, il y a peut être d'autres plus naturels, mais comme je l'ai dit, notre expérience PVE est très bonne, les gens sont heureux.
De plus: je crois avoir entendu parler de Excel pilotes ODBC - c'est peut-être ce que vous voulez/besoin? (Désolé, je n'ai jamais travaillé avec eux)
OriginalL'auteur Olaf Kock
Excel est un "COM Capables d'Application" et en tant que tel, vous pouvez utiliser COM pour accéder et manipuler les données dans un document Excel. Vous ne dites pas ce que la plateforme que vous utilisez, mais si .NET alors il est vraiment très facile. Voir http://support.microsoft.com/kb/302084 pour savoir comment obtenir commencé avec le C#.
Si vous ne l'utilisez pas .net alors que toute langue qui peut interagir avec un composant COM fonctionne.
OriginalL'auteur Jackson
La même API utilisée par VBA est disponible par l'intermédiaire d'une interface COM. Il y a tout à fait un peu de livres sur le sujet. Je recommande le O'Reilly, l'un par Steven Romaine, mais vos goûts peuvent varier.
OriginalL'auteur ConcernedOfTunbridgeWells
Vous ne spécifiez pas une langue, donc si vous êtes de langue agnostique .Net vous donne quelques très puissant classes pour la manipulation des données:
pour ouvrir un fichier csv:
Importations Système.Les données.OleDb,
Les Importations D'Excel = Microsoft.Bureau de.Interop.Excel
l'ouverture d'une feuille dans un classeur est très similaire - vous de spécifier le nom de la feuille et peut alors remplir un DataSet avec l'ensemble de la plaque - vous pouvez ensuite accéder aux Tables().Lignes() de la classe DataSet pour obtenir chaque ligne de champ, d'itérer sur chaque ligne etc.
OriginalL'auteur CestLaGalere
Vous pouvez être intéressé par Excel 2007 Les fonctionnalités de Collaboration (comme pour l'édition d'un xls à partir du web).
OriginalL'auteur Gabriele D'Antona
Une autre approche serait d'écrire une fonction excel qui parle à la base de données directement et renvoie le résultat dans un tableau.
Si vous pensez que cette approche fonctionne bien, vous pourriez essayer XLLoop - ce qui vous permet d'écrire des fonctions excel en Java, Python, Ruby, Perl, R, Lisp, Erlang.
OriginalL'auteur Peter Smith