121 votes

Comment améliorer le contrôle de la version des documents sur les fichiers Excel et les fichiers de schéma SQL ?

Je suis chargé de plusieurs fichiers Excel et de fichiers de schéma SQL. Comment dois-je effectuer un meilleur contrôle de version de ces fichiers ?

J'ai besoin de connaître la partie modifiée (partie différente) dans ces fichiers et de conserver toutes les versions pour référence. Actuellement, j'ajoute l'horodatage au nom du fichier, mais j'ai trouvé que cela semblait inefficace.

Existe-t-il un moyen ou une bonne pratique pour mieux contrôler les versions des documents ?

Au fait, les rédacteurs m'envoient les fichiers par e-mail.

2voto

eriklind Points 21

Cet utilitaire Excel fonctionne très bien pour moi :

Contrôle de version pour Excel

Il s'agit d'un outil de gestion des versions assez simple pour les classeurs et les macros VBA. Dès que vous livrez une version, elle est enregistrée dans un dépôt Git sur votre PC. Je n'ai jamais essayé avec les fichiers de schéma SQL, mais je suis sûr qu'il y a un moyen de contourner ce problème.

2voto

bjoern Points 135

Nous avons construit une extension de ligne de commande Git open-source pour les classeurs Excel : https://www.xltrail.com/git-xltrail .

En bref, la caractéristique principale est qu'il fait git diff fonctionne sur n'importe quel format de fichier de classeur afin de montrer la différence sur le contenu VBA du classeur (à un moment donné, nous ferons en sorte que cela fonctionne aussi pour le contenu des feuilles de calcul).

C'est encore un peu tôt, mais ça peut aider.

1voto

g19fanatic Points 3506

Comme indiqué dans le commentaire d'une autre réponse, les fichiers .xlsx ne sont que du XML.

Pour accéder au répertoire XML (qui est git -), vous devez "dézipper" le fichier .xlsx dans un répertoire. Un moyen rapide de voir cela sous Windows est de renommer le fichier <nom du fichier>.xlsx en <nom du fichier>.zip, et vous verrez le contenu interne. Je le stocke avec le fichier binaire afin que, lors de l'extraction, vous n'ayez pas à effectuer d'autres étapes pour ouvrir le document dans Excel.

1voto

stenci Points 1394

Mon approche des fichiers Excel est similaire à celle de Jon, mais au lieu de travailler avec les données Excel brutes, je les exporte vers des formats plus conviviaux.

Voici l'outil que j'utilise : https://github.com/stenci/ExcelToGit/tree/master

Tout ce dont vous avez besoin est de télécharger le fichier .xlsm (cliquez sur le lien Afficher le fichier brut sur le site Web de la Commission européenne). cette page .) N'oubliez pas de vérifier les paramètres d'Excel comme décrit dans le fichier readme. Vous pouvez également ajouter le code pour exporter les données SQL vers des fichiers texte.

Le classeur est à la fois un convertisseur d'Excel binaire en fichiers texte et un lanceur des outils Git de Windows, et il peut être utilisé également pour des projets non liés à Excel.

Ma version de travail est configurée avec des dizaines de classeurs Excel. J'utilise également le fichier pour ouvrir Git-gui pour des projets non Excel, en ajoutant simplement le dossier git à la main.

0voto

M M Points 364

Si vous ne souhaitez pas télécharger des convertisseurs tiers dans votre projet, une autre option consiste à écrire votre propre script pour convertir le fichier Excel à votre place. J'ai ajouté mon propre convertisseur en utilisant Python. Le script en python :

from pandas import DataFrame, read_excel
from argparse import ArgumentParser
from os import remove

def change_file_format_to_csv(filename):
    filename = filename.split(".")
    filename[-1] = 'csv'

if __name__ == "__main__":
    # Parse arguments
    parser = ArgumentParser()
    parser.add_argument("-i", "--input", default="", required=False,
                        help="Input file to be converted")
    args = parser.parse_args()

    # Load input
    print(args.input)
    content = read_excel(args.input)

    # Change filename to csv
    filename_output = args.input.split(".")
    filename_output[-1] = "csv"
    filename_output = '.'.join(filename_output)

    # Store input as CSV
    content.to_csv(filename_output)

    # Cat output to command line
    with open(filename_output, 'r') as f:
        print(f.read())

    # Remove temporary file
    remove(filename_output) 

Ensuite, vous ajoutez (comme expliqué dans les autres réponses) le nom du script python à vos fichiers .git/config et .gitattributes.

.gitattributes :

*.xls diff=xls

.git/config :

[diff "xlsx"]
        textconv = python ./utils/xlsx_to_csv.py --input

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X