Charge par programme le file CSV dans la feuille de calcul Excel (Delphi 7)

J'ai une grande quantité de données à insert dans une feuille de calcul d'un classur Excel existant. Le classur Excel aura d'autres feuilles de calcul contenant des calculs et des tables pivot. Les données peuvent avoir jusqu'à 60 000 lignes et plus de 30 colonnes. Cette solution doit fonctionner pour Excel 2003 et Excel 2007.

L'utilisation de l'object Excel OLE est trop lente, alors nous essayons de charger datatables à partir d'un file CSV. Nous avons mis au point une méthode pour charger datatables en plaçant datatables sur le presse-papiers, puis en les collant dans la feuille de calcul. Je pense que c'est un bon kludge. Existe-t-il une autre façon de charger par programme un file CSV dans une feuille de calcul? Ou peut-être une solution différente?


Mise à jour: Nous avons été frappés d'une autre tâche avant d'investir pleinement les réponses. Nous devrions pouvoir revenir à cela dans quelques semaines. Je serai certain de me remettre à jour lorsque nous reviendrons sur cette tâche.

Merci pour toutes les réponses à ce jour!

XLSReadWrite est un composant qui peut lire et écrire des files Excel de Delphi. C'est rapide et il prend en charge Excel 2003 et 2007. Vous pouvez créer de nouveaux files Excel ainsi que d'ouvrir ceux existants et les append / les modifier.

Aussi, vous n'avez pas besoin d'installer Excel pour pouvoir l'utiliser.

Voir http://www.axolot.com/components/xlsrwii20.htm

Est-il possible que vous puissiez abandonner l'obligation de travailler avec Office 2003? J'aurais recommandé le SDK Open XML Format . Il vous permet de lier les assemblages de code managé aux documents de tableur qui peuvent gérer des events tels que Ouvrir ou Fermer, et lire et écrire sur les cellules du document, entre autres. Alternativement, vous pouvez l'utiliser pour manipuler des documents XSLX à partir d'une application. Très sombre, en fait.

Étant donné que cela ne fonctionnera pas pour vous, que diriez-vous d'écrire une macro qui tire le file CSV lorsque la feuille de calcul est chargée?

vous pouvez charger le csv dans listview ou usin OLEDB pour le charger sur DBGrid, puis l'exporter vers le format de file xls à l'aide du composant TMxExport à partir de Max Components:

Composants max.

Avez-vous essayé de lier le file csv directement à la feuille de calcul.

Aller aux données -> Importer des données externes -> Importer des données, modifiez le type de file sur 'Fichiers text'

Vous pouvez ensuite actualiser la feuille de calcul lorsque le csv est mis à jour.

REMARQUE: Je n'ai pas fait cela avec le volume de données que vous avez indiqué, donc YMMV

En fait, il y a une façon assez rapide, assez ancienne (maintenant) mais probablement la plus rapide.

C'est ADO ou pour les versions antérieures DAO (notez pas ADO.NET)

Vous pouvez lire un file CSV à l'aide d'ADO et du moteur JET pour get datatables dans un jeu d'loggings ADO, puis un object Excel Range a une méthode CopyFromRecordSet qui copyra (très rapidement) du jeu d'loggings ADO (ou DAO).

http://msdn.microsoft.com/en-us/library/aa165427(office.10).aspx

Vous pouvez essayer d'utiliser des valeurs séparées par onglet au lieu de CSV – que vous ne pouvez coller ceci dans Excel 🙂