【问题标题】:Copy Docx To Clipboard C#将 Docx 复制到剪贴板 C#
【发布时间】:2015-12-07 02:32:18
【问题描述】:

在过去的两个小时里,我搜索了这个很棒的网站,但在查看类似帖子时找不到解决方案。

我正在通过第三方工具创建动态 .docx 文件。

我需要做什么:

  1. 打开每个文件
  2. 选择所有内容
  3. 将内容复制到 Windows 剪贴板

创建 Word 宏是同步的,因为这两行会选择所有内容并为我复制内容。

Selection.WholeStory
Selection.Copy

有谁知道如何将这两行代码转换为等效的 C# 代码?我不确定在我的情况下运行外部宏是否理想,因为某些将使用包括将数据临时复制到剪贴板的整体工具链的用户将不允许运行 Office 宏 - 公司政策。

使用 C#,我尝试了以下操作。我正在做的是打开一个 .docx 文件,选择正文内容并尝试将其复制到 Windows 剪贴板。我无法让它工作。

using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System;

namespace copy_docx_clipboard
{
    using System.Windows.Forms;

    internal class Program
    {
        [STAThread]
        private static void Main(string[] args)
        {
            string fileName = @"C:\out\table_42.docx";
            using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(fileName, false))
            {
                Body body = wordDocument.MainDocumentPart.Document.Body;
                Clipboard.Clear();
                Clipboard.SetDataObject(body, true, 5, 200);

                Console.WriteLine("done");
                Console.ReadKey();
            }
        }
    }
}

我将内容复制到 Windows 剪贴板的原因是另一个工具,在这个工具链中,将是接收器。我知道剪贴板文本,但我无法使用它,因为将复制的一些数据将是 Word 表格、图片、数字、摘录 - 基本上它将是动态的。

任何见解、提示、指向文档都将不胜感激。

【问题讨论】:

  • 所以你说的工具可以和WordprocessingDocument一起工作?
  • 这里涉及到几个工具,所以希望这更清楚。工具 A 生成我解析的 .DOCX 文件。无论如何,我无法控制工具 A。我编写了工具 B,它将解析来自创建 N .docx 文件的工具 A 的内容。工具 C,我的帖子是关于,是打开一个工具 B 文件让我将内容复制到剪贴板以在工具 D 中使用。工具 D 可以读取 Windows 剪贴板,不幸的是,它的 API 非常有限。
  • 而且,工具 D 不能与 WordprocessingDocuments 一起使用
  • 那么工具 D 可以用来做什么呢?剪贴板可以有什么?是否只想将字符串内容复制到剪贴板?

标签: c# macros clipboard docx


【解决方案1】:

使用您的 Clipboard.SetDataObject(body, true, 5, 200);不管用。您可以使用设置剪贴板

  Clipboard.SetText(body.InnerText, TextDataFormat.Unicode);

但是,这是 InnerText,它只是文本,不包含任何格式。或者,您可以将正文作为 XML 文档,并使用 Xpath 查询遍历文档的元素,以获取所需的详细信息,如 KyleM 在本文中所述。 How to extract text from MS office documents in C#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 2020-02-06
    相关资源
    最近更新 更多