将 Docx 文件转换为 Swift 中的文本
Converting Docx Files To Text In Swift
我的临时存储中有一个 .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)
但是它打印 nil。
那么如何阅读 docx 文件中的文本?
您最初的问题是如何从 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 内容。然后你需要解压缩它。然后您需要浏览所有文件并找到所需的文本。它远非微不足道,它远远超出了单个堆栈溢出的范围 post.
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")
}
我的临时存储中有一个 .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)
但是它打印 nil。
那么如何阅读 docx 文件中的文本?
您最初的问题是如何从 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 内容。然后你需要解压缩它。然后您需要浏览所有文件并找到所需的文本。它远非微不足道,它远远超出了单个堆栈溢出的范围 post.
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")
}