Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 05.11.2021
Сообщений: 6

Экспорт DataGridView в Word

14.02.2022, 12:31. Показов 1728. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Начну с того что поиском не нашел решения своей проблемы, суть проблемы.
Есть файл Ворд, в который экспрортирую данные из текстбоксов и DataGridView, с тексбоксами проблем нет, а вот с DataGridView возникла проблема, количество строк в таблице может меняться в зависимости от выбранного студента, и есть необходимость объединить 1 и 2 столбец во время экспорта. Помогите разобраться пожалуйста, а то застопорился на этом моменте.

Вот кусов кода
using Word = Microsoft.Office.Interop.Word;

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 private void WordEXP_Click(object sender, EventArgs e)
        {
            for (int i = 0; i < dataGridViewKR.Rows.Count; i++)
            {
                string KRtem = dataGridViewKR.Rows[0].Cells[1].Value.ToString() + " «" + dataGridViewKR.Rows[0].Cells[2].Value.ToString() + "»" + "^p"
                       + dataGridViewKR.Rows[i].Cells[1].Value.ToString() + " «" + dataGridViewKR.Rows[i].Cells[2].Value.ToString() + "»" + "^p";
 
                var helper = new WordHelper("ExportT.docx");
                var items = new Dictionary<string, string>
 
            {
                { "<LastName>", NameTB.Text},
                { "<FirstName>", FNameTB.Text},
                { "<MiddleName>", MNameTB.Text},
                { "<Birthday>", BirtDatePicker.Value.ToString("dd MMMM yyyy")},
                { "<PrevDoc>", PrevDocTB.Text},
                { "<PrevDocYear>", PrevDocYearTB.Text},
                { "<Qual>", QualTB.Text},
                { "<Spec>", SpecTB.Text},
                { "<Year>", YearTB.Text},
                { "<DateV>", DateVTP.Value.ToString("dd MMMM yyyy")},
                { "<DOP>", DopTB.Text},
                { "<DiscKr>", KRtem },
                //       dataGridViewKR.Rows[0].Cells[1].Value.ToString() + " «" + dataGridViewKR.Rows[0].Cells[2].Value.ToString() +"»"
                //+ "^p" + dataGridViewKR.Rows[1].Cells[1].Value.ToString() + " «" + dataGridViewKR.Rows[1].Cells[2].Value.ToString() +"»"},
                { "<MarkKr>", dataGridViewKR.Rows[0].Cells[3].Value.ToString() + "^p" + dataGridViewKR.Rows[1].Cells[3].Value.ToString()},
            };
                helper.Process(items);
 
            }
        }



класс который использую для экспорта

Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
using System;
using System.Collections.Generic;
using System.IO;
using System.Windows.Forms;
using Word = Microsoft.Office.Interop.Word;
 
 
// class WordHelper предназначен для импорта в Word
namespace DMF
{
    class WordHelper
    {
        private FileInfo _fileInfo;
 
        public WordHelper(string fileName)
        {
            if (File.Exists(fileName))
            {
                _fileInfo = new FileInfo(fileName);
            }
            else 
            {
                throw new ArgumentException("Not found");
            }
        }
 
        //Процедура поиска и замены текста в документе Word
        internal bool Process(Dictionary<string, string> items)
        {
            Word.Application app = null;
            try
            {
                app = new Word.Application();
                object file = _fileInfo.FullName;
 
                object missing = Type.Missing;
 
                app.Documents.Open(file);
 
                foreach (var item in items)
                {
                    Word.Find find = app.Selection.Find;
                    find.Text = item.Key;
                    find.Replacement.Text = item.Value;
 
                    Object wrap = Word.WdFindWrap.wdFindContinue;
                    Object replace = Word.WdReplace.wdReplaceAll;
 
                    find.Execute(FindText: Type.Missing,
                        MatchCase: false,
                        MatchWholeWord: false,
                        MatchWildcards: false,
                        MatchSoundsLike: missing,
                        MatchAllWordForms: false,
                        Forward: true,
                        Wrap: wrap,
                        Format: false,
                        ReplaceWith: missing, Replace: replace);
                }
 
                Object newFileName = Path.Combine(_fileInfo.DirectoryName, DateTime.Now.ToString("dd.MM.yyyy_HH-mm") + _fileInfo.Name);
                //Object newFileName = Path.Combine(_fileInfo.DirectoryName, TreeViewForm.NameTB.Text + " " + TreeViewForm.FNameTB.Text + " " + TreeViewForm.MNameTB.Text);
                app.ActiveDocument.SaveAs2(newFileName);
                app.ActiveDocument.Close();
                
 
                return true;
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
            finally
            { 
            if (app != null)
                {
                    app.Quit();
                }
                MessageBox.Show("Импорт завершен!");
            }
        }
        
    }
}

Файл для экспорта
ExportT.docx
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.02.2022, 12:31
Ответы с готовыми решениями:

Экспорт таблицы DataGridView в Word используя OpenXml SDK
Бодрого времени суток! Есть форма, на которой добавляются в грид строки, необходимо данные этого грида после заполнения, в виде...

Экспорт в DataGridView в Excel
как экспортировать таблицу datagridview в Excell на С#

DataGridView экспорт в Excel
Здравствуйте,вывожу данные из Датагрида в Ексель,как вы видите на скриншоте данные выводятся не красиво. ...

6
 Аватар для Kazbek17
1484 / 939 / 454
Регистрация: 06.02.2012
Сообщений: 2,868
14.02.2022, 15:45
Лучший ответ Сообщение было отмечено aliengm как решение

Решение

Цитата Сообщение от aliengm Посмотреть сообщение
Добрый день! Начну с того что поиском не нашел решения своей проблемы, суть проблемы.
Есть файл Ворд, в который экспрортирую данные из текстбоксов и DataGridView, с тексбоксами проблем нет, а вот с DataGridView возникла проблема, количество строк в таблице может меняться в зависимости от выбранного студента, и есть необходимость объединить 1 и 2 столбец во время экспорта. Помогите разобраться пожалуйста, а то застопорился на этом моменте.
Вопрос понятен, а вот проблему так и не понял, в чем загвоздка?
1
0 / 0 / 0
Регистрация: 05.11.2021
Сообщений: 6
14.02.2022, 19:13  [ТС]
Цитата Сообщение от Kazbek17 Посмотреть сообщение
Вопрос понятен, а вот проблему так и не понял, в чем загвоздка?
Не получается экспортировать DataGridView в указанный файл с учетом того что количество строк не фиксировано, может быть от 0 до N.
В общем надо чтобы после экспорта в таблице Word было

Курсовая работа "Тема курсовой" в отдельном столбце оценка
Курсовая работа2 "Тема курсовой2" оценка2
...
Курсовая работаN "Тема курсовойN" оценкаN
0
 Аватар для Andrey-MSK
3344 / 2231 / 387
Регистрация: 14.08.2018
Сообщений: 7,537
Записей в блоге: 4
15.02.2022, 17:16
aliengm, Источник данных для DGV какой? По хорошему там должна быть коллекция, вот её и экспортируйте в Word.
0
0 / 0 / 0
Регистрация: 05.11.2021
Сообщений: 6
15.02.2022, 22:06  [ТС]
Источник база данных, DGV заполняется sql запросом
0
 Аватар для Andrey-MSK
3344 / 2231 / 387
Регистрация: 14.08.2018
Сообщений: 7,537
Записей в блоге: 4
16.02.2022, 11:29
Цитата Сообщение от aliengm Посмотреть сообщение
Источник база данных, DGV заполняется sql запросом
Источником должна быть коллекция, которая заполняется из БД и потом привязывается к DGV. Коллекция типа BindingList - этот тип автоматически обновляет привязанный элемент UI при своём изменении.
Вот и работайте с этой коллекцией, а DGV оставьте для показа данных.
0
0 / 0 / 0
Регистрация: 05.11.2021
Сообщений: 6
22.02.2022, 15:36  [ТС]
В общем код
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
private void PrilTitWord_Click(object sender, EventArgs e)
        {            
            var helper = new WordHelper("ExportT.docx");
            for (int i = 0; i < dataGridViewKR.Rows.Count; i++)
            {
                string KRtem = dataGridViewKR.Rows[i].Cells[1].Value.ToString() + " «" + dataGridViewKR.Rows[i].Cells[2].Value.ToString() + "»" + "^p" + "<DiscKr>";
                var items = new Dictionary<string, string>
                {
                    { "<LastName>", NameTB.Text},
                    { "<FirstName>", FNameTB.Text},
                    { "<MiddleName>", MNameTB.Text},
                    { "<Birthday>", BirtDatePicker.Value.ToString("dd MMMM yyyy")},
                    { "<PrevDoc>", PrevDocTB.Text},
                    { "<PrevDocYear>", PrevDocYearTB.Text},
                    { "<Qual>", QualTB.Text},
                    { "<Spec>", SpecTB.Text},
                    { "<Year>", YearTB.Text},
                    { "<DateV>", DateVTP.Value.ToString("dd MMMM yyyy")},
                    { "<DOP>", DopTB.Text},
                    { "<DiscKr>", KRtem},
                    { "<MarkKr>", textBoxKRm.Text},
                };                
                    helper.Process(items);
            }
        }
делает почти все верно, единственное проблема в том, что при выполнение FOR он выполняется каждый раз в новом файле, подскажите как сделать так чтобы выполнялся цикл в текущем файле и после прохождения сохранялся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2022, 15:36
Помогаю со студенческими работами здесь

Экспорт DataGridView в Excel
Доброго времени суток. Мне необходима помощь. Не выходит выполнить экспорт в Excel возникает ошибка. Помогите пожалуйста. Программа...

Экспорт данных в шаблон Word
Здравствуйте, подскажите как сформировать отчёт из С# в Word. Заранее спасибо =)

Экспорт данных из Word на форму приложения
Доброго времени суток, господа программисты, есть кто шарит в импорте с Word? Импортировать данные приходиться с защитой от ненужных...

Экспорт таблицы из Ms Word и запись в MS Excel
Добрый день. Надеюсь на вашу помощь, т.к. поиск не помог. Суть в том что имеется документ Word, в нем находится таблица которую нужно...

Экспорт/Импорт данных из dataGridView в файл
Доброго дня/ночи! Прошу помочь с сохранением/загрузкой данных из dataGridView. По куче примеров и решений состряпал &quot;нечто&quot;....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru