2

我有一个用 ASP.NET(C#) 编写的非常基本的 Web 应用程序和一个基本的 Microsoft Word (2007) 文档,其中包含一个文本框和一个下拉列表。

在文件后面的 Web 应用程序代码中,我想按名称调用文本框控件和下拉控件并从中提取值。

我在网上找到的任何文档都只是读取或写入 word 文档,但我似乎找不到任何关于访问控件和从中提取值的内容。

任何帮助将不胜感激谢谢

这是我目前唯一可以对 word 文档执行任何操作的代码。它找到单词 doc 并打开它:

    //File path of the word document that contains the required values 
    string filePath = @"C:\Users\murphycm\Desktop\PlacesFile.docm";

    object fileToOpen = (object)filePath;

    //CREATING OBJECTS OF WORD AND DOCUMENT
    Microsoft.Office.Interop.Word.Application oWord = new Microsoft.Office.Interop.Word.Application();
    Microsoft.Office.Interop.Word.Document oWordDoc = new Microsoft.Office.Interop.Word.Document();

    oWordDoc = oWord.Documents.Open(ref fileToOpen);
4

2 回答 2

2

除非您要在服务器上安装 Microsoft Office,否则我建议您使用 Microsoft 的 Open XML SDK 2.5。使用 SDK,您可以处理 Office 2007 及更高版本的 Microsoft Office 文档:http:
//www.microsoft.com/en-us/download/details.aspx?id=30425

下面是一些使用 OpenXML 和 Office 互操作方法从 TextBox 获取文本的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using Word = Microsoft.Office.Interop.Word;

namespace OpenXMLSDKTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // Open XML Method
            object fileName = @"OpenXmlTest.docx";
            using (WordprocessingDocument myDocument = WordprocessingDocument.Open(fileName.ToString(), true))
            {
                var textbox = myDocument.MainDocumentPart.Document.Descendants<TextBoxContent>().First();
                Console.WriteLine(textbox.InnerText);
            }

            // Office Interop Method
            object missing = System.Reflection.Missing.Value;
            object readOnly = false;
            object isVisible = true;

            Word.Application wordApp = new Microsoft.Office.Interop.Word.Application();
            wordApp.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref  missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref isVisible, ref missing, ref missing, ref missing, ref missing);
            object firstShape = 1;
            string textFrameText = wordApp.ActiveDocument.Shapes.get_Item(ref firstShape).TextFrame.TextRange.Text;
            wordApp.Quit(ref missing, ref missing, ref missing);

            Console.WriteLine(textFrameText);

            Console.WriteLine("Press any key to continue...");
            Console.ReadKey();
        }
    }
}
于 2013-08-14T14:32:46.080 回答
0
public List<string> GetTagsFromNewTemplate(string filePath)
        {
            var tags = new HashSet<string>();

            using (WordprocessingDocument myDocument = WordprocessingDocument.Open(filePath, false))
            {
                var textbox = myDocument.MainDocumentPart.Document.Descendants<DocumentFormat.OpenXml.Wordprocessing.Tag>().Select(x => x.Val);
                textbox.ForEach(x => tags.Add(x));
            }
            return tags.Distinct().ToList();
        } 
于 2017-10-27T13:32:26.090 回答