使用C#互操作阅读Word文档,并将其填充到DataGrid中? [英] Read word Document using C# Interop and populate it into the DataGrid?

查看:213
本文介绍了使用C#互操作阅读Word文档,并将其填充到DataGrid中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想用C#互操作来读取一个Word文档,并将其填充到DataGrid中。结果
我试着阅读Word文档通过简单的控制台程序在C#中,它的工作。

不过,我是新来的Asp.net并想知道如何实施该计划。结果
我能够创建Word文档,但希望将其填充到数据网格。

 字符串文件路径= NULL;
打开文件对话框的文件=新的OpenFileDialog();file.Title =字文件;
file.InitialDirectory =C:\\\\;
file.RestoreDirectory = TRUE;//如果执行程序段时对话框结果框中单击OK按钮
如果(file.ShowDialog()== DialogResult.OK){
    //存储中选择文件路径
    文件路径= file.FileName.ToString();
}尝试
{
    //创建Word应用程序
    Microsoft.Office.Interop.Word.Application字=新Microsoft.Office.Interop.Word.ApplicationClass();
    //创建缺失值的对象
    对象小姐= System.Reflection.Missing.Value;
    //创建所选文件路径的对象
    对象路径=文件路径;
    //设置文件的路径模式
    反对readOnly的= FALSE;
    //打开的文档
    Microsoft.Office.Interop.Word.Document文档= word.Documents.Open(REF路径,裁判错过,裁判只读,已参考想念,想念文献,文献思念,思念文献,文献思念,思念文献,文献思念,思念参考, REF思念,思念文献,文献思念,思念文献,文献小姐);    docs.ActiveWindow.Selection.WholeStory();    docs.ActiveWindow.Selection.Copy();    IDataObject的数据= Clipboard.GetDataObject();
    //数据填充到datagridview的?    docs.Close(REF思念,思念文献,文献小姐);


解决方案

访问这些链接,我想你会在那里找到答案。

编辑:

 < HTML的xmlns =htt​​p://www.w3.org/1999/xhtml>
    < HEAD>
        <标题>读取和显示数据从字文件(.doc或.DOCX)在ASP.NET< /标题>
    < /头>
    <身体GT;
        <表ID =form1的=服务器>
            < D​​IV>
                < B>请选择Excel文件:LT; / B>
                < ASP:文件上传ID =fileuploadExcel=服务器/>&安培; NBSP;&安培; NBSP;
                < ASP:按钮的ID =btnImport=服务器文本=导入数据的OnClick =btnImport_Click/>
                < BR />
                < ASP:标签ID =lblMessage=服务器可见=假字体粗体=真前景色=#009933>< / ASP:标签>< BR />
                < ASP:GridView控件ID =grvWordData=服务器>
                    < HeaderStyle背景色=#df5015FONT-粗体=真前景色=白/>
                < / ASP:GridView的>
            < / DIV>
        < /表及GT;
    < /身体GT;
< / HTML>

隐藏文件现在打开code和添加下面的命名空间。

 使用系统;
使用System.Data这;
使用System.Data.OleDb;
使用System.IO;

在这之后写code以下code后面

C#.NET code

 保护无效btnImport_Click(对象发件人,EventArgs的发送){
    字符串CONNSTRING =;
    字符串strFileType = Path.GetExtension(fileuploadWord.FileName).ToLower();
    字符串路径= fileuploadWord.PostedFile.FileName;    //连接字符串的Word文件
    如果(strFileType.Trim()==名为.doc){
        CONNSTRING =供应商= Microsoft.Jet.OLEDB.4.0;数据源=+路径+;扩展属性= \\字8.0; HDR =是; IMEX = 2 \\;
    }
    否则,如果(strFileType.Trim()==的.docx){
        CONNSTRING =供应商= Microsoft.ACE.OLEDB.12.0;数据源=+路径+;扩展属性= \\字12.0; HDR =是; IMEX = 2 \\;
    }    查询字符串=SELECT * FROM [文件1 $];
    康涅狄格州的OleDbConnection =新的OleDbConnection(CONNSTRING);
    如果(conn.State == ConnectionState.Closed)
        conn.Open();    OleDbCommand的CMD =新的OleDbCommand(查询,康涅狄格州);
    OleDbDataAdapter的DA =新OleDbDataAdapter的(CMD);
    DataSet的DS =新的DataSet();
    da.Fill(DS);
    grvWordData.DataSource = ds.Tables [0];
    grvWordData.DataBind();
    da.Dispose();
    conn.Close();
    conn.Dispose();
}

I want to read a Word document using C# Interop and populate it into the DataGrid.
I tried reading Word document by simple console program in c# it worked.

But I'm new to Asp.net and wants to know how to implement the program.
I'm able to create Word document but want to populate it to DATA grid.

string filePath = null;
OpenFileDialog file = new OpenFileDialog();

file.Title = "Word File";
file.InitialDirectory = "C:\\";
file.RestoreDirectory = true;

// execute if block when dialog result box click ok button
if (file.ShowDialog() == DialogResult.OK) {
    // store selected file path
    filePath = file.FileName.ToString();          
}

try
{ 
    // create word application
    Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.ApplicationClass();
    // create object of missing value
    object miss = System.Reflection.Missing.Value;
    // create object of selected file path
    object path = filePath;
    // set file path mode
    object readOnly = false;
    // open document                
    Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss,ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss);

    docs.ActiveWindow.Selection.WholeStory();

    docs.ActiveWindow.Selection.Copy();

    IDataObject data = Clipboard.GetDataObject();
    //populate data into Datagridview?

    docs.Close(ref miss, ref miss, ref miss);

解决方案

Visit these links I think you will find your answer there.

Edit:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Read and Display Data From an Word File (.doc or .docx) in ASP.NET</title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <b>Please Select Excel File: </b>
                <asp:FileUpload ID="fileuploadExcel" runat="server" />&nbsp;&nbsp;
                <asp:Button ID="btnImport" runat="server" Text="Import Data" OnClick="btnImport_Click" />
                <br />
                <asp:Label ID="lblMessage" runat="server" Visible="False" Font-Bold="True" ForeColor="#009933"></asp:Label><br />
                <asp:GridView ID="grvWordData" runat="server">
                    <HeaderStyle BackColor="#df5015" Font-Bold="true" ForeColor="White" />
                </asp:GridView>
            </div>
        </form>
    </body>
</html>

Now open code behind file and add the following namespaces

using System;
using System.Data;
using System.Data.OleDb;
using System.IO;

After that write the following code in code behind

C#.NET Code

protected void btnImport_Click(object sender, EventArgs e) {
    string connString = "";
    string strFileType = Path.GetExtension(fileuploadWord.FileName).ToLower();
    string path = fileuploadWord.PostedFile.FileName;

    //Connection String to Word file
    if (strFileType.Trim() == ".doc") {
        connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + ";Extended Properties=\"Word 8.0;HDR=Yes;IMEX=2\"";
    }
    else if (strFileType.Trim() == ".docx") {
        connString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=\"Word 12.0;HDR=Yes;IMEX=2\"";
    }

    string query = "SELECT * FROM [document1$]";
    OleDbConnection conn = new OleDbConnection(connString);
    if (conn.State == ConnectionState.Closed)
        conn.Open();

    OleDbCommand cmd = new OleDbCommand(query, conn);
    OleDbDataAdapter da = new OleDbDataAdapter(cmd);
    DataSet ds = new DataSet();
    da.Fill(ds);
    grvWordData.DataSource = ds.Tables[0];
    grvWordData.DataBind();
    da.Dispose();
    conn.Close();
    conn.Dispose();
}

这篇关于使用C#互操作阅读Word文档,并将其填充到DataGrid中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆