在Windows应用商店应用中使用FilePicker保存自定义Word文档

时间:2014-11-05 13:06:49

标签: windows ms-word windows-store-apps

我正在制作一个Windows应用商店应用,我希望允许用户按下"导出到Word"按钮,将他们输入到应用程序中的所有数据显示在Word文档中,并保存到计算机上的所需位置。下面的代码是代码的测试段,它几乎完成了我所追求的目标,但是在保存文档并使用Word而不是应用程序打开它之后,由于它显然已损坏而无法打开文件。但是,当您在记事本中打开它时,文本会显示为我想要的内容。

private async void exportToWord_Click(object sender, RoutedEventArgs e)
{
    await ExportToWord();
}

private async Task ExportToWord()
{
    // Create the picker object and set options
    Windows.Storage.Pickers.FileSavePicker savePicker = new Windows.Storage.Pickers.FileSavePicker();

    savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary;

    // Dropdown of file types the user can save the file as
    savePicker.FileTypeChoices.Add("Word", newList<string>{".docx"});

    // Default file name if the user does not type one in or select a file to replace
    savePicker.SuggestedFileName = "Test";

    Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync();

    MessageDialog mD;

    if (file != null)
    {
        // Prevent updates to the remote version of the file until we finish 
        // making changes and call CompleteUpdatesAsync.
        Windows.Storage.CachedFileManager.DeferUpdates(file);

        // write to file
        await Windows.Storage.FileIO.WriteTextAsync(file, createContentsOfFile());

        // Let Windows know that we're finished changing the file so the other 
        // app can update the remote version of the file.
        // Completing updates may require Windows to ask for user input.
        Windows.Storage.Provider.FileUpdateStatus updateStatus = await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file);

        if (updateStatus == Windows.Storage.Provider.FileUpdateStatus.Complete)
        {
            mD = newMessageDialog("Connect exported to:" + file, "Export Successful");
        }
        else
        {
            mD = newMessageDialog("Could not save file. Try again", "Export Unsuccessful");
        }
    }
    else
    {
        mD = newMessageDialog("Operation canceled because the file could not be found. Try  again", "Export Unsuccessful");
    }

    await mD.ShowAsync();
}

private string createContentsOfFile()
{
    return "Testing...";
}

我认为问题在于我将纯文本输出到Word文档,但它需要以特定格式输出才能正确输出并显示在Word文档中。有没有办法在Windows应用商店应用中执行此操作?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

我不知道任何可用于Windows运行时应用程序的Word文档组件(Microsoft不提供,但可能存在我不知道的第三方组件。)

您可以获得documentation on the docx格式,对于简单文本,它可能不会太复杂(我不确定),或者您可以使用Word可以打开的其他格式。

如果你不需要格式化,我可能会坚持使用txt。

如果您需要少量格式化,那么rtf是一个不错的选择。生成自己或RichEditBox可以导出RTF格式文本非常简单,然后可以将其保存为.doc文件并在Word中打开。