Диплом: Автоматизация и внедрение складского учета в мебельную компанию ООО "РИО ГАРАНТ"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
111
sh =
(BDDataSet.ШаблонСтипомRow)((DataRowView)comboBox1.SelectedItem).Row;
BDDataSet.МеткиDataTable m =
меткиTableAdapter.GetDataByКодШаблона(sh.КодШаблона);
int i = 1;
sheet.Cells[4, 1] = "Имя документа документа";
sheet.Columns[1].ColumnWidth = 10;
bool isEstTable = false;
foreach (BDDataSet.МеткиRow metka in m)
{
if (metka.КодВидаМетки != 1 && metka.КодВидаМетки != 2) continue;
i++;
if (metka.КодВидаМетки == 1) sheet.Cells[4, i] = "Введите текст/число";
sheet.Cells[5, i] = metka.Наименование;
if (metka.КодВидаМетки == 2)
{
sheet.Cells[4, i] = "Введите таблицу";
string[] cols = metka.ЗаголовкиКолонок.Split('/');
int j = i;
isEstTable= true;
foreach (string s in cols)
{
sheet.Cells[6, j] = s;
j++;
}
Microsoft.Office.Interop.Excel.Range rng2 = sheet.Range[sheet.Cells[4, i],
sheet.Cells[4, j-1]];
rng2.Merge();
rng2 = sheet.Range[sheet.Cells[5, i], sheet.Cells[5, j-1]];
rng2.Merge();
i += j-i-1;
}
if (metka.КодВидаМетки == 2) sheet.Columns[i].ColumnWidth = 45;
if (metka.КодВидаМетки == 1) sheet.Columns[i].ColumnWidth = 25;
}
//email
sheet.Cells[4, i + 1] = "Введите здесь адрес электронной почты получателя, если
документ необходимо отправить по почте";
sheet.Cells[4, i + 2] = "Введите тему письма";
sheet.Cells[4, i + 3] = "Введите текст письма";
sheet.Cells[5, i + 1] = "EMAIL";
sheet.Cells[5, i + 2] = "Тема письма";
sheet.Cells[5, i + 3] = "Текст письма";
Microsoft.Office.Interop.Excel.Range rng1 = sheet.Range[sheet.Cells[5, i + 1],
sheet.Cells[5, i + 3]];
rng1.Interior.ColorIndex = 44;
112
sheet.Columns[i + 1].ColumnWidth = 30;
sheet.Columns[i + 2].ColumnWidth = 30;
sheet.Columns[i + 3].ColumnWidth = 30;
rng1 = sheet.Range[sheet.Cells[4, 1], sheet.Cells[4, i + 3]];
rng1.Interior.ColorIndex = 15;
rng1.Font.Size = 10;
rng1.Font.Italic = true;
rng1 = sheet.Range[sheet.Cells[5, 1], sheet.Cells[6, i]];
rng1.Interior.ColorIndex = 36;
if (!isEstTable)
{
//скрываем 6-ю строку, если нет таблиц в документе
rng1 = sheet.Range[sheet.Cells[6, 1], sheet.Cells[6, i + 3]];
rng1.EntireRow.Hidden = true;
}
rng1 = sheet.Range[sheet.Cells[1, 3], sheet.Cells[1, i + 3]];
rng1.Merge();
rng1 = sheet.Range[sheet.Cells[2, 3], sheet.Cells[2, i + 3]];
rng1.Merge();
sheet.UsedRange.WrapText = true;
sheet.UsedRange.EntireRow.AutoFit();
ap.Visible = true;
}
private void button7_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "*.xlsx|*.xlsx";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
textBox3.Text = openFileDialog1.FileName;
}
}
private void button6_Click(object sender, EventArgs e)
{
if (sh == null) return;
BDDataSet.МеткиDataTable m =
меткиTableAdapter.GetDataByКодШаблона(sh.КодШаблона);
string filename = Path.GetTempFileName();
filename = Path.ChangeExtension(filename, (sh.КодТипа == 1 ? ".docx" :
".xlsx"));
using (Stream file = File.OpenWrite(filename))
{
file.Write(sh.Шаблон, 0, sh.Шаблон.Length);
113
file.Flush();
file.Close();
}
string path = "";
if (sh.КодТипа == 1)
path= FillWordDocPacket(filename, textBox3.Text);
if (sh.КодТипа == 2)
path=FillExcelPacket(filename, textBox3.Text);
Process.Start(path);
}
private string FillExcelPacket(string filename, string filenameData)
{
Microsoft.Office.Interop.Excel.Application apData = new
Microsoft.Office.Interop.Excel.Application();
apData.Visible = false;
Microsoft.Office.Interop.Excel.Workbook bookData = null;
Microsoft.Office.Interop.Excel.Workbooks databook = apData.Workbooks;
apData.Workbooks.Open(filenameData,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
bookData = databook[1];
//ноывй апликейшен для документов
Microsoft.Office.Interop.Excel.Application ap = new
Microsoft.Office.Interop.Excel.Application();
ap.Visible = false;
Microsoft.Office.Interop.Excel.Worksheet sheetData = bookData.Worksheets[1];
//создаем папку
string nameFold = System.Windows.Forms.Application.StartupPath +
@"\документы\" + sh.Выражение1 + "_" + DateTime.Now.ToShortDateString().Replace(".", "-");
DirectoryInfo d;
if (!Directory.Exists(nameFold))
d = Directory.CreateDirectory(nameFold);
else
{
nameFold = System.Windows.Forms.Application.StartupPath + @"\документы\"
+ sh.Выражение1 + "_" + DateTime.Now.ToShortDateString().Replace(".", "-") + "-" +
DateTime.Now.ToShortTimeString().Replace(":", "-");
d = Directory.CreateDirectory(nameFold);
}
114
for (int j = 7; j <= sheetData.UsedRange.Rows.Count - 1; j++)//строки
{
if (sheetData.Cells[j, 1].value2 == null) continue; //нет порядковго номера
документа
string numberDoc =Convert.ToString( sheetData.Cells[j, 1].Value2);
//////////////новый документ
Microsoft.Office.Interop.Excel.Workbook book = null;
Microsoft.Office.Interop.Excel.Workbooks excelappworkbooks = ap.Workbooks;
ap.Workbooks.Open(filename,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing, Type.Missing, Type.Missing,
Type.Missing, Type.Missing);
book = excelappworkbooks[1];
Microsoft.Office.Interop.Excel.Worksheet sheet = book.Worksheets[1];
//////////////
for (int i = 2; i <= sheetData.UsedRange.Columns.Count - 3; i++)//колонки
{
string nameCol = sheetData.Cells[5, i].Value2 == null ? "": Convert.ToString(
sheetData.Cells[5, i].Value2);
if (nameCol == "") continue;
DataRow[] dr = bDDataSet1.Метки.Select("КодШаблона=" + sh.КодШаблона
+ " and Наименование='" + nameCol+"'");
if (dr == null || dr.Length == 0) continue;
BDDataSet.МеткиRow metka = ((BDDataSet.МеткиRow)dr[0]);
int vidMetka = metka.КодВидаМетки;
//ищем нужную метку
foreach (Microsoft.Office.Interop.Excel.Name b in ap.Names)
{
if (b.Name.Equals(nameCol))
{
//тест или число
if (vidMetka == 1)
{
b.RefersToRange.Value2 = sheetData.Cells[j, i].Value2 == null ? "" :
Convert.ToString(sheetData.Cells[j, i].Value2);
}
//текущая дата
if (vidMetka == 3) b.RefersToRange.Value2 =
DateTime.Now.ToShortDateString();
//текущее время
if (vidMetka == 4) b.RefersToRange.Value2 =
DateTime.Now.ToShortTimeString();
if (vidMetka == 2)
{
///вставляем таблицу
115
string[] s= metka.ЗаголовкиКолонок.Split('/');
int row = b.RefersToRange.Row;
int col = b.RefersToRange.Column;
int rowsCount =0;
int colCount = s.Length;
for (int k=j+1;k<=sheetData.UsedRange.Rows.Count-1;k++)
{
if (sheetData.Cells[k,1].Value2!=null)
{
rowsCount =( k - j);
break;
}
}
if (rowsCount == 0) rowsCount = sheetData.UsedRange.Rows.Count -
j+1;
////заголовки колонок
for (int c = 0; c <= colCount - 1;c++)
{
Microsoft.Office.Interop.Excel.Range rng =
(Microsoft.Office.Interop.Excel.Range)sheet.Cells[row, col+ c];
rng.Value2 = s[c];
rng.Borders[XlBordersIndex.xlInsideVertical].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
rng.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
rng.Borders[XlBordersIndex.xlEdgeRight].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
rng.Borders[XlBordersIndex.xlEdgeLeft].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
}
////строки таблицы
for (int r = 0; r <= rowsCount - 1; r++)
{
//вставляем строку, так как под меткой таблицы ниже могут быть
данные и большая таблица может их перетересть
Microsoft.Office.Interop.Excel.Range Line =
(Microsoft.Office.Interop.Excel.Range)sheet.Rows[row + 1 + r];
Line.Insert();
for (int m = 0; m <= colCount - 1; m++)
{
Microsoft.Office.Interop.Excel.Range rng =
(Microsoft.Office.Interop.Excel.Range)sheet.Cells[row + r + 1, m + col];
rng.Value2 = sheetData.Cells[j + r, i + m].Value2==null? "":
Convert.ToString( sheetData.Cells[j+r,i+m].Value2 );
rng.Borders[XlBordersIndex.xlInsideVertical].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
116
rng.Borders[XlBordersIndex.xlInsideHorizontal].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
rng.Borders[XlBordersIndex.xlEdgeRight].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
rng.Borders[XlBordersIndex.xlEdgeLeft].LineStyle =
Microsoft.Office.Interop.Excel.XlLineStyle.xlDot;
}
}
}
}
}
}
//колонтитулы
sheet.PageSetup.CenterFooter = sheetData.Cells[2, 3].value2 == null ? "" :
sheetData.Cells[2, 3].value2; ;
sheet.PageSetup.CenterHeader = sheetData.Cells[1, 3].value2==null? "":
sheetData.Cells[1, 3].value2; ;
//сохраняем документ
book.SaveAs(d.FullName + @"\" + numberDoc + ".xlsx");
book.Close();
if (checkBox1.Checked && sheetData.Cells[j,
sheetData.UsedRange.Columns.Count-2].Value2 != null)
{
string email = sheetData.Cells[j, sheetData.UsedRange.Columns.Count -
2].Value2 == null ? "" : Convert.ToString(sheetData.Cells[j, sheetData.UsedRange.Columns.Count -
2].Value2);
string tema = sheetData.Cells[j, sheetData.UsedRange.Columns.Count -
1].Value2 == null ? "" : Convert.ToString(sheetData.Cells[j, sheetData.UsedRange.Columns.Count -
1].Value2);
string text = sheetData.Cells[j, sheetData.UsedRange.Columns.Count ].Value2
== null ? "" : Convert.ToString(sheetData.Cells[j, sheetData.UsedRange.Columns.Count ].Value2);
ClassEmail.SendMail("smtp.mail.ru", "test-diplom-2017@mail.ru", "test2017",
email, tema, text, d.FullName + @"\" + numberDoc + ".xlsx");
}
}
ap.Quit();
apData.Quit();
return d.FullName;
}
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
117
if (comboBox1.SelectedItem == null)
{ return; }
// получаем выбранный шаблон
sh =
(BDDataSet.ШаблонСтипомRow)((DataRowView)comboBox1.SelectedItem).Row;// ;
comboBox1.SelectedItem;
if (sh == null) return;
tableLayoutPanel1.Controls.Clear();
label2.Visible = true;
label3.Visible = true;
label4.Visible = true;
label5.Visible = true;
button2.Visible = true;
button4.Visible = true;
button3.Visible = true;
textBox1.Visible = true;
textBox2.Visible = true;
//получаем его метки
BDDataSet.МеткиDataTable m =
меткиTableAdapter.GetDataByКодШаблона(sh.КодШаблона);
if (m != null && m.Rows.Count > 0)
{
tableLayoutPanel1.RowCount = m.Count;
dict = new Dictionary<BDDataSet.МеткиRow, Control>();
int i = 0;
foreach (BDDataSet.МеткиRow metka in m)
{
//текст или число
if (metka.КодВидаМетки == 1)
{
System.Windows.Forms.Label lab = new System.Windows.Forms.Label();
lab.Text = metka.Наименование;
System.Windows.Forms.TextBox text = new
System.Windows.Forms.TextBox();
text.Name = "m" + metka.КодМетки;
text.Tag = metka;
text.Width = 350;
tableLayoutPanel1.Controls.Add(lab);
tableLayoutPanel1.Controls.Add(text);
dict.Add(metka, text);
i++;
}
///Тип метки -таблица
if (metka.КодВидаМетки == 2)
{
System.Windows.Forms.Label lab = new System.Windows.Forms.Label();
118
lab.Text = metka.Наименование;
DataGrid dgv = new DataGrid();
System.Data.DataTable dt = new System.Data.DataTable();
string[] ss = metka.ЗаголовкиКолонок.Split('/');
if (ss != null && ss.Count() > 0)
{
foreach (string s in ss)
{
dt.Columns.Add(s);
}
}
dgv.Width = 350;
dgv.Height = 250;
dict.Add(metka, dgv);
dgv.DataSource = dt;
tableLayoutPanel1.Controls.Add(lab);
tableLayoutPanel1.Controls.Add(dgv);
i++;
}
//ти метки - текущая дата или время
if (metka.КодВидаМетки == 3 || metka.КодВидаМетки == 4)
{
dictDatetime.Add(metka);
}
}
}
}
private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
}
}
}

Смотрите также:

"Автоматизация обработки заявок ООО "Проектно-Строительная Компания"
"Автоматизация процесса аттестации персонала для ООО "Нэт Бай Нэт Холдинг"
"Анализ интернет-активности конкурентов ( на примере конкурентов "Газпром нефть")
"Бухгалтерский учёт и аудит расчётов с подотчётними лицами в организации на примере ООО "ЛОЦ 10""
«Психологическое сопровождение персонала в организации на примере ООО «Крокус»
Cовершенствование деловой оценки персонала в организации (на примере ООО "Даймонд кейтеринг развитие")
IPO - инструмент финансирования деятельности организации. На примере ПАО «Нефтяная компания «Лукойл»
PR как средство продвижения организации (на примере ПАО "Тамбовский завод "Комсомолец им. Н.С. Артемова")
PR-коммуникации в сфере общественного питания (на примере кафе-кондитерской «Cream Cheese»)
SMM как средство повышения эффективности работы учреждений социокультурной сферы (на примере Малого театра)