Форум программистов, компьютерный форум, киберфорум
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. Показов 16997. Ответов 15
Метки word (Все метки)

Author24 — интернет-сервис помощи студентам
Как содержимое DataGridView занести в Word. Если можно то как можно подробнее!!!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.06.2017, 11:17
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru