2014-03-05 32 views
1

我想使用C#Interop讀取Word文檔並將其填充到DataGrid中。
我試圖通過簡單的控制檯程序在C#中讀取Word文檔。使用C#Interop讀取文檔並將其填充到DataGrid中?

但我是新來的Asp.net,並想知道如何執行該程序。
我可以創建Word文檔,但希望將其填充到DATA網格。

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); 
+0

你嘗試過什麼到目前爲止?如果是這樣,請將其納入您的問題中。 –

+0

@TomFenech我已經包含上面的代碼。現在我想單詞文檔內容顯示在DATAGRID.How要完成? – user3383270

回答

0

訪問這些鏈接我想你會在那裏找到答案。

編輯:

<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> 

隱藏文件現在打開代碼,並添加下面的命名空間

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

之後寫的代碼下面的代碼背後

C#.NET代碼

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(); 
} 
+0

謝謝,幫助。但我想填充word文檔到數據網格。 – user3383270

+0

@ user3383270看到我上面的編輯,並告訴我,如果這有效。 –

相關問題