данные из объединённой ячейки повторяются во всех остальных ячейках

проблема такая. Я экспортирую таблицу (datagridview) в Word, но у меня есть так же некоторые объединённые ячейки с помощью стороннего проекта DataGridViewTextBoxCellEx. При экспорте они не объединяются и данные из объединённой, повторяются во всех остальных ячейках. Для большего понимания показываю скрины. Вопрос , как можно реализовать объединение ячеек в Word ? Буду рад какой либо помощи помощи. Первое это код формы

namespace Garant_CP
{
    public partial class Form1 : Form
    {
        private WordExporter wordExporter;

        public Form1()
        {

            wordExporter = new WordExporter();
            
            InitializeComponent();
            // Добавляем элементы в выпадающий список
            comboBox1.Items.Add("Гарант-Бухгалтер");
            comboBox1.Items.Add("Гарант-Бухгалтер Госсектора");
            comboBox1.Items.Add("Гарант-ЭкспертPRO");
            comboBox1.Items.Add("Гарант-Главный Бухгалтер");
            comboBox1.Items.Add("Гарант-Главный бухгалтер госсектора");
            comboBox1.Items.Add("Гарант-Юрист");
            comboBox1.Items.Add("Гарант-Офис");
            comboBox1.Items.Add("Гарант-Эксперт в закупках");
            comboBox1.Items.Add("Гарант-Предприятие");
            comboBox1.Items.Add("Гарант-ПредприятиеPro");

            // Обработчик события выбора элемента из списка
            comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;
            dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
            dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
            dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            DataGridViewTextBoxColumnEx column1 = new DataGridViewTextBoxColumnEx();
            column1.Name = "customColumn1";
            column1.HeaderText = "№";
            DataGridViewTextBoxColumnEx column2 = new DataGridViewTextBoxColumnEx();
            column2.Name = "customColumn2";
            column2.HeaderText = "Наименование";
            DataGridViewTextBoxColumnEx column3 = new DataGridViewTextBoxColumnEx();
            column3.Name = "customColumn3";
            column3.HeaderText = "Описание";
            // Очищаем таблицу
            dataGridView1.Rows.Clear();
            dataGridView1.Columns.Clear();
            // В зависимости от выбранного элемента создаем разные таблицы

            switch (comboBox1.SelectedItem.ToString())
            {
                case "Гарант-Бухгалтер":
                    dataGridView1.Columns.Add(column1);
                    dataGridView1.Columns.Add(column2);
                    dataGridView1.Columns.Add(column3);
                    dataGridView1.Columns[0].Width = 25;
                    dataGridView1.Rows.Add("1", "Законодательство России", "\tВсе необходимые в работе правовые акты: кодексы, законы, постановления, письма Минфина, ФНС и других ведомств. Необходимые формы документов, утвержденные нормативными актами, и шаблоны форм, составленные квалифицированными юристами.");
                    dataGridView1.Rows.Add("2", "Пакет Энциклопедий решений для бухгалтера", "\t(в т.ч. Хозяйственные ситуации; Налоги и взносы; Трудовые отношения, кадры; Договоры и иные сделки; Проверки организаций и предпринимателей) (более 13 300 документов)");
                    dataGridView1.Rows.Add("3", "Энциклопедия. Формы правовых документов", "\tсодержит разработанные юристами-практиками формы различных документов, используемых в сфере гражданско-правовых отношений, процессуальных вопросах при обращениях в суд, регулирующих трудовую деятельность работника и работодателя, образцы локальных актов организаций, типовые отчетные формы и бланки документов, представляемые в государственные органы. Типовые бланки деловых бумаг соответствуют действующему законодательству и требованиям современного делопроизводства. (более 32 000 документов).");
                    dataGridView1.Rows.Add("4", "Большая библиотека бухгалтера и кадрового работника", "\tБиблиотека книг и периодики для бухгалтера и кадровика. Бухгалтерский и кадровый учет, оформление новых сотрудников, первичных документов, кассовые операции, начисление зарплаты, больничные листы и многое другое. Книги, статьи, ответы на вопросы, практические решения. (более 455 000 документов)");
                    dataGridView1.Rows.Add("5", "Большая домашняя правовая энциклопедия", "\t");
                    var cell1 = (DataGridViewTextBoxCellEx)dataGridView1[1, 4];
                    cell1.ColumnSpan = 2;
                    cell1.RowSpan = 1;
                    dataGridView1.Rows.Add("6", "Судебная практика:приложение к консультационным блокам", "\t");
                    var cell2 = (DataGridViewTextBoxCellEx)dataGridView1[1, 5];
                    cell2.ColumnSpan = 2;
                    cell2.RowSpan = 1;
                    dataGridView1.Rows.Add("7", "Архивы Гаранта. Россия", "\t");
                    var cell3 = (DataGridViewTextBoxCellEx)dataGridView1[1, 6];
                    cell3.ColumnSpan = 2;
                    cell3.RowSpan = 1;
                    dataGridView1.Rows.Add("8", "Гарант Консалтинг:нормативные акты и судебная практика", "\t");
                    var cell4 = (DataGridViewTextBoxCellEx)dataGridView1[1, 7];
                    cell4.ColumnSpan = 2;
                    cell4.RowSpan = 1;
                    dataGridView1.Rows.Add("9", "База знаний службы Правового консалтинга", "\t");
                    var cell5 = (DataGridViewTextBoxCellEx)dataGridView1[1, 8];
                    cell5.ColumnSpan = 2;
                    cell5.RowSpan = 1;
                    dataGridView1.Rows.Add("Сервисы и возможности", "");
                    var cell6 = (DataGridViewTextBoxCellEx)dataGridView1[0, 9];
                    cell6.ColumnSpan = 3;
                    cell6.RowSpan = 1;
                    dataGridView1.Rows[9].Cells[0].Style.Alignment = DataGridViewContentAlignment.MiddleCenter;
                    dataGridView1.Rows.Add("1", "•Конструктор правовых документов (LT пакет)");
                    var cell7 = (DataGridViewTextBoxCellEx)dataGridView1[1, 10];
                    cell7.ColumnSpan = 2;
                    cell7.RowSpan = 1;
                    dataGridView1.Rows.Add("2", "•Интернет-семинары (LT пакет)");
                    var cell8 = (DataGridViewTextBoxCellEx)dataGridView1[1, 11];
                    cell8.ColumnSpan = 2;
                    cell8.RowSpan = 1;
                    dataGridView1.Rows.Add("3", "•ПРАЙМ");
                    var cell9 = (DataGridViewTextBoxCellEx)dataGridView1[1, 12];
                    cell9.ColumnSpan = 2;
                    cell9.RowSpan = 1;
                    dataGridView1.Rows.Add("4", "•Экспресс Проверка 10 (ежемесячно)");
                    var cell10 = (DataGridViewTextBoxCellEx)dataGridView1[1, 13];
                    cell10.ColumnSpan = 2;
                    cell10.RowSpan = 1;
                    dataGridView1.Rows.Add("5", "•5 документов в месяц для проверки в ГАРАНТ ЧекДок");
                    var cell11 = (DataGridViewTextBoxCellEx)dataGridView1[1, 14];
                    cell11.ColumnSpan = 2;
                    cell11.RowSpan = 1;
                    dataGridView1.Rows.Add("6", "•Онлайн-патент тариф промо ");
                    var cell12 = (DataGridViewTextBoxCellEx)dataGridView1[1, 15];
                    cell12.ColumnSpan = 2;
                    cell12.RowSpan = 1;
                    dataGridView1.Rows.Add("7", "•БНК - 1 организация на контроле");
                    var cell13 = (DataGridViewTextBoxCellEx)dataGridView1[1, 16];
                    cell13.ColumnSpan = 2;
                    cell13.RowSpan = 1;
                    dataGridView1.Rows.Add("8", "•Горячая линия ");
                    var cell14 = (DataGridViewTextBoxCellEx)dataGridView1[1, 17];
                    cell14.ColumnSpan = 2;
                    cell14.RowSpan = 1;
                    break;
                case "Гарант-Бухгалтер Госсектора":
                    dataGridView1.Columns.Add(column1);
                    dataGridView1.Columns.Add(column2);
                    dataGridView1.Columns.Add(column3);
                    dataGridView1.Columns[0].Width = 25;
                    break;            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            wordExporter.WordExport(dataGridView1);
           
        }
    }
} 

введите сюда описание изображения Это код фаила экспорта

using Microsoft.Office.Interop.Word;
using SpannedDataGridView;
using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

namespace Garant_CP
{
    internal class WordExporter
    {
        public void WordExport(DataGridView myGrid)
        {
            if (myGrid == null || myGrid.Rows.Count <= 0)
            {
                MessageBox.Show("Данные для экспорта не обнаружены.", "Уведомление", MessageBoxButtons.OK, MessageBoxIcon.Information);
                return;
            }
            var wordApp = new Microsoft.Office.Interop.Word.Application();
            wordApp.Visible = true;
            var wordDoc = wordApp.Documents.Add();

            try
            {
                InsertDataWord(wordDoc, myGrid);
            }
            catch (Exception ex)
            {
                MessageBox.Show($"Произошла ошибка при экспорте: {ex.Message}", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            finally
            {
                Marshal.ReleaseComObject(wordDoc);
                Marshal.ReleaseComObject(wordApp);
            }
        }
        private void InsertDataWord(Document doc, DataGridView dgv)
        {
            var table = doc.Tables.Add(doc.Range(), dgv.Rows.Count + 1, dgv.Columns.Count);

            // Заполнение заголовков таблицы.
            for (int j = 0; j < dgv.Columns.Count; j++)
            {
                table.Cell(1, j + 1).Range.Text = dgv.Columns[j].HeaderText;
            }

            // Заполнение данных таблицы.
            for (int i = 0; i < dgv.Rows.Count; i++)
            {
                for (int j = 0; j < dgv.Columns.Count; j++)
                {
                    var cellValue = dgv[j, i].Value;
                    if (cellValue != null)
                    {
                        // Запись данных в ячейку таблицы Word.
                        table.Cell(i + 2, j + 1).Range.Text = cellValue.ToString();
                    }
                }
            }
        }
    }
}


Ответы (0 шт):