2013-07-22 8 views
3

J'ai environ 150 fichiers .xls et .xlsx que j'ai besoin de convertir en délimité par des tabulations. J'ai essayé d'utiliser l'automateur, mais je n'ai pu le faire qu'un par un. C'est définitivement plus rapide qu'ouvrir chacun individuellement, cependant. J'ai très peu de connaissances en script, donc j'apprécierais un moyen de le faire aussi facilement que possible.Conversion de masse .xls et .xlsx en .txt (délimité par des tabulations) sur un Mac

+0

Allez-vous rendre votre flux de production Automator disponible afin que je puisse voir la solution que vous avez? – Kaydell

+0

Plusieurs fois avec Automator, il est nécessaire d'utiliser une action Automator appelée "Run AppleScript". Excel prend en charge AppleEvents pour que les scripts écrits en AppleScript (ou en Python) puissent contrôler Excel via AppleEvents. Idéalement, AppleEvents vous donne une deuxième interface utilisateur, en plus de l'interface graphique. – Kaydell

+0

Obtenir les éléments du Finder spécifiés -> Ouvrir les classeurs Excel -> Enregistrer le classeur Excel (téléchargé http://automatorworld.com/archives/microsoft-office-automator-actions/, NON intégré) -> Fermer Excel Workbooks ------------------------------------- Le "Save Excel Workbook" personnalisé a une liste déroulante qui dit "enregistrer sous" avec les options "Nouveau", "Autre" et "Nouvelle variable". En dessous, il y a un menu déroulant pour "Format", contenant une tonne d'options que le flux de conversion Excel par défaut n'a pas. –

Répondre

-2

Si vous êtes prêt à utiliser Python pour cela, j'ai écrit un script qui convertit les feuilles de calcul Excel en fichiers CSV. Le code est disponible en Pastebin.

Vous juste besoin de changer la ligne suivante:

writer = csv.writer(fileout) 

à:

writer = csv.writer(fileout, delimiter="\t") 

pour faire l'onglet du fichier de sortie délimité plutôt que la virgule délimitée norme. Dans l'état actuel des choses, ce script vous invite à sélectionner les fichiers les uns après les autres (vous permet de sélectionner dans une boîte de dialogue), mais il peut facilement être adapté pour ramasser tous les fichiers Excel dans une arborescence donnée. correspondre à un modèle donné.

Si vous essayez d'abord avec un fichier individuel et laissez-moi savoir comment vous allez, je peux vous aider avec les changements pour automatiser le reste si vous le souhaitez.

MISE À JOUR

Voici un script d'emballage, vous pouvez utiliser:

#!/usr/bin/python 

import os, sys, traceback 
sys.path.insert(0,os.getenv('py')) 
import excel_to_csv 

def main(): 
    # drop out if no arg for excel dir 
    if len(sys.argv) < 2: 
     print 'Usage: Python xl_csv_wrapper <path_to_excel_files>' 
     sys.exit(1) 
    else: 
     xl_path = sys.argv[1] 

    xl_files = os.listdir(xl_path) 
    valid_ext = ['.xls', '.xlsx', '.xlsm'] 

    # loop through files in path 
    for f in xl_files: 
     f_name, ext = os.path.splitext(f) 
     if ext.lower() in valid_ext: 
      try: 
       print 'arg1:', os.path.join(xl_path,f) 
       print 'arg2:', os.path.join(xl_path,f_name+'.csv') 
       excel_to_csv.xl_to_csv(os.path.join(xl_path,f), 
             os.path.join(xl_path,f_name+'.csv')) 
      except: 
       print '** Failed to convert file:', f, '**' 
       exc_type, exc_value, exc_traceback = sys.exc_info() 
       lines = traceback.format_exception(exc_type, exc_value, exc_traceback) 
       for line in lines: 
        print '!!', line 
      else: 
       print 'Sucessfully conveted', f, 'to .csv' 


if __name__ == '__main__': 
    main() 

Vous devrez remplacer le:

sys.path.insert(0,os.getenv('py')) 

Au sommet d'un chemin absolu du script excel_to_csv ou une variable d'environnement sur votre système.

+1

La chose amusante est que je connais un peu Python. Désolé à ce sujet, mais comment l'exécutez-vous? la sortie indique "~/Desktop/done/excel_to_csv.py: 9: ImportError: aucun module nommé xlrd " –

+0

Désolé d'avoir oublié de mentionner que vous devrez installer la bibliothèque xlrd. Vous pouvez récupérer le code source ici: https://pypi.python.org/pypi/xlrd/0.9.2. J'ai seulement utilisé python sur Windows/Linux mais je suppose que c'est la même chose sur osx - vous devriez simplement décompresser le paquet puis lancer l'installation de python.py installer une fois que vous avez téléchargé – ChrisProsser

+0

Penser à ce sujet, vous devrez peut-être ajouter Sudo à l'avant de la commande ci-dessus pour installer en tant que super-utilisateur. – ChrisProsser

0

Utilisez VBA dans un classeur de contrôle pour parcourir les classeurs sources dans un répertoire spécifié ou une liste de classeurs, en les ouvrant, en enregistrant les données converties, puis en les fermant à tour de rôle.

Questions connexes