IOS解析Excel(xlsx, xls,csv)

作者: molangwu | 来源:发表于2017-08-18 00:06 被阅读582次

    前言

    由于项目需要解析excel,在网上找了很久,都没有找到一个齐全的轮子,所以我修改和整合了网上的解析excel教程。

    教程介绍

    1.解析csv

    • CSV:
      即逗号分隔值,其文件以纯文本形式存储表格数据(数字和文本)。
    • 解析思路:
      读取该文件,根据\n和,来解析出excel数据
      \n用来区分excel的行
      ,用来区分excel的列

    2.解析 xls:

    • xls
      就是 Microsoft Excel 工作表,是一种非常常用的电子表格格式。
    • 解析思路
      通过DHxlsReader框架来实现解析

    3.解析xlsx

    • xlsx
      即Microsoft Office EXCEL 2007/2010/2013/2016文档的扩展名
    • 解析思路
      07版之后的excel基本都是xlsx格式的,其本质上其实是一个压缩文件,打开之后是一个文件夹,如下图
    1.png 2.png

    我们来分析一下这个文件夹的结构;shareString是一个公共的字符串池,相当于,给我们表中字符串贴上一个标签一样.然后我们先分析一下shareString.xml里面的内容


    3.png

    下面来解析worksheet中sheet1.xml


    4.png

    然后就这样循环的查下去,把你需要的内容查找出来

    • 具体做法
      • 解压缩,用第三方库SSZipArchive,需导入libz.tbd库
      • xml解析xl下的workbook.xml文件查询到底有几个sheet文件
      • 解析sheet中的数据,得到具体值在sharedStrings.xml中的索引,
      • 封装数据,返回其中已经有多线程了,不必自添加多线程执行此任务

    教程安装和使用

    • 把ExcelParser文件夹拷贝的项目里面
    • 导入libiconv.2.dylib和libz.tbd,
      libiconv.2.dylib添加的时候可能要注意一点,要点加号,Add Other...,然后command+shift+g, 输入/usr/lib/ ,你就可以找到了.
    • 设置header search Path
      因为DHxlsReader中用到了C的库,所以你的头文件要加上下图所示.
    5.png
    • 添加 .PCH文件
      否则会提示 NSObjct没找到
      创建一个ExcelDemoDHlibxls-Prefix.pch文件 ,文件内容如下
    //
    // Prefix header for all source files of the 'TestDHlibxls' target in the 'TestDHlibxls' project
    //
    
    #import <Availability.h>
    
    #ifndef __IPHONE_4_0
    #warning "This project uses features only available in iOS SDK 4.0 and later."
    #endif
    
    #ifdef __OBJC__
        #import <UIKit/UIKit.h>
        #import <Foundation/Foundation.h>
    #endif
    
    

    修改Precompile Prefix Headers 为 yes
    添加.pch文件路径到Prefix Header 如下图


    E31850E5-5B2C-4C54-B097-3091B9B04E25.png
    • clean项目
    • build项目

    Demo地址


    参考链接

    http://www.jianshu.com/p/95c88a7073a6

    http://blog.csdn.net/qxuewei/article/details/51733142


    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

      • 幻想无极:直接遍历 sharedStrings.xml不行的耶,没顺序的话要来没用
      • 幻想无极:请问下ZXLSXReader出来数据没有顺序规律哎
      • Somnus_chh:csv解析有没有考虑到内容值中包含","的情况,这样就会产生列与列对不上的问题?
        Somnus_chh:而且使用SSZipArchive解压的时候生成的包会有数据缺失:sweat:

      本文标题:IOS解析Excel(xlsx, xls,csv)

      本文链接:https://www.haomeiwen.com/subject/tqwnrxtx.html