首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Microsoft.Office.Interop.Word解析表,是否仅从第一列获取文本?

使用Microsoft.Office.Interop.Word解析表,是否仅从第一列获取文本?
EN

Stack Overflow用户
提问于 2013-07-23 03:23:28
回答 1查看 16K关注 0票数 4

我正在编写一个程序,将解析Microsoft Word 2010文档中的文本数据。具体地说,我希望从文档中每个表的第一列的每个单元格中获取文本。

作为参考,文档如下所示:

我只需要每页第一列中单元格的文本。我将把这个文本添加到一个内部数据表中。

到目前为止,我的代码如下所示:

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
    {
        // Create an instance of the Open File Dialog Box
        var openFileDialog1 = new OpenFileDialog();

        // Set filter options and filter index
        openFileDialog1.Filter = "Word Documents (.docx)|*.docx|All files (*.*)|*.*";
        openFileDialog1.FilterIndex = 1;
        openFileDialog1.Multiselect = false;

        // Call the ShowDialog method to show the dialog box.
        openFileDialog1.ShowDialog();
        txtDocument.Text = openFileDialog1.FileName;

        var word = new Microsoft.Office.Interop.Word.Application();
        object miss = System.Reflection.Missing.Value;
        object path = openFileDialog1.FileName;
        object readOnly = true;
        var 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);

        // Datatable to store text from Word doc
        var dt = new System.Data.DataTable();
        dt.Columns.Add("Text");

        // Loop through each table in the document, 
        // grab only text from cells in the first column
        // in each table.
        foreach (Table tb in docs.Tables)
        {
            // insert code here to get text from cells in first column
            // and insert into datatable.
        }

        ((_Document)docs).Close();
        ((_Application)word).Quit();
    }

我被困在从每个单元格获取文本并将其添加到datatable的部分。有人能给我一些建议吗?我肯定会很感激的。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-07-23 04:16:21

我不知道您希望如何将其存储在数据库中,但要读取文本,我认为您可以循环各行,并选择每行中的第一列:

代码语言:javascript
复制
foreach (Table tb in docs.Tables) {
    for (int row = 1; row <= tb.Rows.Count; row++) {
        var cell = tb.Cell(row, 1);
        var text = cell.Range.Text;

        // text now contains the content of the cell.
    }
}
票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17795717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档