读取或转换单词.doc文件iOS

时间:2011-11-22 17:30:56

标签: ios objective-c c ms-word doc

iOS上的其他应用程序如何能够读写word文档?我看到了一些与此相关的其他问题,并且接受的答案是“无法完成”。我不想只显示一个单词doc,我想阅读它的格式。其他应用程序是如何做到的,他们是否使用Microsoft发布的已发布标准自行编写解析?在处理文件之前,他们是否使用某种捆绑实用程序将文件转换为XML或HTML等其他格式?是否有开源方式这样做?寻找创意。

7 个答案:

答案 0 :(得分:10)

我不知道你是否仍在寻找解决方案,或者你自己想出来但我正在回答这个问题,希望能帮助其他人寻找解决方案。

我一直在寻找与我的任务相关的解决方案,我想将word文件转换为文本文件。 我在谷歌搜索后得到了这个问题,根据@TJD的回答,我走了link并从那里找到this link

根据我的要求,我需要将word文件转换为文本文件。我跟着第二个链接作为我的解决方案

由于docx文件是使用Open XML File format创建的,因此我在其中提到我需要解压缩docx文件,将其视为拉链。

对于Zip / Unzip,Google提供了code here。根据{{​​3}}在我们的文档目录中解压缩docx文件后,根目录中有三个目录和一个xml文件。

对于我的解决方案,我选择链接中提到的word目录,文件的原始内容放在那里(到目前为止我没有进入任何其他目录或文件)。您的提取路径word/doctment.xml下有一个文件,这是您的docx文件内容以xml格式放置的位置。

该xml文件中有很多可用的标签,我现在不知道这些文本的含义,但在查看xml文件后,我得到包含我的文本的标签是w:t

之后,每件事都像蛋糕。我刚刚使用NSXMLParser并解析了针对w:t标记的xml文件中的数据,我得到了整个字符串。

注意:我会在了解其他文件和标签后立即更新我的答案。此解决方案也不适用于doc文件,因为我知道MSOffice 2007中引入了OpenXMLFile format所以我还将更新我对doc文件解决方案的回答。

我知道这还不足以覆盖创建doc文件等。但我希望这会对我们很多人有所帮助。

答案 1 :(得分:3)

大多数应用程序用来读取Word文件的“技巧”是UIWebView - 它can read them。这不允许编写文档,但这是一个更难的问题,我不相信一个简单的解决方案存在。

答案 2 :(得分:2)

现代版办公室使用开放标准xml格式。 http://en.wikipedia.org/wiki/Office_Open_XML

答案 3 :(得分:1)

以下是在iOS中阅读Open Office XML(OOXML)格式的方法:http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2011/05/09/147049.aspx

该链接将引导您获得一个教程,该教程将为您提供OOXML文件的元数据,它不是文本或格式,但它是一个开始。

<。> .doc文件是一种专有的zip格式,包含许多与文本和格式相关的文件(如果你想查看内部的内容,请进入查找器和“获取信息”;然后将扩展名重命名为.zip并解压缩文件) 。这些文件填充到顶部,包含大量随机XML符号,这些符号对您或其他任何人都没用。

但是,通过采用OOXML标准,可以轻松打开和转换.docx文件。请参阅链接。

答案 4 :(得分:1)

根据您要显示的Word文档的版本,您有几个选择。

如果您的文档确实是.doc文件(意味着,在Word 2007之前),那么您可以遵循.doc Binary File Format(这是一个允许您自由使用它的开放规范)的规范来阅读/以该格式写Word文档。

如果您的文档是.docx文件,那么TDJCodaFi指出docx file format is an open standard

这意味着您可以查看有关如何解释.docx文件(或Office 2007套件中的任何其他文件)的每个详细信息,并根据您的需要对其进行处理。

这是当前iOS应用程序能够显示docx文件的方式。

注意,这是这是一项简单的任务,因为这些规范有很多细节。

答案 5 :(得分:1)

libOPC

符合ISO / IEC 29500标准, 跨平台, 开源, 标准C99为基础 实施ISO / IEC 29500规范(OOXML)的第II部分(OPC)和第III部分(MCE)。 它也适用于ios http://www.nooxml.com/video/libopc_iphone.wmv

答案 6 :(得分:0)

以下代码在启动时将Word .docx文件保存到应用程序的文档目录中。然后,它会在viewDidLoad期间将该文件读入UIWebView。最后,它等待UIWebView在从UIWebView获取文本之前加载文档。不要忘记在视图控制器的头文件中符合UIWebViewDelegate协议。当然,Word文档必须包含在您的项目中。确保将文档添加到Build Phases&gt;复制捆绑资源。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    /* WRITE WORD FILE TO DOCUMENT DIRECTORY */
    NSString *docsDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
    NSString *path = [docsDirectory stringByAppendingPathComponent:@"Text.docx"];
    NSData *data = [NSData dataWithContentsOfFile:[[[NSBundle mainBundle] resourcePath] stringByAppendingString:@"/Text.docx"]];
    [data writeToFile:path atomically:YES];
}

- (void)viewDidLoad
{
    [super viewDidLoad];

   /* READ WORD FILE FROM DOCUMENT DIRECTORY TO WEB VIEW */
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *wordFilePath = [documentsDirectory stringByAppendingPathComponent:@"Text.docx"];
    UIWebView *theWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
    NSURL *wordFileUrl = [NSURL fileURLWithPath:wordFilePath];
    NSURLRequest *request = [NSURLRequest requestWithURL:wordFileUrl];
    [theWebView loadRequest:request];
    theWebView.delegate = self;
    [self.view addSubview:theWebView];
}

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    /* GET TEXT FROM WEB VIEW */
    NSString *text = [webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.innerText"];
}
相关问题