Convertir un document Excel (xls) en plist

J'ai une feuille de calcul Excel assez simple, et j'ai besoin d'utiliser les données dans une application iPhone. Le document xls a 6 colonnes et > 200 lignes.

Je voudrais créer un plist à partir du document xls. Comment puis-je convertir l'un à l'autre, par programmation?

25
demandé sur Mogsdad 2009-10-10 00:55:54

7 réponses

Je suis en retard à la fête mais j'ai construit un utilitaire de bureau qui convertira CSV en plist. Vous pouvez télécharger le binaire, ou utiliser ce code, qui exige cCSVParse. Il utilise tout ce qui est dans la ligne 0 pour créer des noms de clés, puis génère des dictionnaires pour chaque ligne successive.

    CSVParser *parser = [CSVParser new];
[parser openFileWithPath:pathAsString];
NSMutableArray *csvContent = [parser parseFile];
[parser closeFile];

if (pathAsString != nil)
{

    NSArray *keyArray = [csvContent objectAtIndex:0];

    NSMutableArray *plistOutputArray = [NSMutableArray array];

    NSInteger i = 0;

    for (NSArray *array in csvContent)
    {



        NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];

        NSInteger keyNumber = 0;

        for (NSString *string in array)
        {

            [dictionary setObject:string forKey:[keyArray objectAtIndex:keyNumber]];

            keyNumber++;

        }

        if (i > 0)
        {
            [plistOutputArray addObject:dictionary];
        }

        i++;

    }

    NSMutableString *mutableString = [NSMutableString stringWithString:pathAsString];
    [mutableString replaceOccurrencesOfString:@".csv" withString:@".plist" options:nil range:NSMakeRange([mutableString length]-4, 4)];

    NSURL *url = [NSURL fileURLWithPath:mutableString];


    [plistOutputArray writeToURL:url atomically:YES];
47
répondu Danilo Campos 2009-12-05 06:49:00

Vous pouvez le faire en utilisant une formule simple que vous copiez et collez une colonne à côté de chacune de vos 200 lignes.

Par exemple, en supposant que colum a contient une liste de noms et que la colonne B contient un ensemble d'âges correspondant, vous pouvez utiliser une formule telle que la suivante pour obtenir la plupart du XML pour un dictionnaire basé sur plist.

=CONCATENATE("<key>Name</key><string>", A1,"</string><key>Age</key><integer>",B1,"</integer>")

Vous sélectionnez ensuite toutes les cellules de cette nouvelle colonne que vous pouvez copier et coller dans le bloc-notes ou un autre éditeur de texte pour l'enregistrer en tant que fichier plist (vous peut vouloir mettre du texte codé en dur dans une cellule au-dessus et en dessous de vos 200 + lignes, afin d'obtenir les balises requises, etc...

38
répondu Christopher Fairbairn 2009-10-23 03:02:18

Mesdames et messieurs,

J'ai essayé toutes les autres solutions recommandées ci-dessus, mais à cause des caractères Unicode dans ma langue (turc), aucune d'entre elles n'a fonctionné pour moi... Tous les caractères unicode étaient tous cassés. Puis j'ai décidé de faire un outil pour cela.

Je présente fièrement le moyen le plus simple de convertir n'importe quel fichier XLS ou XLSX ou CVS en plist:

Http://exceltoplist.herokuapp.com/

Il suffit de télécharger votre XLS, XLSX ou CSV et télécharger votre Apple Plist!

Profitez!

Remarque: En Raison de la Politique de dyno libre de Heroku, cela peut prendre quelques instants pour parcourir la page. Il suffit de garder en attente pendant 5-10 secondes pour ouvrir la page.

26
répondu scaryguy 2014-12-02 03:59:07

Pour OpenOffice, utilisez cette formule

=CONCATENATE("<key>number</key><integer>"; A2;"</integer><key>MyString</key><string>";B2;"</string>")
4
répondu Swaroop S 2013-05-04 10:46:34

J'ai trouvé le CONCATÉNAT pour fonctionner le mieux pour cela.

1
répondu Steve B 2011-10-26 01:31:24

Pour mon but, j'ai juste besoin de convertir CSV avec deux colonnes en fichier plist. La première colonne est des clés et la seconde est des valeurs. Donc, je change légèrement Danilo Campos code comme suit:

CSVParser *parser = [CSVParser new];
[parser openFileWithPath:pathAsString];
NSMutableArray *csvContent = [parser parseFile];
[parser closeFile];

if (pathAsString != nil)
{
    NSMutableDictionary *plistOutputArray = [NSMutableDictionary dictionary];

    for (NSArray *array in csvContent)
    {
        NSString *key = (NSString *)([array objectAtIndex:0]);
        NSString *value = (NSString *)([array objectAtIndex:1]);

        [plistOutputArray setObject:value forKey:key];
    }

    NSMutableString *mutableString = [NSMutableString stringWithString:pathAsString];
    [mutableString replaceOccurrencesOfString:@".csv" withString:@".plist" options:nil range:NSMakeRange([mutableString length]-4, 4)];

    NSURL *url = [NSURL fileURLWithPath:mutableString];

    [plistOutputArray writeToURL:url atomically:YES];
}

P.S. vous pouvez trouver son code source initial ici - http://code.google.com/p/danilobits/source/checkout Veuillez noter que pour que son code fonctionne maintenant, vous devez changer " SDK de Base "en"Latest OS X"

1
répondu Anton Malmygin 2013-12-26 19:42:30

Utiliser http://shancarter.github.io/mr-data-converter/ pour convertir xls pour un Json(il suffit de copier-coller)(peut re formater supprimer l'espace blanc dans http://jsonviewer.stack.hu/). enregistrer json dans un fichier texte nommé: dans.json .

Utilisez la commande plutil pour formater json en plist

plutil -convert xml1 in.json -o out.plist
0
répondu larva 2015-04-20 02:31:38