Невозможно получить доступ к документу Word в моей системе с помощью приложения UWP - PullRequest
2 голосов
/ 29 мая 2019

Я пытаюсь редактировать существующий документ Word с помощью приложения UWP (Universal Windows). Но по какой-то причине я получаю сообщение об ошибке «Файл не существует».

Я попытался использовать приведенный ниже код для доступа к документу Word:

using(WordprocessingDocument wordDoc = WordprocessingDocument.Open("C:\\Users\\Public\\Desktop\\Doc1.docx", true))
{

}

System.IO.FileNotFoundException: «Не удалось найти документ»

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

На основании дальнейших разъяснений в разделе комментариев см. Следующие инструкции.

  1. Добавьте файл .DOCX в папку «Ресурсы» в своем проекте и установите для действия сборки значение «Содержимое».

    Set Build action to Content

  2. Чтобы записать любые изменения в файл, нам нужно скопировать его в пакеты LocalFolder и затем получить к нему доступ.

    var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/doc1.docx"));
    if (file != null)
    {
        //Copy .docx file to LocalFolder so we can write to it
        await file.CopyAsync(ApplicationData.Current.LocalFolder);
        String newFile = ApplicationData.Current.LocalFolder.Path + "/doc1.docx";
    
        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(newFile, true))
        {
                //Your code here
        }
    }
    

Вам нужно немного расширить это, чтобы убедиться, что файл копируется только в LocalFolder один раз и т. Д., Но вы поймете основную идею.

0 голосов
/ 30 мая 2019

По умолчанию UWP не разрешает доступ к файлам вне контейнера приложения. Но из windows 10 build 17134 была введена новая возможность broadFileSystemAccess. Он позволяет приложениям получать тот же доступ к файловой системе, что и пользователь, который в данный момент запускает приложение, без каких-либо дополнительных запросов стиля средства выбора файлов во время выполнения.

Итак, проверьте, не объявили ли вы эту возможность в файле Package.appxmanifest.

См. Разрешения на доступ к файлу и запись broadFileSystemAccess в Объявления о возможностях приложения для получения дополнительной информации.

Если вы все еще сталкиваетесь с этой проблемой, когда добавляете возможность broadFileSystemAccess, тогда проблема должна быть в API WordprocessingDocument.Open. Следует отметить, что в документе «Права доступа к файлам» упоминалось:

Эта возможность broadFileSystemAccess работает для API в пространстве имен Windows.Storage .

Это означает, что WordprocessingDocument.Open может не использовать API-интерфейсы Windows.Storage для доступа к файлам. Если это так, вам нужно сообщить об этой проблеме в Open-XML-SDK .

...