данные из объединённой ячейки повторяются во всех остальных ячейках
проблема такая. Я экспортирую таблицу (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();
}
}
}
}
}
}