[C#] Tutorial read Table in Microsoft Office Word into Data Gridview

Dưới đây là giao diện demo ứng dụng C#:

Video hướng dẫn Step by Step:

Đầu tiên, các bạn cần import thư viện DocumentFormat.OpenXml từ Nuget:
PM> NuGet\Install-Package DocumentFormat.OpenXml -Version 2.18.0

Tiếp đến, các bạn tạo một button để mở hộp thoại OpenFileDialog lên để chọn file Word vào.
Trong bài viết này, mình chỉ demo với tập tin .docx nhé.
Source code C#:
using DocumentFormat.OpenXml.Office2013.Excel;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Wordprocessing;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ReadWordFileToDataTable
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnBrowser_Click(object sender, EventArgs e)
        {
            using (var dlg = new OpenFileDialog())
            {
                if (dlg.ShowDialog() == DialogResult.OK) {
                    var fileName = dlg.FileName;
                    textBox1.Text = fileName;
                    DataTable data = ReadTableFromMSWord(fileName);
                    dataGridView1.DataSource = data;
                }
            }
        }

        private DataTable ReadTableFromMSWord(string fileName)
        {
            using (var doc = WordprocessingDocument.Open(fileName, false))
            {

                DataTable dt = new DataTable();
                int rowCount = 0;

                Table table = doc.MainDocumentPart.Document.Body.Elements<Table>().First();
                IEnumerable<TableRow> rows = table.Elements<TableRow>();
                foreach (TableRow row in rows)
                {
                    if (rowCount == 0)
                    {
                        foreach (TableCell cell in row.Descendants<TableCell>())
                        {
                            dt.Columns.Add(cell.InnerText);
                        }
                        rowCount += 1;
                    }
                    else
                    {
                        dt.Rows.Add();
                        int i = 0;
                        foreach (TableCell cell in row.Descendants<TableCell>())
                        {
                            dt.Rows[dt.Rows.Count - 1][i] = cell.InnerText;
                            i++;
                        }
                    }
                }

                return dt;
            }
        }
    }
}


DOWNLOAD SOURCE CODE

MẬT KHẨU GIẢI NÉN : hungqb.com

Chúc các bạn thành công với thủ thuật trên.
Theo : LapTrinhVB.Net
Next Post Previous Post
1 Comments
  • Nặc danh
    Nặc danh Thứ Bảy, 05 tháng 11, 2022

    nice copy

Add Comment
comment url
Tăng traffic miễn phí