最近自己正在练习写一个类似通讯录的App.所有联系人的通讯信息存在一个Excel的文件当中,如下图所示
Snip20160903_1.png
如果要在iOS中使用上面的数据,就需要将Excel中的数据转变成iOS中可以识别的文件格式,上网搜索大部分人都是转变成utf-8格式的.csv文件.但是我使用的Excel版本并没有导出.csv文件时的utf-8格式选项,造成导出的.csv文件格式错乱,并且不能被iOS中的contentsOfFile方法访问.
思考良久,采用了Excel中自带的编辑器VBA写了一段小程序将数据导出成.txt文件,然后将.txt文件另存为utf-8格式的文件.下面是我的解决步骤.
1Excel中VBA编辑器的打开方式:
Snip20160903_3.png
还可以通过设置Excel的偏好设置将开发工具的菜单栏显示出来:
Snip20160903_9.png
具体选项:
Snip20160903_6.png
Snip20160903_7.png
最后效果:
Snip20160903_11.png
这样当再次使用VBA编辑器时,就容易多了.
编辑器界面如下:
Snip20160903_13.png
每次新建一个Excel对象,就会生成一个VBAProject对象,最上面一个是根对象,我们可以把它当做Excel的模板来理解,将代码放在这里,可以在其他新建对象里面重复使用自定义编码.
下面是是VBA的代码:
Sub 导出csv文件()
'
' 导出csv文件 宏
Dim rng, c As Range
Dim str$
Set rng = ActiveSheet.Range("b2").CurrentRegion
For Each Row In rng.Rows
For Each c In Row.Cells
If c.Column <> 1 And c.Row <> 1 Then
str = str & "&" & c.Value
End If
Next
str = str & "\n"
Next
Dim FileName
FileName = "/Users/-/Desktop/tongxunlu.txt" ' 创建文件路径。
Open FileName For Output As #1 ' 打开文件。
Print #1, str ' 将字符串写入文件。
Close ' 将三个已打开的文件全部关闭。
' 键盘快捷方式: Option+Command+q
MsgBox "导出成功!"
End Sub
上述代码中的文件路径,以及单元格间的分隔符都可以自定义.然后在文件路径下就能看到导出的文件了.但文件采用的是GBK格式的文件,需要将导出的.txt文件以utf-8格式保存,才能在iOS中访问.