我有一个很简单的Excel电子表格,希望在iPhone应用程序中使用其中的数据。这个xls文档有6列,超过200行。
我想从xls文档创建一个plist。我该如何通过编程将它们相互转换?
虽然我来晚了,但我开发了一个桌面实用程序,可以将CSV转换为plist。您可以下载二进制文件或者使用这段代码,需要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];
你可以通过使用一个简单的公式,在每个200多行旁边复制并粘贴下来的列中完成此操作。
例如,假设列A包含名称列表,列B包含匹配的年龄列表,则可以使用以下公式,以便获得基于plist字典的大部分XML内容。
=CONCATENATE("<key>Name</key><string>", A1,"</string><key>Age</key><integer>",B1,"</integer>")
然后,您选择此新列中的所有单元格,可以将其复制并粘贴到记事本或其他文本编辑器中以保存为plist文件(您可能需要在200多行上方和下方的单元格中放入一些硬编码文本,以获取所需的标签等...)
女士们先生们,
我尝试了上面提到的任何其他推荐解决方案,但由于我的语言(土耳其语)中存在Unicode字符,所以它们都没有对我起作用... 所有Unicode字符都被破坏了。 然后我决定制作一个工具来解决这个问题。
只需上传您的XLS、XLSX或CSV文件,然后下载您的Apple Plist!
享受吧!
注意:由于Heroku的免费dyno政策,浏览页面可能需要花费几秒钟的时间。 只需等待5-10秒即可打开页面。
=CONCATENATE("<key>number</key><integer>"; A2;"</integer><key>MyString</key><string>";B2;"</string>")
xls
转换为Json
(只需复制并粘贴)(可以通过在http://jsonviewer.stack.hu/中删除空格来重新格式化)。将json保存到名为in.json的文本文件中。plutil
命令将json格式化为plist。plutil -convert xml1 in.json -o out.plist
为了我的目的,我只需要将具有两列的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];
}
附注:您可以在此处找到他的初始源代码 - http://code.google.com/p/danilobits/source/checkout请注意,要使他的代码现在正常工作,您需要将“Base SDK”更改为“Latest OS X”