public void AddOplata(Oplata z) { list.Add(z); }
//Генерация заказа в Word-файл private void button5_Click(object sender, EventArgs e) { // определяем, какой заказ выбран для генерации документа if (dataGridView1.SelectedRows.Count == 0) { return; } //получение номера текущего выбранного заказа nom = (int)dataGridView1.SelectedRows[0].Cells["НомерЗаказа"].Value; //получение даты текущего выбранного заказа date = (DateTime)dataGridView1.SelectedRows[0].Cells["ДатаЗаказа"].Value; // поиск заказа по ключу DataRow dr = ds.Tables["Заказы"].Rows.Find(new object[] { (object)nom, (object)date }); // создаем объект заказа для последующей сериализации Zakaz c = new Zakaz((int)dr["IDЗаказчика"], (int)dr["IDИсполнителя"], (int)dr["НомерЗаказа"], (DateTime)dr["ДатаЗаказа"], (string)dr["Предмет/Тема"], (int)dr["Стоимость"]); // выбираем все ЗаписьОплаты, соответствующие выбранному Заказу DataRow[] drs = ds.Tables["ЗаписьОплаты"].Select("НомерЗаказа=" + nom + " and ДатаЗаказа='" + date + "'"); // добавляем информацию в объект заказа foreach (DataRow d in drs) { Oplata z = new Oplata((int)d["НомерЗаказа"], (int)d["Предоплата"], (bool)d["Оплачено/НеОплачено"], (DateTime)d["ДатаОплаты"]); c.AddOplata(z); } // работа с документами Word // создание объекта-приложения Word.Application app = new Word.Application(); // создание и добавление объекта-документа MS Word Word.Document doc = app.Documents.Add(); // создание параграфа с заголовком (указание номера и даты заказа) Word.Paragraph p = doc.Content.Paragraphs.Add(); // задание текста параграфа p.Range.Text = "Заказ №" + c.НомерЗаказа + " от " + c.ДатаЗаказа; // указание, что шрифт должен быть полужирным p.Range.Font.Bold = 1; // центрирование абзаца p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; // устанавливаем межабзацный отступ p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием Заказчика p = doc.Content.Paragraphs.Add(); p.Range.Text = "ID Заказчика: " + c.IDЗаказчика; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием Исполнителя p = doc.Content.Paragraphs.Add(); p.Range.Text = "ID Исполнителя: " + c.IDИсполнителя; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием ПредметаТемы p = doc.Content.Paragraphs.Add(); p.Range.Text = "Предмет/Тема: " + c.ПредметТема; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием общей суммы по Заказу p = doc.Content.Paragraphs.Add(); p.Range.Text = "Сумма: " + c.Стоимость; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Range.Font.Size = 20; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с таблицей, в которой указана детальная // информация об оплате заказа p = doc.Content.Paragraphs.Add(); // при создании таблицы указывается ее // количество строк и столбцов (2 и 3 параметры) Word.Table tab = doc.Tables.Add(p.Range, 1 + c.Список.Count, 4); // указание, что таблица должна иметь рамку tab.Borders.Enable = 1; // заполняем ячейки таблицы – обращение к таблице осуществляется // с помощью функции Cell(номер строки, номер столбца) // отметим, что нумерация строк и столбцов начинается с 1 tab.Cell(1, 1).Range.Text = "НомерЗаказа"; tab.Cell(1, 2).Range.Text = "Предоплата"; tab.Cell(1, 3).Range.Text = "Оплачено Да/Нет"; tab.Cell(1, 4).Range.Text = "Дата оплаты"; // просматриваем список купленных товаров и заполняем остальные строки таблицы for (int i = 0; i < c.Список.Count; i++) { tab.Cell(i + 2, 1).Range.Text = "" + (c.Список[i] as Oplata).НомерЗаказа; tab.Cell(i + 2, 2).Range.Text = "" + (c.Список[i] as Oplata).Предоплата; tab.Cell(i + 2, 3).Range.Text = "" + (c.Список[i] as Oplata).Оплаченность; tab.Cell(i + 2, 4).Range.Text = "" + (c.Список[i] as Oplata).ДатаОплаты; } // сохранение документа doc.Save(); // активируем окно MS Word для просмотра сгенерированного документа app.Visible = true; }
//Генерация заказа в Word-файл private void button5_Click(object sender, EventArgs e) { // определяем, какой заказ выбран для генерации документа if (dataGridView1.SelectedRows.Count == 0) return; //получение номера текущего выбранного заказа nom = (int)dataGridView1.SelectedRows[0].Cells["НомерЗаказа"].Value; //получение даты текущего выбранного заказа date = (DateTime)dataGridView1.SelectedRows[0].Cells["ДатаЗаказа"].Value; // поиск заказа по ключу DataRow dr = ds.Tables["Заказы"].Rows.Find(new object[] { (object)nom, (object)date }); // создаем объект заказа для последующей сериализации Zakaz c = new Zakaz((int)dr["IDЗаказчика"],(int)dr["IDИсполнителя"],(int)dr["НомерЗаказа"],(DateTime)dr["ДатаЗаказа"],(string)dr["Предмет/Тема"],(int)dr["Стоимость"]); // выбираем все ЗаписьОплаты, соответствующие выбранному Заказу DataRow[] drs = ds.Tables["ЗаписьОплаты"].Select("НомерЗаказа=" + nom + " and ДатаЗаказа='" + date + "'"); // добавляем информацию в объект заказа foreach (DataRow d in drs) { Oplata z = new Oplata((int)d["НомерЗаказа"], (int)d["Предоплата"], (bool)d["Оплачено/НеОплачено"], (DateTime)d["ДатаОплаты"]); c.AddOplata(z); } // работа с документами Word // создание объекта-приложения Word.Application app = new Word.Application(); // создание и добавление объекта-документа MS Word Word.Document doc = app.Documents.Add(); // создание параграфа с заголовком (указание номера и даты заказа) Word.Paragraph p = doc.Content.Paragraphs.Add(); // задание текста параграфа p.Range.Text = "Заказ №" + c.НомерЗаказа + " от " + c.ДатаЗаказа; // указание, что шрифт должен быть полужирным p.Range.Font.Bold = 1; // центрирование абзаца p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphCenter; // устанавливаем межабзацный отступ p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием Заказчика p = doc.Content.Paragraphs.Add(); p.Range.Text = "ID Заказчика: " + c.IDЗаказчика; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием Исполнителя p = doc.Content.Paragraphs.Add(); p.Range.Text = "ID Исполнителя: " + c.IDИсполнителя; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием ПредметаТемы p = doc.Content.Paragraphs.Add(); p.Range.Text = "Предмет/Тема: " + c.ПредметТема; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с указанием общей суммы по Заказу p = doc.Content.Paragraphs.Add(); p.Range.Text = "Сумма: " + c.Стоимость; p.Format.Alignment = Word.WdParagraphAlignment.wdAlignParagraphLeft; p.Range.Font.Size = 20; p.Format.SpaceAfter = 20; p.Range.InsertParagraphAfter(); // вставка параграфа с таблицей, в которой указана детальная // информация об оплате заказа p = doc.Content.Paragraphs.Add(); // при создании таблицы указывается ее // количество строк и столбцов (2 и 3 параметры) Word.Table tab = doc.Tables.Add(p.Range, 1 + c.Список.Count, 4); // указание, что таблица должна иметь рамку tab.Borders.Enable = 1; // заполняем ячейки таблицы – обращение к таблице осуществляется // с помощью функции Cell(номер строки, номер столбца) // отметим, что нумерация строк и столбцов начинается с 1 tab.Cell(1, 1).Range.Text = "НомерЗаказа"; tab.Cell(1, 2).Range.Text = "Предоплата"; tab.Cell(1, 3).Range.Text = "Оплачено Да/Нет"; tab.Cell(1, 4).Range.Text = "Дата оплаты"; // просматриваем список купленных товаров и заполняем остальные строки таблицы for (int i = 0; i < c.Список.Count; i++) { tab.Cell(i + 2, 1).Range.Text = "" + (c.Список[i] as Oplata).НомерЗаказа; tab.Cell(i + 2, 2).Range.Text = "" + (c.Список[i] as Oplata).Предоплата; tab.Cell(i + 2, 3).Range.Text = "" + (c.Список[i] as Oplata).Оплаченность; tab.Cell(i + 2, 4).Range.Text = "" + (c.Список[i] as Oplata).ДатаОплаты; } // сохранение документа doc.Save(); // активируем окно MS Word для просмотра сгенерированного документа app.Visible = true; }