Преобразование документа Excel (xls) в plist
У меня довольно простая электронная таблица Excel, и мне нужно использовать данные в приложении для iPhone. Документ xls содержит 6 столбцов и > 200 строк.
Я хотел бы создать plist из документа xls. Как я могу программно преобразовать один в другой?
Ответы
Ответ 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:
Просто загрузите 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