【发布时间】:2017-12-14 16:53:42
【问题描述】:
我正在尝试使用拖放功能在我的 iOS 应用程序中读取 xlsx 电子表格,感谢一些帮助,我已经到了可以获取数据的阶段并编写了这个 NSItemProviderReading 类来访问它:
class ExcelDocument:NSObject, NSItemProviderReading {
let data:Data?
required init(excelData:Data, typeIdentifier:String) {
data = excelData
}
static var readableTypeIdentifiersForItemProvider: [String] {
return ["org.openxmlformats.spreadsheetml.sheet"]
}
static func object(withItemProviderData data: Data, typeIdentifier: String) throws -> Self {
return self.init(excelData: data, typeIdentifier: typeIdentifier)
}
func write(toFile: String) -> URL?{
let fileManager = FileManager.default
do {
let documentDirectory = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor:nil, create:false)
let fileURL = documentDirectory.appendingPathComponent(toFile)
try self.data?.write(to: fileURL)
return fileURL
} catch {
print(error)
}
return nil
}
}
这一切运行良好,我可以打开并读取self.data?.write 行写入的文件,但是xlsx 文件的结构似乎丢失了——没有[Content_Types].xml 或.rels,所以尝试读取文件的实用程序(我使用的是XlsxReaderWriter)会引发错误。
鉴于 Office Open XML 是压缩的 XML,我原以为字节流会起作用,解压缩会重新创建结构,但似乎不是......
有什么想法吗?
【问题讨论】:
标签: ios swift excel drag-and-drop openxml