我的临时存储空间中有.docx文件:
let location: NSURL = NSURL.fileURLWithPath(NSTemporaryDirectory())
let file_Name = location.URLByAppendingPathComponent("5 November 2016.docx")
我现在想要做的是提取本文档中的文本。但我似乎无法找到任何转换器或方法。
我试过这个:
let file_Content = try? NSString(contentsOfFile: String(file_Name), encoding: NSUTF8StringEncoding)
print(file_Content)
然而它打印为零。
那么如何阅读docx文件中的文本?
答案 0 :(得分:3)
您最初的问题是如何从URL获取字符串。 String(File_Name)
不是将文件URL转换为文件路径的正确方法。正确的方法是使用path
函数。
let location = NSURL.fileURLWithPath(NSTemporaryDirectory())
let fileURL = location.URLByAppendingPathComponent("My File.docx")
let fileContent = try? NSString(contentsOfFile: fileURL.path, encoding: NSUTF8StringEncoding)
请注意许多变化。使用适当的命名约定。更清楚地命名变量。
现在就是这样。这仍然不起作用,因为docx文件是XML和其他文件的压缩集合。您无法将docx文件加载到NSString
。您需要使用NSData
来加载zip内容。然后你需要解压缩它。然后,您需要浏览所有文件并找到所需的文本。它远非微不足道,它远远超出了单个堆栈溢出的范围。
答案 1 :(得分:3)
Swift 4,Xcode 9.1,OSX目标从10.10到10.13
我发现以下代码可以从Word .doc文件中轻松地提取文本,然后可以轻松地将其转换为字符串。 (属性字符串包含可能被解析为良好效果的格式信息。)我想传达的主要信息是关于使用.docFormat指定文档类型的一点。
let openPanel = NSOpenPanel()
var fileString = String("")
var fileData = NSData()
let fileURL = openPanel.url
do {
fileData = try NSData(contentsOf: fileURL!)
if let tryForString = try? NSAttributedString(data: fileData as Data, options: [
.documentType: NSAttributedString.DocumentType.docFormat,
.characterEncoding: String.Encoding.utf8.rawValue
], documentAttributes: nil) {
fileString = tryForString.string
} else {
fileString = "Data conversion error."
}
fileString = fileString.trimmingCharacters(in: .whitespacesAndNewlines)
} catch {
print("Word Document File Not Found")
}