環境:swift3 、Xcode8.3.1
開発経験:開発素人(swift3,c言語を入門レベルまで勉強したことあり)

現在上司の無茶振りによりios対応のzip解凍アプリを作成しています(汗)。
現に様々な解凍アプリがありますがセキュリティの関係で機能制限をつけ作成したいと思っています。

サンプルアプリやライブラリを使いUITableViewのCellに外部アプリから受け取ったデータを表示させ
zipファイルをタップした場合は解凍処理、その他の拡張子の場合は対応した外部アプリにデータを渡すことをしたいと思っています。

【現在できてる処理】
・OutlookAppからのデータの受け取り(zip等)
・AppのDocuments/Inboxディレクトリから編集可能用のディレクトリ(Documents/ListFolder)にデータを移動
・Cellに表示、タップした項目の削除処理
・zipファイル解凍処理(パスワード対応はまだ・・・)

【今回の質問で教えていただきたい処理】
・zip以外の拡張子を他のアプリに渡す。(excelやwordのAppを表示したいがアイコンが出てこない)
ExcelAppやWordAppを表示したい

様々なサイトを参考にInfo.plistを手探りで設定してみましたがそれが合っているのかも分からない状況です・・・画像の説明をここに入力

力不足なのは重々承知しておりますがどなたかご教示お願いいたします。

以下の箇所がアイコンを表示させたいと思って書いたコードです。

switch extensionType {
    case "zip":
        showAlert(extensionFileName)
    default:
        print(listFolderPathUrlName.appendingPathComponent("\(extensionFileName)"))
        controller = UIDocumentInteractionController(url: listFolderPathUrlName.appendingPathComponent("\(extensionFileName)"))
        controller.delegate = self as? UIDocumentInteractionControllerDelegate
        self.controller?.uti = "public.data"
        if !(controller.presentOpenInMenu(from: self.view.frame, in: self.view, animated: true)){
            let alert = UIAlertController(title: "送信失敗", message: "ファイルを開けるアプリが見つかりませんでした.", preferredStyle: .alert)
            alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
            self.present(alert,animated: true,completion: nil)
        }
    }

全体のコードは以下の通りです
ハチャメチャなコードですが・・・

import UIKit
import SSZipArchive

class FileList: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var manager: FileManager!
    var path: String!
    var homePath: String!
    var paths: Array<String>!
    var checkedFileName:String!
    var extensionFileName:NSString!
    var extensionType:String!
    var newDocumentsPath:String!
    var logsPath:URL!
    var isDir:ObjCBool! = false
    var listFolderPathStringName:String!
    var documentsInboxFolderPath:URL!
    var inboxPathStringName:String!
    var deleatFileName:String!
    var removeItemPath:String!
    var pathsName:Array<String>!
    var inboxPaths:String!
    var controller:UIDocumentInteractionController!
    var openUrl:NSURL!
    var documentsPath1:NSURL!
    var inboxPathUrlName:URL!
    var listFolderPathUrlName:URL!
    var inboxList:Array<String>!
    var num:Int = 0
    var tempoName:URL!
    var listFolderList:Array<String>!
    var atDir:Array<String>!
    var toDir:Array<String>!

    @IBOutlet weak var myTableView: UITableView!
    @IBOutlet weak var reviewButton: UIButton!
    @IBAction func reViewCell(_ sender: Any) {
        moveItem()
        myTableView.reloadData()
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section:Int) -> Int {
        print("--------tableView-numberOfRowsInSection-------")
        if paths == nil {
            return 1
        }
        return paths.count;
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        print("--------tableView-cellForRowAt-------")
        let cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.subtitle, reuseIdentifier: "Cell")
        print(indexPath.row)
        cell.textLabel?.text = paths[indexPath.row]
        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("--------tableView-didSelectRowAt-------")
        checkedFileName = paths[indexPath.row] //選択されたファイルパスをcheckedFileNameに格納
        print("checkedFileName  :\(checkedFileName!)")
        extensionFileName = NSString(string: checkedFileName)
        print("extensionFileName:\(extensionFileName!)")
        extensionType = extensionFileName.pathExtension
        print("extensionType    :\(extensionType!)")
        switch extensionType {
        case "zip":
            showAlert(extensionFileName)
        default:
            print(listFolderPathUrlName.appendingPathComponent("\(extensionFileName)"))
            controller = UIDocumentInteractionController(url: listFolderPathUrlName.appendingPathComponent("\(extensionFileName)"))
            controller.delegate = self as? UIDocumentInteractionControllerDelegate
            self.controller?.uti = "public.data"
            if !(controller.presentOpenInMenu(from: self.view.frame, in: self.view, animated: true)){
                let alert = UIAlertController(title: "送信失敗", message: "ファイルを開けるアプリが見つかりませんでした.", preferredStyle: .alert)
                alert.addAction(UIAlertAction(title: "OK", style: .default, handler: nil))
                self.present(alert,animated: true,completion: nil)
            }
        }
    }

    //Cell削除
    func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
        print("--------editActionsForRowAt-------")
        let deleteButton: UITableViewRowAction = UITableViewRowAction(style: .normal, title: "削除") { (action, index) -> Void in
            self.deleatFileName = self.paths[indexPath.row]
            self.paths.remove(at: indexPath.row)
            tableView.deleteRows(at: [indexPath], with: .fade)
            self.removeItemPath = self.listFolderPathStringName + "/\(self.deleatFileName!)"
            try! self.manager.removeItem(atPath: self.removeItemPath)
            print("removeItemPath = \(self.removeItemPath)")
        }
        return [deleteButton]
    }

    //Cellで選択したフォルダがZIP形式ならアラートを表示し解凍をするかキャンセルかを選択
    func showAlert(_ sender: Any) {
        print("--------showAlert--------")
        let actionSheet = UIAlertController(title: "解凍", message: "\(extensionFileName!)を解凍しますか?", preferredStyle: UIAlertControllerStyle.actionSheet)

        let action1 = UIAlertAction(title: "はい", style: UIAlertActionStyle.default, handler: {
            (action: UIAlertAction!) in
            print("アクション1をタップした時の処理")
            self.extractAction(self.checkedFileName)

        })
        let cancel = UIAlertAction(title: "キャンセル", style: UIAlertActionStyle.cancel, handler: {
            (action: UIAlertAction!) in
            print("キャンセルをタップした時の処理")
        })

        actionSheet.addAction(action1)
        actionSheet.addAction(cancel)

        self.present(actionSheet, animated: true, completion: nil)
    }

    //解凍処理(cellで選択されたファイルがzip形式ならそれを解凍しデータを保存
    func extractAction(_ sender: Any){
        print("--------extractAction--------")
        print("checkedFileName:\(checkedFileName)")
        let thisPath = listFolderPathStringName + "/" + checkedFileName
        print(thisPath)
        if !SSZipArchive.unzipFile(atPath: thisPath, toDestination: listFolderPathStringName) {
            print("解凍できませんでした:")
        }
        viewWillAppear(true)
    }

    func refreshPaths() {
        print("--------refreshPaths--------")
        paths = manager.subpaths(atPath: listFolderPathStringName)
        print("paths = \(paths)")
        if paths != nil {
            print("paths.count = \(paths.count)")
        }
        print("----------------------------")
    }

    override func viewWillAppear(_ animated: Bool) {
        self.myTableView.reloadData()
    }

    func moveItem(){
        documentsPath1 = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0])
        listFolderPathStringName = homePath + "/Documents/ListFolder/"
        inboxPathStringName = homePath + "/Documents/Inbox/"
        inboxPathUrlName = URL(fileURLWithPath: inboxPathStringName)
        listFolderPathUrlName = URL(fileURLWithPath: listFolderPathStringName)

        print("======================================================")
        print("listFolderPathStringName = \(listFolderPathStringName)")
        print("     inboxPathStringName = \(inboxPathStringName)")
        print("          documentsPath1 = \(documentsPath1)")
        print("        inboxPathUrlName = \(inboxPathUrlName)")
        print("   listFolderPathUrlName = \(listFolderPathUrlName)")
        print("======================================================")

        // /Inboxと/ListFolderのディレクトリが存在するか確かめ処理
        // /Inboxディレクトリがあれば
        if manager.fileExists(atPath: inboxPathStringName) == true{
            // /ListFolderディレクトリがあれば
            if manager.fileExists(atPath: listFolderPathStringName) == true{
                //Inboxディレクトリ内のサブパス(ファイル名)をinboxListに保存
                inboxList = try! manager.subpathsOfDirectory(atPath: inboxPathStringName)
                print("          inboxListCount = \(inboxList.count)")
                print("               inboxList = \(inboxList)")
                //inboxListのファイルパスをListFolderにコピー
                for _ in inboxList{
                    num = 0
                    do{
                        tempoName = inboxPathUrlName.appendingPathComponent("\(inboxList[num])")
                        print("tempoName = \(tempoName)")
                        print("tempolast = \(tempoName.lastPathComponent)")
                        try manager.moveItem(at: tempoName, to: listFolderPathUrlName.appendingPathComponent(tempoName.lastPathComponent))
                    }catch let copyerror as NSError{
                        NSLog("\(inboxList[0])は既に存在するかコピーができませんでした.\(copyerror.debugDescription)")
                    }
                    num += 1
                }
                //                コピー後のlistFolderディレクトリの中を確認
                listFolderList = manager.subpaths(atPath: listFolderPathUrlName.path)
                print("listFolderList = \(listFolderList)")
            }else{ // /ListFolderディレクトリが無ければディレクトリを作成
                do{
                    try manager.createDirectory(atPath: listFolderPathUrlName.path, withIntermediateDirectories: true, attributes: nil)
                }catch let createListFolderError as NSError{
                    NSLog("フォルダを作成できませんでした.\(createListFolderError.debugDescription)")
                }
            }
        }else{ // /Inboxディレクトリが無ければディレクトリを作成
            do{
                try manager.createDirectory(atPath: listFolderPathUrlName.path, withIntermediateDirectories: true, attributes: nil)
            }catch let createListFolderError as NSError{
                NSLog("フォルダを作成できませんでした.\(createListFolderError.debugDescription)")
            }
        }
        refreshPaths()
    }

    override func viewDidLoad() {
        super.viewDidLoad()
        myTableView.delegate = self
        myTableView.dataSource = self
        manager = FileManager.default
        homePath = NSHomeDirectory()
        moveItem()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}