Пример #1
0
        //Генерация заказа в 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;
        }
Пример #2
0
        //Генерация заказа в 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;
        }