将xlsx或xls加载到webview中

时间:2017-11-30 18:31:16

标签: swift excel

我编辑了一个Excel文件并将其作为NSData。我想把这个xlsx转换为PDF,并且已经读过如果我成功将它作为NSData放入webview,我就安全了。我无法成功,我得到的是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指定textencoding也会产生相同的结果。我从捆绑包中打开excel没有问题但是在我下载excel文件并将其用作Nsdata后我无法将其加载到webview中。

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

3 个答案:

答案 0 :(得分:0)

这可能是一个较晚的答案,我们在一个项目中遇到了类似的问题,一种解决此问题的方法是通过将内容嵌入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

答案 1 :(得分:-1)

我工作正常的代码,但我必须在将nsdata加载到webview之前将其保存在本地。

答案 2 :(得分:-1)

override public func viewDidLoad() 
{
    super.viewDidLoad()
    webView.loadFileURL(fileURLPreview, allowingReadAccessTo: fileURLPreview)
}