none
Заполнение таблицы в шаблоне Word данными из динамического Access. RRS feed

  • Общие обсуждения

  • Приветствую.

    Задача.

    (1) Имеем файл шаблона Word.dotx

    (2) Файл БД Access.mdb

    Кнопку на форме, которая читает все строки из (2) и вставляет их в (1).

    Вот что получилось у меня:

    private void button2_Click(object sender, EventArgs e)
            {
                if (textBox11.Text == "123") //ПАРОЛЬ
                {
                    // читаем шаблон и сохраняем документ для печати
                    Word._Document examword = GetDoc("C:\\exam_list.dotx"); //Environment.CurrentDirectory + 
                    examword.SaveAs(FileName: "C:\\exam_list_prin.docx"); //Environment.CurrentDirectory "\\
                    examword.Close();
     
                }
                    else 
                    {
                        MessageBox.Show("Неверный пароль", "Ошибка!");
                    }
            }
     
            private Word._Document GetDoc(string path)
            {
                Word._Document examword = examdoc.Documents.Add(path);
                SetTemplate(examword);
                return examword;
            }
            private void SetTemplate(Word._Document examdoc)
            {
                string sel = "SELECT [№ п/п] AS [1], fio AS [2], ceh AS [3], proff AS [4], gr AS [5], edu AS [6], med AS [7], num AS [8], ball AS [9], podp AS [10], prim AS [11] FROM exam";
                using (OleDbCommand command_s = new OleDbCommand(sel, examConnection))
                {
                    OleDbDataReader reader_sr = command_s.ExecuteReader();
                    while (reader_sr.Read())
                    {
                        examdoc.Bookmarks["number"].Range.Text = reader_sr[0].ToString(); //первичный ключ из таблицы access
                        examdoc.Bookmarks["fio"].Range.Text = reader_sr[1].ToString();
                        examdoc.Bookmarks["ceh"].Range.Text = reader_sr[2].ToString();
                        examdoc.Bookmarks["proff"].Range.Text = reader_sr[3].ToString();
                        examdoc.Bookmarks["gr"].Range.Text = reader_sr[4].ToString();
                        examdoc.Bookmarks["edu"].Range.Text = reader_sr[5].ToString();
                        examdoc.Bookmarks["med"].Range.Text = reader_sr[6].ToString();
                        examdoc.Bookmarks["num"].Range.Text = reader_sr[7].ToString(); //пустое поле
                        examdoc.Bookmarks["ball"].Range.Text = reader_sr[8].ToString(); //пустое поле
                        examdoc.Bookmarks["podp"].Range.Text = reader_sr[9].ToString(); //пустое поле
                        examdoc.Bookmarks["prim"].Range.Text = reader_sr[10].ToString();
                    }
                }
            }

    Но это неправильно. потому что все строки из (2) вставляются в одну строку (1).

    Как изменить код кнопки, чтобы каждая строка из (2) вставилась в шаблон (1) новой строкой в одной таблице (только данные, без заголовков (2) )?

    28 января 2020 г. 13:47