private void CreatePrintFile_Click(object sender, RoutedEventArgs e) { if (!ValidPrintForm()) { return; } SendAlbum album; try { lErrors3.Document.Blocks.Clear(); album = MyFunctions.GetSendPeoples(tbPathFolderPrint1.Text); } catch (BadFormatException ex) { lErrors3.Document.Blocks.Add(new Paragraph(new Run(ex.Error))); return; } catch (UnknownColumnException ex) { lErrors3.Document.Blocks.Add(new Paragraph(new Run("Найден неизвестный столбец"))); return; } catch (Exception ex) { lErrors3.Document.Blocks.Add(new Paragraph(new Run("Не удалось прочесть файл. Возможно не хватает некоторых полей. " + ex.ToString()))); return; } try { lErrors3.Document.Blocks.Clear(); CreatePrintFiles(album, tbPathFolderPrint2.Text, cbFormat.SelectedIndex); lErrors3.Document.Blocks.Add(new Paragraph(new Run("Файл сформирован."))); } catch (BadFormatSafeException ex) { lErrors3.Document.Blocks.Add(new Paragraph(new Run("Невозможно сохранить. Возможно файл открыт или неправельно выбран формат Excel."))); } catch (Exception ex) { lErrors3.Document.Blocks.Add(new Paragraph(new Run("Произошла ошибка при создании файла. " + ex.ToString()))); } }
bool ValidForm() { lErrors.Content = ""; if (tbPahtFolder.Text.Length == 0) { lErrors.Content = "Не выбран файл для сохранения."; return(false); } if (cbAlbum.SelectedIndex == -1) { lErrors.Content = "Не выбран альбом."; return(false); } try { string[] splitString = tbDataFrom.Text.Split(new Char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (splitString.Length == 3) { TimeFrom = new DateTime(Convert.ToInt32(splitString[2]), Convert.ToInt32(splitString[1]), Convert.ToInt32(splitString[0])); } else { throw new Exception(); } } catch { lErrors.Content = "Не правильно введена дата, с которой начинается поиск. Формат dd.mm.yyyy"; return(false); } try { string[] splitString = tbDataTo.Text.Split(new Char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (splitString.Length == 3) { TimeTo = new DateTime(Convert.ToInt32(splitString[2]), Convert.ToInt32(splitString[1]), Convert.ToInt32(splitString[0]), 23, 59, 59); } else { throw new Exception(); } } catch { lErrors.Content = "Не правильно введена дата, до которой идёт поиск. Формат dd.mm.yyyy"; return(false); } if (TimeFrom > TimeTo) { lErrors.Content = "Дата, до которой идёт поиск, должна быть больше даты начала поиска."; return(false); } if (cbAlbum.SelectedIndex != cbAlbum.Items.Count - 1 && AllAlbums[cbAlbum.SelectedIndex].Size == 0) { lErrors.Content = "Не возможно сформировать файл. В альбоме нет фотографий."; return(false); } Microsoft.Office.Interop.Excel.Application excel = null; try { excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = false; excel.DisplayAlerts = false; Workbook worKbooK = excel.Workbooks.Add(Type.Missing); if (cbFormat.SelectedIndex == 0 || cbFormat.SelectedIndex == -1) { worKbooK.SaveAs(tbPahtFolder.Text, XlFileFormat.xlExcel3); } else { worKbooK.SaveAs(tbPahtFolder.Text); } worKbooK.Close(); } catch (Exception exc) { lErrors.Content = "Не удаётся создать или пересохранить файл. Выберите другое имя."; return(false); } finally { IntPtr handle = (IntPtr)excel.Hwnd; excel.Quit(); MyFunctions.TerminateProcess(handle, 1); } return(true); }
private void bCreatFile_Click(object sender, RoutedEventArgs e) { if (ValidForm() == false) { return; } AllCountPhoto = CurrentCountPhoto = 0; List <string> NamesAlbums = new List <string>(); peoples = new List <List <People> >(); AllNamePhoto = new List <List <string> >(); pbProgress.Value = 0; Dispatcher.Invoke(updatePbDelegate, System.Windows.Threading.DispatcherPriority.Background, new object[] { System.Windows.Controls.ProgressBar.ValueProperty, (double)0 }); try { if (cbAlbum.SelectedIndex == cbAlbum.Items.Count - 1) { for (int i = 0; i < AllAlbums.Count; i++) { AllCountPhoto = AllCountPhoto + (int)AllAlbums[i].Size; } for (int i = 0; i < AllAlbums.Count; i++) { if (AllAlbums[i].Size != 0) { NamesAlbums.Add(AllAlbums[i].Title); peoples.Add(GetPeopleFromAlbum(i, api)); } } } else { AllCountPhoto = (long)AllAlbums[cbAlbum.SelectedIndex].Size; NamesAlbums.Add(AllAlbums[cbAlbum.SelectedIndex].Title); peoples.Add(GetPeopleFromAlbum(cbAlbum.SelectedIndex, api)); } } catch (OutOfBorderPhotoException) { lErrors.Content = "Выход за границу массива фотографий. Критическая ошибка."; return; } catch (OutOfBorderCommentsException) { lErrors.Content = "Выход за границу массива комментариев. Критическая ошибка."; return; } catch (ErrorFindPhotoException exc) { lErrors.Content = "Не удалось получить все фотографии из альбома " + exc.TitleAlbum + ". Возможно отсутствует подключение к интернету."; return; } catch (ErrorFindCommentsException exc) { lErrors.Content = "Не удалось получить коментарии к фотографии № " + exc.NumberPhoto + " из альбома " + exc.TitleAlbum + ". Возможно отсутствует подключение к интернету."; return; } catch (ErrorFindNameUserException exp) { lErrors.Content = "Не удалось получить имена пользователей в альбоме " + exp.TitleAlbum + " . Возможно отсутствует подключение к интернету."; return; } catch (Exception) { lErrors.Content = "Критическая ошибка."; return; } try { if (cbUseColColum.IsChecked.Value) { MyFunctions.WriteExcelFileWithCollum(peoples, NamesAlbums, cbExeptEmptyPhoto.IsChecked.Value, AllNamePhoto, cbFormat.SelectedIndex, tbPahtFolder.Text); } else { MyFunctions.WriteExcelFile(peoples, NamesAlbums, cbExeptEmptyPhoto.IsChecked.Value, AllNamePhoto, cbFormat.SelectedIndex, tbPahtFolder.Text); } } catch (NotCommentException) { lErrors.Content = "Файл не был создан, так как не нашлось комментариев для записи."; return; } catch (Exception) { lErrors.Content = "Критическая ошибка при сохранении файла."; return; } lErrors.Content = "Файл сформирован."; }
public static SendAlbum GetSendPeoples(string FileName) { SendAlbum album = new SendAlbum(); int line = 1; int collCount = 4; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); Workbook worKbooK = null; excel.Visible = false; excel.DisplayAlerts = false; try { worKbooK = excel.Workbooks.Open(FileName); Worksheet worKsheeT = (Worksheet)worKbooK.ActiveSheet; line = 1; album.Name = (string)(worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value; album.Name = (album.Name.Split('.').Length == 1) ? album.Name : album.Name.Split('.')[1]; line = 2; while (true) { if (Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "Сумма к оплате") { break; } else if (Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) != null && Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value) != "") { album.Photos.Add(Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value)); } collCount++; } line = 4; while (true) { if (Convert.ToString((worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value) == "" || Convert.ToString((worKsheeT.Cells[line, 1] as Microsoft.Office.Interop.Excel.Range).Value) == null) { break; } album.Peoples.Add(new SendPeople()); album.Peoples[album.Peoples.Count - 1].Name = (string)(worKsheeT.Cells[line, 2] as Microsoft.Office.Interop.Excel.Range).Value; album.Peoples[album.Peoples.Count - 1].Id = Convert.ToInt64((worKsheeT.Cells[line, 3] as Microsoft.Office.Interop.Excel.Range).Value); collCount = 4; SendProduct buffItem = new SendProduct(); bool breakwhile = true; while (breakwhile) { if (Convert.ToString((worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "" || Convert.ToString((worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == null) { if (Convert.ToString((worKsheeT.Cells[2, collCount] as Microsoft.Office.Interop.Excel.Range).Value) == "Сумма к оплате") { album.Peoples[album.Peoples.Count - 1].AllCost = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value); } break; } switch ((string)(worKsheeT.Cells[3, collCount] as Microsoft.Office.Interop.Excel.Range).Value) { case "Комментарии": buffItem.Name = Convert.ToString((worKsheeT.Cells[2, collCount] as Microsoft.Office.Interop.Excel.Range).Value); break; case "Размерность": album.isUseSize = true; buffItem.Size = Convert.ToString((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value); break; case "Кол-во": buffItem.Count = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value); break; case "Цена": buffItem.Cost = Convert.ToDouble((worKsheeT.Cells[line, collCount] as Microsoft.Office.Interop.Excel.Range).Value); if (buffItem != null && buffItem.Count != 0 && buffItem.Cost != 0) { album.Peoples[album.Peoples.Count - 1].Product.Add(buffItem); } if (buffItem != null && buffItem.Count != 0 && buffItem.Cost == 0) { throw new BadFormatException("Поле Цена незаполнено"); } buffItem = new SendProduct(); break; default: throw new UnknownColumnException(); } collCount++; } line++; } for (int i = 0; i < album.Peoples.Count; i++) { if (album.Peoples[i].Product.Count == 0) { album.Peoples.RemoveAt(i); i = i - 1; } } } catch (Exception ex) { throw ex; } finally { IntPtr handle = (IntPtr)excel.Hwnd; worKbooK.Close(); excel.Quit(); MyFunctions.TerminateProcess(handle, 1); } return(album); }
private void bResiveMessage_Click(object sender, RoutedEventArgs e) { if (!ValidForm2()) { return; } SendAlbum album; //Формирование списка людей try { lErrors2.Document.Blocks.Clear(); album = MyFunctions.GetSendPeoples(tbPathFolder2.Text); } catch (BadFormatException ex) { lErrors2.Document.Blocks.Add(new Paragraph(new Run(ex.Error))); return; } catch (UnknownColumnException ex) { lErrors2.Document.Blocks.Add(new Paragraph(new Run("Найден неизвестный столбец"))); return; } catch (Exception ex) { lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось прочесть файл. Возможно не хватает некоторых полей."))); return; } //Авторатизация в vk var api2 = new VkApi(); if (!api2.IsAuthorized) { try { api2.Authorize(new ApiAuthParams { ApplicationId = 5539924, //Login = ULogin, //Login = ALogin, //Password = UserPassword, //Password = AntonPassword, AccessToken = "c2d23fe54097f46ea81f8103efd840bc5ca545408c14ee8873c9ee83711d123ca2d5a049f57b774028dfd", Settings = Settings.All }); } catch (Exception ex) { lErrors2.Document.Blocks.Clear(); lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось авторитизироваться в VK. Возможно нет подключения к интеренту. " + ex.ToString()))); //lErrors2.Content = "Не удалось авторитизироваться в VK. Возможно нет подключения к интеренту."; return; } } //lErrors2.Content = ""; //Формирование и отправка сообщений for (int i = 0; i < album.Peoples.Count; i++) { string Message = new TextRange(rtbTextArea.Document.ContentStart, rtbTextArea.Document.ContentEnd).Text; Message = Message.Replace("{имя}", album.Peoples[i].Name); if (rbChouse1.IsChecked == true) { Message = Message.Replace("{стоимость}", album.Peoples[i].AllCost.ToString()); Message = Message.Replace("{альбом}", album.Name); string listProduct = ""; for (int j = 0; j < album.Peoples[i].Product.Count; j++) { listProduct = listProduct + (j + 1) + ". " + album.Peoples[i].Product[j].Name + ((album.Peoples[i].Product[j].Size == "") ? "" : " " + album.Peoples[i].Product[j].Size + " ") + ": " + album.Peoples[i].Product[j].Count + " шт * " + album.Peoples[i].Product[j].Cost + " руб = " + album.Peoples[i].Product[j].Count * album.Peoples[i].Product[j].Cost + " руб.\n"; } Message = Message.Replace("{список}", listProduct); } long? captcha_sid = null; string captcha_key = null; Random prob1 = new Random(); for (int j = 0; j < 10; j++) { try { api2.Messages.Send(new MessagesSendParams { UserId = album.Peoples[i].Id, Message = Message, CaptchaSid = captcha_sid, CaptchaKey = captcha_key, RandomId = prob1.Next() }); break; } catch (CaptchaNeededException ex) { CaptchaForm prob = new CaptchaForm(ex.Img, "Сообщение № " + i); prob.ShowDialog(); captcha_sid = ex.Sid; captcha_key = prob.CaptchaKey; if (j == 9) { throw new Exception(); } } catch (Exception exc) { lErrors2.Document.Blocks.Add(new Paragraph(new Run("Не удалось отправить сообщение покупателю " + album.Peoples[i].Name + "."))); if (exc.Message == "Can't send messages for users without permission") { lErrors2.Document.Blocks.Add(new Paragraph(new Run("У пользователя запрещены сообщения от группы."))); } lErrors2.Document.Blocks.Add(new Paragraph(new Run(exc.ToString()))); //lErrors2.Content = lErrors2.Content + "Не удалось отправить сообщение покупателю " + peoples[i].Name + ". " + exc.ToString(); break; } } } if (new TextRange(lErrors2.Document.ContentStart, lErrors2.Document.ContentEnd).Text == "") { lErrors2.Document.Blocks.Clear(); lErrors2.Document.Blocks.Add(new Paragraph(new Run("Сообщения отправлены."))); //lErrors2.Content = "Сообщения отправлены."; } }
private void CreatePrintFiles(SendAlbum album, String NameFile, int Format) { int line = 1; Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); excel.Visible = false; excel.DisplayAlerts = false; Workbook worKbooK = excel.Workbooks.Add(Type.Missing); Worksheet worKsheeT = (Worksheet)worKbooK.ActiveSheet; worKsheeT.Name = "SoapOperaPrint"; try { line = 1; worKsheeT.Cells[line, 1] = album.Name; line = 2; worKsheeT.Cells[line, 1] = "№"; worKsheeT.Cells[line, 2] = "Участник"; if (album.isUseSize) { for (int i = 3; i < album.Photos.Count * 2 + 3; i = i + 2) { worKsheeT.Cells[line, i] = album.Photos[(i - 3) / 2]; worKsheeT.Cells[line, i].Orientation = 90; } } else { for (int i = 3; i < album.Photos.Count + 3; i++) { worKsheeT.Cells[line, i] = album.Photos[i - 3]; worKsheeT.Cells[line, i].Orientation = 90; } } line = 3; for (int i = 0; i < album.Peoples.Count; i++) { worKsheeT.Cells[line, 1] = (i + 1); worKsheeT.Cells[line, 2] = album.Peoples[i].Name; for (int j = 0; j < album.Peoples[i].Product.Count; j++) { for (int k = 0; k < album.Photos.Count; k++) { if (album.Peoples[i].Product[j].Name == album.Photos[k]) { if (album.isUseSize) { worKsheeT.Cells[line, 3 + k * 2] = album.Peoples[i].Product[j].Size; worKsheeT.Cells[line, 3 + k * 2 + 1] = album.Peoples[i].Product[j].Count; } else { worKsheeT.Cells[line, 3 + k] = album.Peoples[i].Product[j].Count; } } } } line++; } int countCollum = 0; if (album.isUseSize) { countCollum = 2 + album.Photos.Count * 2; } else { countCollum = 2 + album.Photos.Count; } Microsoft.Office.Interop.Excel.Borders border = worKsheeT.Range[worKsheeT.Cells[2, 1], worKsheeT.Cells[line - 1, countCollum]].Borders; border.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous; border.Weight = 2d; Microsoft.Office.Interop.Excel.Range usedrange = worKsheeT.Range[worKsheeT.Cells[1, 1], worKsheeT.Cells[line - 1, countCollum]]; usedrange.Rows.AutoFit(); usedrange.Columns.AutoFit(); try { if (Format <= 0) { worKbooK.SaveAs(NameFile, XlFileFormat.xlExcel3); } else { worKbooK.SaveAs(NameFile); } } catch (Exception ex2) { throw new BadFormatSafeException(); } worKbooK.Close(); } catch (Exception ex) { throw ex; } finally { IntPtr handle = (IntPtr)excel.Hwnd; excel.Quit(); MyFunctions.TerminateProcess(handle, 1); } }