使用ASP.NET从word文档中获取文本框值?

时间:2013-08-14 13:08:45

标签: c# asp.net .net ms-word

我有一个用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);

2 个答案:

答案 0 :(得分: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 Interop方法从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();
        }
    }
}

答案 1 :(得分: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();
        }