我编辑了一个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中。
答案 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)
}