在UWP中使用OPEN-XML SDK生成Doc文件

扎基尔·侯赛因博士

我想在UWP App中创建Microsoft Word文档,并且已经在APP Local文件夹中成功创建了doc文件。但是我想在用户选择的特定文件夹位置中创建此doc文件。

我的意思是用户浏览一个位置,然后在该位置创建doc文件。

这是我的代码,用于在App本地路径中创建Doc文件:

  string docFileName = "TestDoc.docx";
  Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

  string Filepath = localFolder.Path + "\\" + docFileName;

  using (var wordprocessingDocument = WordprocessingDocument.Create(file.Path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
  {
      MainDocumentPart mainPart = wordprocessingDocument.AddMainDocumentPart();
      mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
      Body body = mainPart.Document.AppendChild(new Body());
      DocumentFormat.OpenXml.Wordprocessing.Paragraph para = body.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Paragraph());
      DocumentFormat.OpenXml.Wordprocessing.Run run = para.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Run());
      run.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("Hello !!! ."));
      wordprocessingDocument.MainDocumentPart.Document.Save();
  }

尝试在如下所示的特定位置创建文档文件时出现以下错误:

错误

Message =介质已写保护:'D:\ Training \ TestDoc.docx'

string path = @"D:\Training\TestDoc.docx";

using (var wordprocessingDocument = WordprocessingDocument.Create(path, DocumentFormat.OpenXml.WordprocessingDocumentType.Document))
{
    MainDocumentPart mainPart = wordprocessingDocument.AddMainDocumentPart();
    mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
    Body body = mainPart.Document.AppendChild(new Body());
    DocumentFormat.OpenXml.Wordprocessing.Paragraph para = body.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Paragraph());
    DocumentFormat.OpenXml.Wordprocessing.Run run = para.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Run());
    run.AppendChild(new DocumentFormat.OpenXml.Wordprocessing.Text("Hello !!! ."));
    wordprocessingDocument.MainDocumentPart.Document.Save();
}
马丁·齐克蒙德

由于UWP应用程序在沙箱中运行,因此您无法使用经典API直接访问文件系统路径。但是,您可以使用Windows.StorageAPI来这样做。

让用户选择保存文件

如果要让用户选择保存文件,则可以使用FileSavePickerAPI。此文档页面对此进行了详细说明。完成后,API将为您提供一个StorageFile实例,您可以使用它。

写文件

由于您不能使用将Create文件路径作为参数的方法,因此需要使用Stream基于路径方法

要从Stream文件中获取实例,请添加using System.IO;到代码文件的顶部,然后执行以下操作:

using(var stream = await file.OpenStreamForWriteAsync())

通过此流,您可以执行以下操作:

using (var wordprocessingDocument =
               WordprocessingDocument.Create(
                  stream, WordprocessingDocumentType.Document))
{
      //... your code
}

注意:广泛的文件系统访问

如果确实需要在任意位置(不是用户选择的位置)创建文件,则可以使用broadFileSystemAccess功能但是,这仅适用于真正需要它的应用程序。请注意,即使具有此功能,您仍然需要使用StorageFileStorageFolderAPI执行所有文件操作

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

插入图像会损坏Open XML SDK生成的Word文件

来自分类Dev

使用Doxygen为外部文件生成doc

来自分类Dev

使用Google Cloud Dataflow生成xml文件

来自分类Dev

使用 xml 和 xsl 生成 xlsx 文件

来自分类Dev

Python:使用xml和xslt文件生成xml

来自分类Dev

使用LINQ to XML生成xml

来自分类Dev

使用LINQ to XML生成xml

来自分类Dev

在 C# 中使用 LINQ to XML 生成 XML 报告

来自分类Dev

在 SQL Server 中使用 XML OPTIONS 生成 XML 输出

来自分类Dev

在Android中使用简单XML解析XML文件列表元素

来自分类Dev

在Python中使用lxml解析XML文件

来自分类Dev

无法在XML文件中使用注释

来自分类Dev

在string.xml文件中使用'

来自分类Dev

在xml文件中使用sed更改值

来自分类Dev

如何使用Open XML SDK在.xlsx文件的现有行中添加新单元格?

来自分类Dev

使用F#和Open XML SDK读取Excel文件中的单元格内容

来自分类Dev

OPEN XML SDK无限循环

来自分类Dev

使用XSD文件在C#中生成XML文件

来自分类Dev

使用ViewModelAsXML生成XML

来自分类Dev

使用PHP生成XML

来自分类Dev

使用TSQL生成XML

来自分类Dev

使用SQL生成XML

来自分类Dev

如何下载使用打开的XML SDK创建的docx文件?

来自分类Dev

使用Open XML SDK 2.0获取占位符值

来自分类Dev

无法使用Open XML SDK创建文档

来自分类Dev

如何指定不使用Open XML SDK包装Word TableCell?

来自分类Dev

使用Open XML SDK读取Excel图表模板(* .crtx)

来自分类Dev

如何使用 Open XML SDK 在 PPTx 中插入视频?

来自分类Dev

快速生成XML文件