| 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);        }    }}
 |