Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25

Ошибка в передаче данных в MS Word

23.04.2017, 16:25. Показов 1675. Ответов 10

Студворк — интернет-сервис помощи студентам
Не могу понять где моя ошибка. загружаю в datagredwiew данные
Кликните здесь для просмотра всего текста

После чего всё показывается как
Кликните здесь для просмотра всего текста

далее загружаю данные по кнопке
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
  private void button3_Click(object sender, EventArgs e)
        {
            Word.Application wordapp = new Word.Application();
             
            wordapp.Visible = true;
            Object template = Environment.CurrentDirectory + "\\tmpl\\Информация о выпускниках.docx";
            Object newTemplate = false;
            Object documentType = Word.WdNewDocumentType.wdNewBlankDocument;
            Object visible = true;
            Word._Document worddoc;
            //Создаем документ 1
            worddoc = wordapp.Documents.Add(ref template, ref newTemplate, ref documentType, ref visible);
 
            Object bookmarkNameObj = "Table";
            Word.Range  bookmarkRange = null;
            bookmarkRange = worddoc.Bookmarks.get_Item(ref bookmarkNameObj).Range;
            Object behiavor = Word.WdDefaultTableBehavior.wdWord9TableBehavior;
            Object autoFitBehiavor = Word.WdAutoFitBehavior.wdAutoFitFixed;
            int rows = dataGridView1.RowCount + 1;
            int columns = 6;
            worddoc.Tables.Add(bookmarkRange, rows, columns, ref behiavor, ref autoFitBehiavor);
            worddoc.Tables[1].Cell(1, 1).Range.Text = "№ п/п";
            worddoc.Tables[1].Cell(1, 2).Range.Text = "Ф.И.О. студента";
            worddoc.Tables[1].Cell(1, 3).Range.Text = "Тема выпускной квалификационной работы";
            worddoc.Tables[1].Cell(1, 4).Range.Text = "Характер работы (по заявке, научно-исслед.)";
            worddoc.Tables[1].Cell(1, 5).Range.Text = "Ф.И.О. руководителя (должность)";
            worddoc.Tables[1].Cell(1, 6).Range.Text = "Сведения о трудоустройстве (на момент защиты)";
            for (int i = 0; i < rows - 1; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    worddoc.Tables[1].Cell(i + 2, j + 1).Range.Text = dataGridView1[j, i].Value.ToString();
                }
            }
 
 
        }
Документ дописывается не полностью
Кликните здесь для просмотра всего текста


и выходит с ошибкой
Кликните здесь для просмотра всего текста

не могу понять где я ошибся, пересчитываю столбцы и строки вроде всё нормально, но так и не могу понять что я сделал неправильно.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.04.2017, 16:25
Ответы с готовыми решениями:

Ошибка при передаче данных из StringGrid в Word
Доброе время суток! Помогите найти ошибку, написал код по передаче таблицы в ворд. Таблица состоит из 9 столбцов и 20 строк, передает...

Как сделать отступ при передаче данных из access в word?
В общем возникла проблема. Передаю данные на печать из access в word c помощью такой строки .Bookmarks.Item(&quot;DATA&quot;).Range.Text...

Ошибка при передаче данных
Есть две формы 1 и 2. В первой формы при нажатии кнопки должны меняться названия лейбелов во 2 форме вот код для использования данных в...

10
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.04.2017, 16:54
Столбцов у тебя не 6, а 5.
C#
1
int rows = dataGridView1.RowCount + 1;
Зачем +1? У тебя в dgv есть пустая последняя строка. Её можно убрать AllowUserToAddRows = false. Но раз уж она у тебя есть, то нужно иметь ввиду, что она пустая.
Это ещё один пример того, что не нужно хранить данные в контролах: они для этого не предназначены.
0
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25
23.04.2017, 17:04  [ТС]
Изменил количество столбцов, убрал возможность добавления у пользователя, но всё-равно проблема осталась
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.04.2017, 17:17
При каких значениях выскакивает ошибка?
0
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25
23.04.2017, 17:22  [ТС]
честно, при изменении любого параметра. Но я понял в чем косяк был, dgv загружал только 5 из 6 колонок, исправил, начало печататься по всем колонкам, но не до конца файла, все данные остались прежними, кроме
C#
1
int rows = dataGridView1.RowCount + 1;
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.04.2017, 17:23
ZzZombo-_-FIL, ты приложил скриншот с ошибкой, но самого главного там нет: значений переменных, почему-то ты решил их не включать в скриншот.
0
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25
23.04.2017, 17:28  [ТС]
0
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25
23.04.2017, 17:35  [ТС]
Изменил количество стоблбцов, теперь не вылетает с ошибкой, но не дорисовывает последнюю строчку
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.04.2017, 17:38
ZzZombo-_-FIL, ты не видишь, что это другая ошибка? Там у тебя было ArgumentOutOfRangeException, а тут NullReferenceException.
И я говорил, что столбцов у тебя 5, а не 6. Здесь же ошибка возникает, потому что j = 5, и ты обращаешься к 6-му столбцу
0
0 / 0 / 0
Регистрация: 18.09.2014
Сообщений: 25
23.04.2017, 17:46  [ТС]
Теперь увидел, но не могу сообразить какая переменная и где именно выскакивает
0
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
23.04.2017, 18:25
Лучший ответ Сообщение было отмечено ZzZombo-_-FIL как решение

Решение

Цитата Сообщение от ZzZombo-_-FIL Посмотреть сообщение
какая переменная и где именно выскакивает
ёмкое описание.
Вот пример экспорта содержимого DGV в 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
private void ExportToWord()
{
    //Новое приложение Word
    var wdApp = new Word.Application();
    //Новый документ
    var doc = wdApp.Documents.Add();
    //Добавляем таблицу
    var table = doc.Tables.Add(doc.Range(), 1, dataGridView1.ColumnCount);
    //Вставляем заголовки в первую строку таблицы
    foreach (DataGridViewColumn column in dataGridView1.Columns)
    {
        table.Rows[1].Cells[column.DisplayIndex + 1].Range.Text = column.HeaderText;
    }
    //Перебираем строки DGV и добавляем в таблицу документа
    foreach (DataGridViewRow row in dataGridView1.Rows)
    {
        var newrow = table.Rows.Add();
        foreach (DataGridViewCell rowCell in row.Cells)
        {
            if (rowCell.Value == null)//пустые значения пропускаем
            {
                continue;
            }
            newrow.Cells[rowCell.ColumnIndex + 1].Range.Text = rowCell.Value.ToString();
        }
    }
    //показываем приложение
    wdApp.Visible = true;
}
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.04.2017, 18:25
Помогаю со студенческими работами здесь

Ошибка при передаче данных
Я на форме нашёл способ передачи значений переменных с одной страницы на другую при помощи Json(язык JavaScript), там передача происходила...

Ошибка при передаче данных по USART
Здравствуйте, отправляю по USART 16-байтный буфер из данных с 12-битного АЦП (8 каналов, по 2 байта на канал). Для приема использую...

Ошибка при передаче данных в GridView
Среда: WPF Ошибка: Произошла ошибка базового поставщика в Open. Код: private void Window_Loaded(object sender,...

Ошибка при передаче данных в php ajax
Доброе время суток. Уважаемые программисты очень нужна ваша помощь, уже второй день ищу проблему. У меня есть форма с которой данные...

Может ли быть ошибка при передаче данных?
есть функция: CalculateMovingAverage(&amp;RMSSmoothLenghtM1, URMS.Channel1M, URMSSmooth.Channel1M); такая обработка правильная будет? ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru