123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.Windows.Forms;
- using Excel = Microsoft.Office.Interop.Excel;
- namespace СУБД_Швейная_фабрика
- {
- public partial class FormSpisMaterial : Form
- {
- public FormSpisMaterial()
- {
- InitializeComponent();
- }
- private void FormSpisMaterial_Load(object sender, EventArgs e)
- {
- // TODO: This line of code loads data into the 'fab2021DataSet1.Tkani' table. You can move, or remove it, as needed.
- this.tkaniTableAdapter.Fill(this.fab2021DataSet1.Tkani);
- // TODO: This line of code loads data into the 'fab2021DataSet1.Furnitura' table. You can move, or remove it, as needed.
- this.furnituraTableAdapter.Fill(this.fab2021DataSet1.Furnitura);
- }
-
- private void BtnToExcel_Click(object sender, EventArgs e)
- {
- // создать объект для связи с приложением Excel
- Excel.Application exapp = new Excel.Application();
- // сделать приложение Excel видимым
- exapp.Visible = true;
- // открыть в Excel шаблон, находящийся в папке с exe-файлом в режиме только для чтения
- exapp.Workbooks.Open(Application.StartupPath + "\\Списание.xlsx", Type.Missing, true);
- // создать переменную list1 для связи с первым листом рабочей книги
- Excel.Worksheet list1 = (exapp.Worksheets.get_Item(1));
- int RowExcel = 24; // в Excel начинать выводить с 24 строки
- // перебор тканей в DataGridView
- for (int i = 0; i <= DgvTkan.RowCount - 1; i++)
- {
- int CountSpis = 0;
- try
- {
- // сколько списать i-й ткани
- CountSpis = Convert.ToInt32(DgvTkan.Rows[i].Cells[3].Value);
- }
- catch { }
- // если человек указал 0, или не указал ничего,
- // перейти к следующей ткани
- if (CountSpis == 0)
- continue;
- // если человек ввел ненулевое кол-во для списания,
- // добавить i-ю ткань в документ
- list1.get_Range("A" + RowExcel).Value = DgvTkan.Rows[i].Cells[0].Value;
- list1.get_Range("H" + RowExcel).Value = "см";
- list1.get_Range("J" + RowExcel).Value = "ткань";
- // количество ткани для списания
- list1.get_Range("L" + RowExcel).Value = CountSpis;
- int WidthTkan = Convert.ToInt32(DgvTkan.Rows[i].Cells[1].Value);
- // площадь ткани для списания
- list1.get_Range("N" + RowExcel).Value = CountSpis * WidthTkan;
- // причина списания
- list1.get_Range("R" + RowExcel).Value = DgvTkan.Rows[i].Cells[4].Value;
- RowExcel++; // перейти в Excel к следующей строке
- }
- // перебор фурнитур в DataGridView
- for (int i = 0; i <= DgvFurnitura.RowCount - 1; i++)
- {
- int CountSpis = 0;
- try
- {
- // сколько списать i-й фурнитуры
- CountSpis = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[2].Value);
- }
- catch { }
- // если человек указал 0, или не указал ничего,
- // перейти к следующей фурнитуре
- if (CountSpis == 0)
- continue;
- // если человек ввел ненулевое кол-во для списания,
- // добавить i-ю фурнитуру в документ
- list1.get_Range("A" + RowExcel).Value = DgvFurnitura.Rows[i].Cells[0].Value;
- list1.get_Range("H" + RowExcel).Value = "шт";
- list1.get_Range("J" + RowExcel).Value = "фурнитура";
- // количество фурнитуры для списания
- list1.get_Range("L" + RowExcel).Value = CountSpis;
- // причина списания
- list1.get_Range("R" + RowExcel).Value = DgvFurnitura.Rows[i].Cells[3].Value;
- RowExcel++; // перейти в Excel к следующей строке
- }
- }
- private void BtnSpisMaterial_Click(object sender, EventArgs e)
- {
- DialogResult rez = MessageBox.Show("Вы уверены, что нужно выбранные материалы?",
- "Внимание!", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
- // если пользователь отказался списать, то выйти из процедуры
- if (rez == DialogResult.No)
- return;
- // перебор тканей в DataGridView
- for (int i = 0; i <= DgvTkan.RowCount - 1; i++)
- {
- int CountSpis = 0;
- try
- {
- // сколько списать i-й ткани
- CountSpis = Convert.ToInt32(DgvTkan.Rows[i].Cells[3].Value);
- }
- catch { }
- // если человек указал 0, или не указал ничего,
- // перейти к следующей ткани
- if (CountSpis == 0)
- continue;
- // если человек ввел ненулевое кол-во для списания,
- // списать ткань
- int LengthTkan = Convert.ToInt32(DgvTkan.Rows[i].Cells[2].Value);
- // уменьшить кол-во ткани на складе на кол-во списываемой ткани
- LengthTkan -= CountSpis;
- // записать в столбец с длиной рулона ткани на складе новое значение
- DgvTkan.Rows[i].Cells[2].Value = LengthTkan;
- }
- BsTkani.EndEdit();
- this.tkaniTableAdapter.Update(this.fab2021DataSet1.Tkani);
- // перебор фурнитур в DataGridView
- for (int i = 0; i <= DgvFurnitura.RowCount - 1; i++)
- {
- int CountSpis = 0;
- try
- {
- // сколько списать i-й фурнитуры
- CountSpis = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[2].Value);
- }
- catch { }
- // если человек указал 0, или не указал ничего,
- // перейти к следующей фурнитуре
- if (CountSpis == 0)
- continue;
- // если человек ввел ненулевое кол-во для списания,
- // списать фурнитуру
- // если человек ввел ненулевое кол-во для списания,
- // списать ткань
- int CountFur = Convert.ToInt32(DgvFurnitura.Rows[i].Cells[1].Value);
- // уменьшить кол-во фурнитур на складе на кол-во списываемых фурнитур
- CountFur -= CountSpis;
- // записать в столбец с кол-вом фурнитур на складе новое значение
- DgvFurnitura.Rows[i].Cells[1].Value = CountFur;
- }
- BsFurnitura.EndEdit();
- this.furnituraTableAdapter.Update(this.fab2021DataSet1.Furnitura);
- }
- }
- }
|