С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.98/92: Рейтинг темы: голосов - 92, средняя оценка - 4.98
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 15
1
.NET 4.x

Как содержимое DataGridView занести в Word?

22.08.2011, 14:16. Показов 17051. Ответов 15
Метки word (Все метки)

Author24 — интернет-сервис помощи студентам
Как содержимое DataGridView занести в Word. Если можно то как можно подробнее!!!
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.08.2011, 14:16
Ответы с готовыми решениями:

Содержимое ячеек dataGridView столбца в занести в label
есть таблица: 1 | имя 2 | имя_2 3 | имя_3 Как сделать так что бы содержимое ячеек 2 (имена)...

Как занести в массив содержимое файла?
Каким образом можно занести содержимое текстового файла в массив? Т.е. имеется какой-либо...

Как занести в переменную содержимое определенной строки из Listbox-а?
Всем привет! Как занести в переменную содержимое определенной строки их Listbox'a?

Как занести значение в dataGridView?
не могу ничего понять, пишу dataGridView1.Rows.Cells.Value = Convert.ToString(res);, где xi = или...

15
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
22.08.2011, 14:31 2
Вопрос из ряда: хочу разбогатеть, не подскажите как?

Что конкретно не получается?
0
3 / 3 / 0
Регистрация: 26.03.2011
Сообщений: 15
22.08.2011, 14:35  [ТС] 3
На форме в Datagrid отображаются данные как эти данные внести в Word (и вопрос нормальный если вы в это не понимаете то лучше не парить друг другу мозг, без обид)
0
6287 / 3570 / 900
Регистрация: 28.10.2010
Сообщений: 5,937
22.08.2011, 14:47 4
Лучший ответ Сообщение было отмечено как решение

Решение

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
using System;
using Word = Microsoft.Office.Interop.Word;
 
class Program
{
    static void Main(string[] args)
    {
        const int columns = 4;
        const int rows = 3;
        int[,] array = new int[rows, columns] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
        Word.Application application = new Word.Application();
        Object missing = Type.Missing;
        application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        Word.Document document = application.ActiveDocument;
        Word.Range range = application.Selection.Range;
        Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
        Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
        document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
        for (int i = 0; i < rows; i++)
            for (int j = 0; j < columns; j++)
                document.Tables[1].Cell(i + 1, j + 1).Range.Text = array[i, j].ToString();
        application.Visible = true;
    }
}
4
3 / 3 / 0
Регистрация: 26.06.2012
Сообщений: 63
13.03.2013, 19:10 5
Цитата Сообщение от Петррр Посмотреть сообщение
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
using System;
using Word = Microsoft.Office.Interop.Word;
 
class Program
{
    static void Main(string[] args)
    {
        const int columns = 4;
        const int rows = 3;
        int[,] array = new int[rows, columns] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
        Word.Application application = new Word.Application();
        Object missing = Type.Missing;
        application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        Word.Document document = application.ActiveDocument;
        Word.Range range = application.Selection.Range;
        Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
        Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
        document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
        for (int i = 0; i < rows; i++)
            for (int j = 0; j < columns; j++)
                document.Tables[1].Cell(i + 1, j + 1).Range.Text = array[i, j].ToString();
        application.Visible = true;
    }
}
Ну и где тут данные из DataGridView?
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
13.03.2013, 19:15 6
Цитата Сообщение от Shmidt1987 Посмотреть сообщение
Ну и где тут данные из DataGridView?
В этом примере записываются данные из двумерного массива. В чём проблема по аналогии записать из GridView ?
0
4 / 4 / 3
Регистрация: 07.02.2013
Сообщений: 54
02.05.2013, 18:46 7
Кликните здесь для просмотра всего текста
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
using System;
using Word = Microsoft.Office.Interop.Word;
 
class Program
{
    static void Main(string[] args)
    {
        const int columns = 4;
        const int rows = 3;
        int[,] array = new int[rows, columns] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
        Word.Application application = new Word.Application();
        Object missing = Type.Missing;
        application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
        Word.Document document = application.ActiveDocument;
        Word.Range range = application.Selection.Range;
        Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
        Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
        document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
        for (int i = 0; i < rows; i++)
            for (int j = 0; j < columns; j++)
                document.Tables[1].Cell(i + 1, j + 1).Range.Text = array[i, j].ToString();
        application.Visible = true;
    }
}



Прошу прощение за свою малограмонтность, но как обращаться с таблицей, когда нужно запихать по строке с датагрида?)

Добавлено через 1 час 22 минуты
Юзая ваш кусок кода сделал так:
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
        private void button1_Click(object sender, EventArgs e)
        {
            //
            //const int columns = 4;
            //const int rows = 3;
            //int[,] array = new int[rows, columns] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
            //
            int columns = 9;
            int rows = dataGridView1.RowCount;
            //  
 
            Word.Application application = new Word.Application();
            Object missing = Type.Missing;
            application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            Word.Document document = application.ActiveDocument;
            Word.Range range = application.Selection.Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
            for (int j = 0; j < rows; j++)
                for (int i = 0; i < columns; i++)
                {                    
                    document.Tables[1].Cell(j+1, i+1).Range.Text = dataGridView1[i, j].Value.ToString();//.ToString()
                }
            application.Visible = true;
            
        }
Но комплютер бедный, аж задыхается, пока каждую ячейку выделит и занесет туды, в таблицу ворда... Может есть гуманней метод?
0
192 / 192 / 29
Регистрация: 03.12.2009
Сообщений: 853
02.05.2013, 19:20 8
Вам нужна таблица в один столбец или как? не совсем понял что вы хотите сделать)
0
4 / 4 / 3
Регистрация: 07.02.2013
Сообщений: 54
02.05.2013, 19:45 9
Ну почему же?
я получаю ворд с вот такой табличкой. (скрин приклеен)

З.Ы. Столкнулся с интересным моментом. После выгрузки таблицы в ворд пользователь видит ворд со своей таблицей, если он не СОХРАНИТ её (нажмет "Закрыть" и потом кнопочку "Нет"), то это дело остается в процессах и размножается с каждой кнопкой "Нет"... Можно ли это побороть программно, или все же пользователю каждый раз придется сохранять файл.док, даже если он его чем-то не устроил в последний момент.
З.З.Ы. "некрасоту" с номером по-порядку и датой почти исправил
Миниатюры
Как содержимое DataGridView занести в Word?  
0
4 / 4 / 3
Регистрация: 07.02.2013
Сообщений: 54
03.05.2013, 10:25 10
Цитата Сообщение от da1z Посмотреть сообщение
Вам нужна таблица в один столбец или как? не совсем понял что вы хотите сделать)
Только сейчас я понял, о чем вы спросили!) Нет, мне ненужна таблица в один столбец!) Просто подобный метод перебора записей из таблицы(datagridview) и запись их в таблицу (word) довольно громоздкий, как мне кажется...
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
22.05.2017, 13:46 11
Цитата Сообщение от Kuzyavka Посмотреть сообщение
C#
1
document.Tables[1].Cell(j+1, i+1).Range.Text = dataGridView1[i, j].Value.ToString();//.ToString
подскажите по чему при экспорте данных ругается на строчку и пишет что в экземпляре не задана ссылка на объект.
0
102 / 106 / 62
Регистрация: 19.11.2015
Сообщений: 380
22.05.2017, 14:51 12
На какой именно объект не создана ссылка?
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
22.05.2017, 15:14 13
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
          
            int columns = 4;
            int rows = dataGridView1.RowCount;
            //  
 
            Word.Application application = new Word.Application();
            Object missing = Type.Missing;
            application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            Word.Document document = application.ActiveDocument;
            Word.Range range = application.Selection.Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
            for (int j = 0; j < rows; j++)
                for (int i = 0; i < columns; i++)
                {
                    document.Tables[1].Cell(j + 1, i + 1).Range.Text = dataGridView1[i, j].Value.ToString();
                }
            application.Visible = true;
Я кодом выше пытаюсь данные из dataGridView экспортировать в Word, при компиляции программы ошибки не вылизали но при попытки экспорта выдает исключение.

если что то делаю не так т о подскажите как правильно сделать.
0
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
24.05.2017, 18:15 14
С вопросом исключения я разобрался, однако теперь возник вопрос почему при экспорте в Word, данные в таблицу выгружаются со второй строки?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
            int columns = 4;
            int rows = dataGridView1.RowCount;
            //  
 
            Word.Application application = new Word.Application();
            Object missing = Type.Missing;
            application.Documents.Add(ref missing, ref missing, ref missing, ref missing);
            Word.Document document = application.ActiveDocument;
            Word.Range range = application.Selection.Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            document.Tables.Add(range, rows, columns, ref behiavor, ref autoFitBehiavor);
            for (int j = 0; j < rows; j++)
                for (int i = 0; i < columns; i++)
                {
                    document.Tables[1].Cell(j + 1, i + 1).Range.Text = dataGridView1[i, j].Value.ToString();
                }
            application.Visible = true;
0
1 / 1 / 0
Регистрация: 21.06.2017
Сообщений: 11
21.06.2017, 19:58 15
AlekseyS_35, Я кодом выше пытаюсь данные из dataGridView экспортировать в Word, при компиляции программы ошибки не вылизали но при попытки экспорта выдает исключение,c вопросом исключения я разобрался. Можете объяснить как вы это сделали ?
1
6 / 6 / 3
Регистрация: 29.08.2016
Сообщений: 107
22.06.2017, 11:17 16
Поскольку я вставлял таблицу в ранее созданный шаблон то у меня получился такой код:

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
private void button4_Click(object sender, EventArgs e)
        {
            dataGridView1.AllowUserToAddRows = false;
 
            Word.Application wordapp = new Word.Application();
            wordapp.Visible = true;
            Object template = "путь к шаблону Word";
            Object newTemplate = false;
            Object documentType = Word.WdNewDocumentType.wdNewBlankDocument;
            Object visible = true;
            Word._Document worddoc;
            //Создаем документ
            worddoc = wordapp.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible);
 
            Object bookmarkNameObj = "FIO";
            Word.Range bookmarkRange = null;
            bookmarkRange = worddoc.Bookmarks.get_Item(ref bookmarkNameObj).Range;
            bookmarkRange.Text = comboBox1.Text;
 
            bookmarkNameObj = "StartDate";
            bookmarkRange = null;
            bookmarkRange = worddoc.Bookmarks.get_Item(ref bookmarkNameObj).Range;
            bookmarkRange.Text = dateTimePicker1.Text;
 
            bookmarkNameObj = "EndDate";
            bookmarkRange = null;
            bookmarkRange = worddoc.Bookmarks.get_Item(ref bookmarkNameObj).Range;
            bookmarkRange.Text = dateTimePicker2.Text;
 
            bookmarkNameObj = "Table";
            bookmarkRange = null;
            bookmarkRange = worddoc.Bookmarks.get_Item(ref bookmarkNameObj).Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            int columns = 2;
            int rows = dataGridView1.RowCount + 1;
            worddoc.Tables.Add(bookmarkRange, rows, columns, ref behiavor, ref autoFitBehiavor);
            //Форматирование заголовок(жирный шрифт и размер текста)
            worddoc.Tables[1].Cell(1, 1).Range.Bold = 1;
            worddoc.Tables[1].Cell(1, 2).Range.Bold = 1;
            worddoc.Tables[1].Cell(1, 1).Range.Font.Size = 14;
            worddoc.Tables[1].Cell(1, 2).Range.Font.Size = 14;
            //Название столбцов в таблице
            worddoc.Tables[1].Cell(1, 1).Range.Text = "Код";
            worddoc.Tables[1].Cell(1, 2).Range.Text = "Группа";
 
            //ориентация страницы (Альбомная)
            worddoc.PageSetup.Orientation = Word.WdOrientation.wdOrientLandscape;     
 
            for (int j = 0; j < rows - 1; j++)
            {
 
                for (int i = 1; i < columns; i++)
                {
                  //здесь я указал из каких столбцов делать экспорт
                    worddoc.Tables[1].Cell(j + 2, i + 0).Range.Text = dataGridView1[1, j].Value.ToString();
                    worddoc.Tables[1].Cell(j + 2, i + 1).Range.Text = dataGridView1[2, j].Value.ToString();
                }
            }
            wordapp.Visible = true;
 
            dataGridView1.AllowUserToAddRows = true;
 
        }
данный код работает
1
22.06.2017, 11:17
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.06.2017, 11:17
Помогаю со студенческими работами здесь

Как занести данные в БД из DataGridView?
И вот еще вопрос, как сне сделать так, чтобы данные заносились в бд? con2.Open();...

Как занести данные из Word в StringGrid?
Подскажите пожалуйста как сделать чтобы текст набранный в Word можно было занести в StringGrid или...

Как занести данные с DataGridView в Access
Всем доброго дня! Вот как-то так у меня заполняется DataGridView данными void Get_Results () //...

Как занести данные в таблицу dataGridView
Пользователь вводит имя, год рождение и баллы. Они должны попасть в 3 столбца. Помогите плиз!!!!


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Книги и учебные ресурсы по C#
InfoMaster 08.01.2025
Базовые учебники и руководства Одной из лучших книг для начинающих является "C# 10 и . NET 6 для начинающих" Эндрю Троелсена и Филиппа Джепикса . Книга последовательно раскрывает основные концепции. . .
Что такое NullReferenceEx­­­ception и как исправить?
InfoMaster 08.01.2025
NullReferenceException - одно из самых распространенных исключений, с которым сталкиваются разработчики на C#. Это исключение возникает при попытке обратиться к членам объекта (методам, свойствам или. . .
Что такое Null Pointer Exception (NPE) и как это исправить?
InfoMaster 08.01.2025
Null Pointer Exception (NPE) - это одно из самых распространенных исключений в Java, которое возникает при попытке использовать ссылку на объект, значение которой равно null. Это исключение относится. . .
Русский язык в консоли C++
InfoMaster 08.01.2025
При разработке программ на C++ одной из частых проблем, с которой сталкиваются русскоязычные программисты, является корректное отображение кириллицы в консольных приложениях. Эта проблема особенно. . .
Telegram бот на C#
InfoMaster 08.01.2025
Разработка ботов для Telegram стала неотъемлемой частью современной экосистемы мессенджеров. C# предоставляет мощный и удобный инструментарий для создания разнообразных ботов, от простых. . .
Использование GraphQL в Go (Golang)
InfoMaster 08.01.2025
Go (Golang) является одним из наиболее популярных языков программирования, используемых для создания высокопроизводительных серверных приложений. Его архитектурные особенности и встроенные. . .
Что лучше использовать при создании класса в Java: сеттеры или конструктор?
Alexander-7 08.01.2025
Вопрос подробнее: На вопрос: «Когда одновременно создаются конструктор и сеттеры в классе – это нормально?» куратор уточнил: «Ваш класс может вообще не иметь сеттеров, а только конструктор и геттеры. . .
Как работать с GraphQL на TypeScript
InfoMaster 08.01.2025
Введение в GraphQL и TypeScript В современной разработке веб-приложений GraphQL стал мощным инструментом для создания гибких и эффективных API. В сочетании с TypeScript, эта технология. . .
Счётчик на базе сумматоров + регистров и генератора сигналов согласования.
Hrethgir 07.01.2025
Создан с целью проверки скорости асинхронной логики: ранее описанного сумматора и предополагаемых fast регистров. Регистры созданы на базе ранее описанного, предполагаемого fast триггера. То-есть. . .
Как перейти с Options API на Composition API в Vue.js
BasicMan 06.01.2025
Почему переход на Composition API актуален В мире современной веб-разработки фреймворк Vue. js продолжает эволюционировать, предлагая разработчикам все более совершенные инструменты для создания. . .
Архитектура современных процессоров
inter-admin 06.01.2025
Процессор (центральный процессор, ЦП) является основным вычислительным устройством компьютера, которое выполняет обработку данных и управляет работой всех остальных компонентов системы. Архитектура. . .
История создания реляционной модели баз данных, правила Кодда
Programming 06.01.2025
Предпосылки создания реляционной модели В конце 1960-х годов компьютерная индустрия столкнулась с серьезными проблемами в области управления данными. Существовавшие на тот момент модели данных -. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru