8
votes

Comment puis-je modifier un classier Excel existant avec Perl?

avec tableur :: WriteExcel , je peux Créez un nouveau classeur, mais si je souhaite ouvrir un livre existant et modifier certaines colonnes? Comment pourrais-je accomplir ça?

Je pourrais analyser toutes les données de la feuille à l'aide de tableur :: parseexcel puis écrivez-le avec de nouvelles valeurs dans certaines lignes / colonnes à l'aide de < Code> tableur :: WriteExcel , cependant. Y a-t-il un module qui combine déjà les deux?

principalement je veux juste ouvrir un .xls , écrase certaines lignes / colonnes et enregistrez-la.


0 commentaires

4 Réponses :


14
votes

tableur :: parseexcel lira dans les fichiers Excel existants: xxx

Mais ce que vous vraiment veux être Feuille de calcul :: parseexcel :: sauvegarde , qui est une combinaison de tableur :: WriteExcel . Il y a un exemple près du bas de la documentation. < / p>


2 commentaires

Je ne vois aucun moyen d'écrire à un livre Excel à l'aide de parsexcel


Spreadsheet :: Parseexcel :: SaveParser fera cela. Vous battez mon édition. :)



3
votes

Il y a une section de la feuille de calcul :: WriteExcel Docs qui couvre Feuilles de calcul de modification et de réécriture de la réécriture .

Un fichier Excel est un fichier binaire dans un fichier binaire. Il contient plusieurs checks interconnectés et changeant même un octet peut le faire corrompre.

En tant que tel, vous ne pouvez pas simplement ajouter ou mettre à jour un fichier Excel. Le seul moyen d'y parvenir est de lire le fichier entier en mémoire, de rendre les modifications ou des ajouts requises, puis écrivez à nouveau le fichier.

Vous pouvez lire et réécrire un fichier Excel à l'aide de la feuille de calcul :: parseexcel :: sauvegarde module qui est un wrapper autour de la feuille de calcul :: parseexcel et tableur :: WriteExcel. Il fait partie du tableur :: parseexcel paquet.

Il y a aussi un exemple.


0 commentaires

1
votes

Le tableur :: parseexcel :: sauvegarde du module est un wrapper autour de Tableur :: parseXcel et tableur tableur :: WriteExcel.

J'ai récemment mis à jour la documentation avec, qu'est-ce que j'espère, est un exemple plus clair comment faire cela .


2 commentaires

Je ne reçois toujours pas vraiment cet exemple. Je ne trouve pas la documentation de ce que SavAeas accepte. Est possible de passer des poignées de fichier ou scalaire à la référence au lieu d'un nom de fichier?


Oups j'ai réalisé que John McNamara comprenait un fichier write_to_scalar.pl dans le paquet. Utilisation de celui-ci, j'ai pu créer une mémoire à la modification de la mémoire d'un fichier XLS :-D



9
votes

Si vous avez Excel installé, il est presque trivial de le faire avec Win32: : Ole . Voici l'exemple de Win32 :: Ole 's propre documentation: xxx

essentiellement, win32 :: ole vous donne tout ce qui est Disponible pour une application VBA ou Visual Basic, qui comprend une grande variété de choses - tout de l'automatisation Excel et Word à l'énumération et au montage de lecteurs de réseau via l'hôte de script Windows. Il est venu standard avec les dernières éditions d'Activeperl.


3 commentaires

De plus, vous pouvez écrire des tableaux entiers en colonnes \ rangées à la fois et cela affecte la rapidité de l'écriture. Si cela ne suffit pas, vous pouvez également écrire dans une excellence qui a une macro en elle et courir avec ce module.


Merci. J'ai remarqué une feuille de calcul :: parsexlsx :: sauvegarde n'existe pas pour que cela fonctionne beaucoup mieux pour moi.


@ USR-bin-buvant: content que ce soit utile :)