Question

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

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

Était-ce utile?

La solution

Je suis en retard à la fête mais je construit un utilitaire de bureau qui vous permet de convertir CSV à un plist. Vous pouvez télécharger le ou utiliser ce code, qui requiert cCSVParse . Il utilise tout ce qui est dans la ligne 0 pour créer des noms clés, génère ensuite 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];

Autres conseils

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

Par exemple, en supposant Colum A contient une liste de noms, et la colonne B contient un ensemble correspondant d'âges, vous pouvez utiliser une formule telle que ce qui suit pour se retrouver avec la plupart du XML pour un dictionnaire basé plist.

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

Vous sélectionnez ensuite toutes les cellules dans cette nouvelle colonne, vous pouvez copier et coller dans le bloc-notes ou un autre éditeur de texte pour enregistrer en tant que fichier plist (vous pouvez mettre un texte hardcoded dans une cellule au-dessus et en dessous de 200 lignes , afin d'obtenir les balises nécessaires etc ainsi ...

Mesdames et messieurs,

J'ai essayé d'autres solutions recommandées ci-dessus, mais en raison de caractères Unicode dans ma langue (turc) aucun d'entre eux a travaillé pour moi ... Tous les caractères unicode étaient tous brisés. Ensuite, j'ai décidé de faire un outil pour cela.

Je vous présente avec fierté la façon la plus simple de convertir tout XLS ou XLSX ou d'un fichier CVS à un plist:

http://exceltoplist.herokuapp.com/

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

Amusez-vous!

Note: En raison de la politique de Dyno libre Heroku, il peut prendre quelques instants pour parcourir la page. Il suffit de continuer à attendre pendant 5-10 secondes pour ouvrir la page.

Pour OpenOffice, utilisez cette formule

=CONCATENATE("<key>number</key><integer>"; A2;"</integer><key>MyString</key><string>";B2;"</string>")

J'ai trouvé Concatenate travailler le meilleur pour cela.

Pour mon but, j'ai juste besoin de convertir CSV avec deux colonnes de fichier plist. La première colonne est les clés et les secondes sont 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 ici son code source initiale - http://code.google.com/p/ danilobits / source / caisse S'il vous plaît noter que pour obtenir son code de travail maintenant, vous devez changer « SDK de base » à « dernier OS X »

Utilisez http://shancarter.github.io/mr-data-converter/ pour convertir xls à un Json (il suffit de copier-coller) (peut le formater à nouveau supprimer par un espace blanc dans http: // jsonviewer.stack.hu/ ). enregistrer JSON fichier texte nommé: in.json .

Utilisez la commande de plutil au format JSON plist

plutil -convert xml1 in.json -o out.plist
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top