Подтвердить что ты не робот

Преобразование документа Excel (xls) в plist

У меня довольно простая электронная таблица Excel, и мне нужно использовать данные в приложении для iPhone. Документ xls содержит 6 столбцов и > 200 строк.

Я хотел бы создать plist из документа xls. Как я могу программно преобразовать один в другой?

4b9b3361

Ответ 1

Я опаздываю на вечеринку, но я создал настольную утилиту, которая преобразует CSV в plist. Вы можете скачать binary или использовать этот код, который требует cCSVParse. Он использует все, что находится в строке 0 для создания имен ключей, а затем генерирует словари для каждой следующей строки.

    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];

Ответ 2

Вы можете сделать это, используя простую формулу, которую вы копируете и вставляете в столбец рядом с каждой из ваших 200 + строк.

Например, предполагая, что colum A содержит список имен, а столбец B содержит подходящий набор возрастов, вы можете использовать формулу, такую ​​как следующее, чтобы в конечном итоге использовать большую часть XML для словаря на основе plist.

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

Затем вы выбираете все ячейки в этом новом столбце, которые вы можете скопировать и вставить в блокнот или другой текстовый редактор, чтобы сохранить его в виде файла plist (вы можете захотеть поместить некоторый жесткий текст в ячейку выше и ниже ваших 200 + строк, чтобы получить требуемые теги и т.д., а также...

Ответ 3

Дамы и господа,

Я пробовал любые другие рекомендуемые решения выше, но из-за символов Unicode на моем языке (турецкий) ни один из них не работал у меня... Все символы Юникода были сломаны. Затем я решил сделать для этого инструмент.

Я с гордостью представляю самый простой способ конвертировать любые файлы XLS или XLSX или CVS в plist:

http://exceltoplist.herokuapp.com/

Просто загрузите XLS, XLSX или CSV и загрузите свой Apple Plist!

Наслаждайтесь!

Примечание. Из-за свободной дино-политики Heroku может потребоваться несколько секунд, чтобы просмотреть страницу. Просто подождите 5-10 секунд, чтобы открыть страницу.

Ответ 4

Для OpenOffice используйте эту формулу

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

Ответ 5

Я нашел CONCATENATE лучшим для этого.

Ответ 6

Для моей цели мне просто нужно преобразовать CSV с двумя столбцами в файл plist. Первый столбец - это ключи, а второй - значения. Итак, я немного изменил код Danilo Campos следующим образом:

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. Здесь вы можете найти его исходный код - http://code.google.com/p/danilobits/source/checkout Обратите внимание, что для его работы с кодом теперь вам нужно изменить "Base SDK" на "Последняя OS X"

Ответ 7

Используйте http://shancarter.github.io/mr-data-converter/ для преобразования xls в Json (просто скопируйте и вставьте) (можно форматировать его, удалив белый space в http://jsonviewer.stack.hu/). сохранить json в текстовый файл с именем: in.json.

Используйте команду plutil для форматирования json для plist

plutil -convert xml1 in.json -o out.plist