【问题标题】:Load xlsx or xls into a webview将 xlsx 或 xls 加载到 webview 中
【发布时间】:2017-11-30 18:31:16
【问题描述】:

我编辑了一个 Excel 文件并将其作为 NSData。我想将此 xlsx 转换为 PDF 并已阅读,如果我成功将其作为 NSData 放入 web 视图中,我就安全了。我无法成功,我得到的只是 webview 尝试将其作为文本打开。

我试过了:

webview.load(picData as Data, mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.template", characterEncodingName: "", baseURL: NSURL() as URL)

用 xlsx 和:

webview.load(picData as Data, mimeType: "application/vnd.ms-excel", characterEncodingName: "", baseURL: NSURL() as URL).

即使我使用 utf-8 指定文本编码,它也会产生相同的结果。我从包中打开 excel 没有问题,但是在我下载了一个 excel 文件并将其用作 Nsdata 后,我无法将其加载到 webview 中。

所以基本上我需要将excel作为Nsdata并将其加载到webview中。

【问题讨论】:

  • 由于“可能重复”的接受答案是错误的,因为文档说明您可以读取 xlsx 文件。加上我在加载 excel 文件之前将文件下载到 Nsdata 中。
  • “文档”有链接吗?无论如何,这是同一个问题(因此重复)。第二个答案的代码也与你的不同,所以试试吧。
  • 最重要的是我将 excelfile 作为 Nsdata 加载,而另一个问题是在本地加载。我知道您所指的答案是使用 utf-8 而不是“”。我不会改变我的结果。
  • 您和第二个答案使用的 API 相同...urlData 将是 Data。刚刚从 URL 下载

标签: swift excel


【解决方案1】:

这可能是一个较晚的答案,我们在一个项目中遇到了类似的问题,解决此问题的一种方法是通过将内容嵌入到 html 中来使用 html 的强大功能。

func loadDataContent(data:Data,mimeType:String) {
    let htmlContent = "<iframe width=\"100%\" height=\"100%\" src=\"data:\(mimeType);base64,\(data.base64EncodedString())\"></iframe>"
    webBrowser?.loadHTMLString(htmlContent, baseURL: nil)
}

-

对于 Microsoft Excel 文件,您可以执行以下操作:

.xlsx 扩展名:

loadDataContent(data: data, mimeType: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

.xls 扩展名:

loadDataContent(data: data, mimeType: "application/vnd.ms-excel")

参考其他 mime 类型: https://filext.com/faq/office_mime_types.html

【讨论】:

    【解决方案2】:

    我运行良好的代码,但我必须在将 nsdata 加载到 webview 之前将其保存在本地。

    【讨论】:

      【解决方案3】:
      override public func viewDidLoad() 
      {
          super.viewDidLoad()
          webView.loadFileURL(fileURLPreview, allowingReadAccessTo: fileURLPreview)
      }
      

      【讨论】:

      • 请尝试解释您为什么选择这条路线或使这项工作有利于 OP 和所有其他未来读者的逻辑。代码转储可能会解决问题,但在学习任何东西时几乎无能为力。
      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 2012-01-25
      • 1970-01-01
      • 1970-01-01
      • 2016-02-29
      • 1970-01-01
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多