web-dev-qa-db-ja.com

Excelドキュメント(xls)をplistに変換する

私は非常に単純なExcelスプレッドシートを持っており、iPhoneアプリでデータを使用する必要があります。 xlsドキュメントには6列、> 200行があります。

Xlsドキュメントからplistを作成したいと思います。プログラムで一方を他方に変換するにはどうすればよいですか?

25
John Muchow

パーティーに遅れましたが、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];
47
Danilo Campos

これは、200以上の各行の横にある列をコピーして貼り付ける簡単な数式を使用して行うことができます。

たとえば、列Aに名前のリストが含まれ、列Bに一致する年齢のセットが含まれているとすると、次のような式を使用して、plistベースの辞書のほとんどのXMLを作成できます。

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

次に、この新しい列内のすべてのセルを選択し、コピーしてメモ帳または別のテキストエディターに貼り付け、plistファイルとして保存します(ハードコードされたテキストを200行以上の上下のセルに順番に配置することをお勧めします必要なタグなども取得するには...

39

皆様、

上記の他の推奨される解決策を試しましたが、私の言語(トルコ語)のUnicode文字のため、どれもうまくいきませんでした...すべてのUnicode文字がすべて壊れていました。それから私はこのためのツールを作ることにしました。

XLS、XLSX、またはCVSファイルをplistに変換する最も簡単な方法を誇らしげに紹介します。

http://exceltoplist.herokuapp.com/

XLS、XLSX、またはCSVをアップロードし、Apple Plist!

楽しい!

注:Herokuの無料のdynoポリシーにより、ページを閲覧するのに少し時間がかかる場合があります。ページを開くまで5〜10秒待ちます。

26
scaryguy

OpenOfficeの場合、この式を使用します

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

私の目的では、2列のCSVをplistファイルに変換する必要があります。最初の列はキーで、2番目の列は値です。したがって、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 彼のコードを機能させるには、「BaseSDK」を変更する必要があることに注意してください。 「最新のOSX」へ

1
Anton Malmygin

CONCATENATEがこれに最適であることがわかりました。

1
Steve B

http://shancarter.github.io/mr-data-converter/ を使用してxlsJsonに変換します(コピーして貼り付けるだけです)(再フォーマットできます) http://jsonviewer.stack.hu/ )の空白を削除します。 jsonを次の名前のテキストファイルに保存します:in.json

plutilコマンドを使用して、jsonをplistにフォーマットします

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