excel到可可中的plist转换,反之亦然

Posted

技术标签:

【中文标题】excel到可可中的plist转换,反之亦然【英文标题】:excel to plist conversion in cocoa and vice-versa 【发布时间】:2011-02-04 19:55:17 【问题描述】:

我想从一个 excel 文件创建一个 plist 文件。定义了excel和plist的结构。 Excel 文件只有两列,一列是“key”,另一列是对应的“value”列。 所以最终生成的 plist 是这样的:

<key>keyString1</key>
<string>valueString1</string>
<key>keyString2</key>
<string>valueString2</string> 
<key>keyString3</key>
<string>valueString3</string>   
.............................
.............................
.............................
<key>keyStringn</key>
<string>valueStringn</string>

现在的问题是“keys”和“values”的字符串值是反过来的字符串,即它们不是一个单词字符串。它们可能不止一行。因此我不能在这里使用 csv 文件结构。

需要您的紧急帮助。

请建议如何从 excel 表中读取值,以便可以将两个列值分开。任何示例代码都会添加帮助。

【问题讨论】:

【参考方案1】:

我通过在 excel 中编写一个公式来为您创建 plist 文件的文本来实现这一点。很简单。

1) (可选) 在 XCode 中,创建一个 plist,它最终具有您想要的格式。保存,然后在查找器中转到此。在 textWrangler 或文本编辑中打开它,以便您可以查看 plist 中每个元素的标签。

例如,您应该找到类似的内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">

<dict>

    <key>First Key Name</key>
    <array>
        <string>Before God we are all equally wise</string>
        <string></string>
        <string>Albert Einstein</string>
        <integer>0</integer>
    </array>

    <key>Second Key Name</key>
    <array>
        <string>Do not worry about your troubles.</string>
        <string></string>
        <string>Albert Einstein</string>
        <integer>0</integer>
    </array>

</dict>
</plist>

2) 我会假设: - 您的电子表格代表了许多行/对象/级别的相同 4 个属性的描述 - 您将每个数组作为电子表格中的单独行 - 以相同的顺序为每一行描述相同的属性。 - 您将能够通过知道它们存储在哪个索引来访问数组中的项目。即,我将通过查看索引 2 处的第二个数组来获得第二个作者。

您的电子表格应如下所示:

           A                B            C             D                E            F

     /--(Key Names)--\/-------------------(Properties of Each)-----------------\

1    Level Name      |   Quote        |  Notes  |   Author        |  Favorited  | 
     ____________________________________________________________________________
2    First Key Name  |  Before God... |         | Albert Einstein |      0      |
3    Second Key Name |  Do not wor... |         | Albert Einstein |      0      |
.
.
.

所以我的每个对象都会在我的字典中获得自己的键,每个对象由 3 个字符串和一个整数描述。

3) 公式

在我的电子表格最后一列的右侧,我将编写一个公式来生成该行的 xml 代码:

(F2) = CONCATENATE ("<key>",A2,"</key> <array> <string>",B2,"</string> <string>",C2,"</string> <string>",D2,"</string> <integer>",E2,"</integer> </array>")

将此单元格的右下角向下拖动到所有其他行中,它们将自动填充每一行的信息。

同样,在电子表格底部的所有行下,您可以使用另一个公式来连接行。假设您有 300 行:

(F4) = CONCATENATE (F2:F300) 

现在将这些数据复制到一个文本文件中,并添加最后几个标签和文档类型信息,您可以从上面复制这些信息。使用扩展名 .plist 保存,一切顺利!将文件添加回您的 xcode 项目并像任何其他 plist 一样加载它。

【讨论】:

注意:您也可以在 Google 表格中执行此操作!它只是将大量字符串连接在一起!【参考方案2】:

要将数据从 Excel 导出到文本文件,请使用“另存为”命令。

常用的文本文件格式有两种:

分隔文本文件 (.txt),其中 TAB 字符(ASCII 字符代码 009)通常分隔每个文本字段。

逗号分隔值文本文件 (.csv),其中逗号字符 (,) 通常用于分隔文本的每个字段。

您可以更改使用的分隔符。

http://office.microsoft.com/en-us/excel-help/import-or-export-text-txt-or-csv-files-HP010099725.aspx#BMchange_the_delimiter_that_is_used_in_

【讨论】:

以上是关于excel到可可中的plist转换,反之亦然的主要内容,如果未能解决你的问题,请参考以下文章

Mac下使用数据库将Excel数据转换存入.plist

碳到可可的转换库?

二进制plist结构

xlsx to plist in Spanish - 重音字符丢失

plist中的NSdictionary对象需要是数组的数组,怎么转换?

将字节转换为 dart 中的位,反之亦然