La lecture des feuilles de calcul Excel avec Delphi
J'ai besoin de lire et d'écrire sur des feuilles de calcul Excel à l'aide de Delphi 2010. Rien de fantaisie. Juste de la lecture et de l'écriture des valeurs de certaines cellules et plages sur différentes feuilles. Besoin de travailler sans avoir Excel est installé et le soutien d'Excel 2007.
Certaines choses que j'ai regardé:
-
J'ai essayé d'utiliser ADO, qui travaille sur OK pour sélectionner tout dans une feuille entière, mais je n'ai pas eu beaucoup de chance de lecture spécifique des cellules ou des plages.
-
NativeExcel avait l'air prometteur, mais il ne semble pas être en développement actif, et ils ne répondent pas aux e-mails.
-
Axolot a un couple de produits. Le produit principal semble être très fonctionnel, mais il est cher. Ils ont une version lite, mais il ne prend pas en charge Delphi 2010.
Toutes les recommandations? Gratuit serait formidable, mais je suis ouvert à une solution commerciale, tant que c'est fiable et bien pris en charge.
Nope, juste ADO.
Bon à savoir, merci.
OriginalL'auteur Bruce McGee | 2010-03-17
Vous devez vous connecter pour publier un commentaire.
TMS Flexcel - je sais que cela ressemble à un composant de création de rapports pour Excel (ce qu'il fait très bien et est un outil très pratique à avoir dans votre trousse à outils), mais il comprend également des composants pour la lecture et l'affichage de fichiers Excel. J'ai été très impressionné par la façon dont Adrian Gallero semble savoir Excel de l'API, y compris Excel 2007.
http://www.tmssoftware.com/site/flexcel.asp
Pas gratuite, bien sûr, mais à 75 Euros je pense que c'est une bonne valeur.
C'est dans les tout premiers stades, mais TMS est enfin préparent leur prochaine sortie avec XSLX de soutien. tmssoftware.com/site/blog.asp?post=214
OriginalL'auteur RichardS
J'ai eu une très bonne chance avec ADO, à condition que la feuille Excel est un assez simple de rangée/colonne mise en page.
La clé avec l'aide d'ADO, j'ai trouvé, c'est le traitement de la feuille Excel comme base de données. Si vos feuilles de calcul Excel sont principalement linéaire de ligne et de colonne mises en page, de traitement, les lignes que des enregistrements de base de données et les colonnes des champs. Accédez à la ligne de votre choix d'abord par la recherche d'une colonne (champ) valeur (de préférence quelque chose d'unique), et de lire ensuite la cellule souhaitée dans la ligne de référencement par le champ qui est le nom de la colonne.
Si vos feuilles de calcul Excel sont plus de forme libre, alors qu'il sera plus difficile.
Il pourrait être un problème avec votre chaîne de connexion. Si vous souhaitez poursuivre l'ADO option en outre, publier votre chaîne de connexion ici. Je suis loin d'être un expert, mais si je ne suis pas en mesure de repérer quelque chose peut-être quelqu'un d'autre ici.
connectionstrings.com a réussi à me sortir d'une chaîne de connexion se lier à de nombreuses reprises.
OriginalL'auteur dongna
Ne pas écrire hors NativeExcel. Je l'ai utilisé pour un couple d'années maintenant, avec d'excellents résultats. C'est rapide et polyvalent. Je l'utilise pour produire un bien mis en forme multi-page de feuille de calcul avec des volets figés, les formules dans les cellules, et les données à partir d'un client de la base de données à utiliser pour l'entrée et ensuite l'envoyer de nouveau à moi. Mes clients étaient vraiment ravis quand ils ont obtenu la première feuille de calcul de moi, car il réduit leur charge de travail énormément, et c'était assez intuitif utiliser.
Je ne sais pas pourquoi ils n'ont pas répondu à vous parce que j'ai mis à jour leur ensemble au moins une couple de fois au cours des deux dernières années. Lors de ma licence arrive à expiration, j'ai vraiment l'intention de renouveler.
Récemment acheté NativeExcel et je dois dire que je suis s'il vous plaît avec la facilité d'utilisation et fonctionnalité
NativeXML est les coups de pied et vivant: Il fonctionne très bien avec Delphi XE!
OriginalL'auteur jrodenhi
Je le recommande SMImport /SMExport de http://www.scalabium.com
Mike a toujours été très utile et rapide pour répondre.
OriginalL'auteur Mark Robinson
Ce qui aide c'est si vous avez une sorte de contrôle sur la mise en page du fichier excel.
J'ai construit un ensemble unitaire et les tests d'acceptation cadre où les données et les contrôles de test sont toutes contenues dans une feuille de calcul Excel.
Je n'ai tout par ADO. Vous pouvez restreindre votre ADO requête SQL pour l'ensemble de la feuille, un nom de plage ou de n'importe quelle plage de la question. À mon avis et de l'expérience, cette méthode est très puissante.
Deux choses qui ne me cause quelques problèmes :
1. selon la façon dont vos feuilles sont nommés, ADO pourrait ou ne pourrait pas les voir (encore une fois, si vous avez le contrôle sur la mise en page, c'est parfait !)
2. soyez prudent sur le type de données ADO retourne quand vous lisez des données c'est à dire qu'il peut afficher les numéros des chaînes de caractères. C'est parce que ADO tente, autant que je me souvienne, à deviner le type de données basé sur les premières lignes.
Avertissement : je n'ai jamais utilisé l'un des outils mentionnés ci-dessus. ADO a fait l'affaire pour moi, et je me sens plus en contrôle depuis que j'ai écrit le code de mon cadre (enregistrer l'ADO de la partie bien évidemment...).
Avez-vous l'obtenir pour fonctionner avec une pure et simple classeur Excel ? Si oui, il pourrait y avoir un problème particulier de 2007 classeur. Si non, s'il vous plaît essayez d'abord avec un standard de fichier Excel. Faire sûr à 100% de votre chaîne de connexion est correctement formaté, un seul espace supplémentaire pourrait être le problème...
OriginalL'auteur kuzkot
Bruce, j'ai utilisé le Axolot XLSReadWriteII composant de 10 ans maintenant. Il a été très bon, et de leurs forums de support (alors que lite sur le contenu) semblent être surveillés assez bien. Le XLSReadWriteII2 version est absolument rapide, et prend en charge toutes sortes de choses comme des cartes et des graphiques, des plages nommées, en ajoutant des formules à la volée, le formatage des cellules (y compris les bordures et les ombres, fusion de cellules, alignement vertical et horizontal, auto-colonne largeur de taille, et ainsi de suite).
Je n'ai pas mis à niveau vers la dernière version (nous sommes toujours à l'aide de XLSReadWriteII2) parce que nous pouvons toujours utiliser le fichier Excel XP fichiers de format, et je n'ai pas utilisé le XLSMini à tous. Je peux dire des choses vraiment bonnes sur le produit complet, bien; en fait, j'ai simplement utilisé pour un couple de la base de données exportation des choses cette semaine.
Si vous décidez d'aller dans cette voie, j'ai un tas de notes sur la façon de faire des choses différentes qui pourraient être utiles; si vous le souhaitez, envoyez-moi une note. J'ai aussi un Delphi 2007 app qui montre juste comment faire une mise en forme différente et des alignements; je reproduites en fait déjà assez complexe rapport dans Excel complet avec tous les formats, des bordures, etc. que je serais heureuse de vous laisser ainsi.
AVERTISSEMENT: je n'ai aucune connexion avec Axolot ou de l'une de leurs employés. Je suis juste un client très heureux ceux qui ont appris le produit dans un emploi précédent, et a été suffisamment impressionné pour l'acheter quand j'ai commencé mes cours.
OriginalL'auteur Ken White
Ne vous embêtez pas avec Axolot est XLSMini (lite) version. Je n'ai pas acheté l'un ou l'autre, mais j'ai demandé à Excel 2007, un soutien au début de 2008 et Lars m'a dit XLSMini était basé sur le XLSReadWriteII et que les deux devraient être mis à jour avec Excel 2007 en même temps. XLSReadWriteII a eu Excel 2007 aide depuis avril 2008; XLSMini ne fonctionne toujours pas.
OriginalL'auteur Zoë Peterson
Avec beaucoup de chance, j'ai utilisé Axolot depuis quelques années maintenant. Le forum de support n'est pas exactement regorge de messages, mais peut-être que c'est parce qu'il fonctionne si bien?
OriginalL'auteur Steve Forest
Vous pouvez utiliser la chaîne de connexion ADO comme
http://www.connectionstrings.com/excel
que comprennent les options (dans le troisième onglet de la chaîne de connexion ado):
pour des raisons de sécurité Microsoft prévenir les modifications (avec IMEX=1)
http://support.microsoft.com/kb/904953/en
SQL exemple (n'oubliez pas les crochets):
La seule chose que vous ne pouvez pas faire, c'est la suppression:
http://support.microsoft.com/kb/257819/en
Donc pour supprimer une rangée vide!
Vous pouvez également utiliser SQL via ADO à l'exportation:
OriginalL'auteur Kachwahed
Je vous conseille d'aller pour une option où vous n'avez pas besoin d'Excel est installé sur la machine. Une fois, j'ai utilisé un composant qui pourrait facilement combler certaines des données dans une feuille sans avoir besoin d'excel est installé. Je voudrais aussi faire la plupart du travail d'Excel dans la feuille Excel lui-même. Et il suffit d'utiliser les composants de remplir quelques données sur la feuille.
Mes 2cts.
OriginalL'auteur bartvdpoel