//ページIDコンボをTSVからセット private void set_pageID_combo_from_tsv() { //デリゲートインスタンス _write_log __write_log = write_log; _set_projectID_combo __set_projectID_combo = set_projectID_combo; _set_pageID_combo __set_pageID_combo = set_pageID_combo; string filepath = getFileNameFromDialog(); if (filepath == "") { return; } string filename_str = Path.GetFileNameWithoutExtension(filepath); List <List <string> > projectData = new List <List <string> > { new List <string> { "T0", filename_str } }; List <List <string> > pageIDData = new List <List <string> >(); pageIDData = getTextLineList(filepath); this.Invoke(__set_projectID_combo, projectData); this.Invoke(__set_pageID_combo, pageIDData); this.Invoke(__write_log, "ページIDコンボが設定完了しました。(" + DateUtil.get_logtime() + ")"); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }
//罫線自動描画 private async Task tableBorderedAsync() { await Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; //最初のワークシートをアクティブにする initCurrentWorksheet(1); main_form.Invoke(__write_log, "罫線描画を開始します...."); int r = getStartRow(); int rx = getEndRow(); int cx = getEndCol(); for (int i = r; i <= rx; i++) { main_form.Invoke(__write_log, i + "行目の処理...."); for (int j = 1; j <= cx; j++) { _currentWs.Cell(i, j).Style.Border.TopBorder = XLBorderStyleValues.Thin; _currentWs.Cell(i, j).Style.Border.BottomBorder = XLBorderStyleValues.Thin; _currentWs.Cell(i, j).Style.Border.LeftBorder = XLBorderStyleValues.Thin; _currentWs.Cell(i, j).Style.Border.RightBorder = XLBorderStyleValues.Thin; _currentWs.Cell(i, j).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); } } main_form.Invoke(__write_log, "罫線描画の処理が完了しました...."); }); }
//作業割り当て表Excelファイル出力 public void save_asignlist_xlsx_as(List <List <string> > data, List <string> categories, string filename) { _write_log __write_log = write_log; try { using (var wb = new ClosedXML.Excel.XLWorkbook()) { var ws = wb.Worksheets.Add("Sheet1"); //行のループ for (int i = 0; i < data.Count; i++) { List <string> row = (List <string>)data[i]; //列のループ for (int j = 0; j < row.Count; j++) { string col = (string)row[j]; ws.Cell(i + 1, j + 1).SetValue <string>(fetch_overflow_characters(col)); ws.Cell(i + 1, j + 1).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, j + 1).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, j + 1).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, j + 1).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, j + 1).Style.Font.FontName = "MS Pゴシック"; ws.Cell(i + 1, j + 1).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); } if (i == 0) { int maxcol = row.Count; for (int z = 0; z < categories.Count; z++) { ws.Cell(i + 1, maxcol + (z + 1)).SetValue <string>((string)categories[z]); ws.Cell(i + 1, maxcol + (z + 1)).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, maxcol + (z + 1)).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, maxcol + (z + 1)).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, maxcol + (z + 1)).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 1, maxcol + (z + 1)).Style.Font.FontName = "MS Pゴシック"; ws.Cell(i + 1, maxcol + (z + 1)).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(i + 1, maxcol + (z + 1)).Style.Alignment.TopToBottom = true; } } } wb.SaveAs(filename); main_form.Invoke(__write_log, "保存に成功しました。(" + filename + ")"); } } catch (Exception ex) { main_form.Invoke(__write_log, "【エラー】" + ex.Message); return; } }
//検査メインページに移動 public void browse_sv_mainpage() { //basic認証の処理 if (_basic_auth_flag.Equals("yes") && _basic_authenicated == false) { _write_log __write_log = write_log; main_form.Invoke(__write_log, "【お知らせ】基本認証オプションが有効化されています。ログインアラートで認証してください。"); _basic_authenicated = true; } _wd.Navigate().GoToUrl(sv_mainpage_url_base + _projectID); }
//ページIDコンボをセット private void set_pageID_combo() { Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; _ldr_activate __ldr_activate = ldr_activate; _task_cancel __task_cancel = task_cancel; _get_workDir __get_workDir = get_workDir; _is_basic_auth_condition __is_basic_auth_condition = is_basic_auth_condition; _get_projectID __get_projectID = get_projectID; _set_pageID_combo __set_pageID_combo = set_pageID_combo; //Basic認証のON時の条件判定 if (!(Boolean)this.Invoke(__is_basic_auth_condition)) { return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } ldr.home(); this.Invoke(__write_log, "LibraPlusにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string cr = (string)this.Invoke(__get_projectID); ldr.projectID = cr; this.Invoke(__write_log, "進捗管理画面ページにアクセスしています。(" + DateUtil.get_logtime() + ")"); ldr.init_status_page(); List <List <string> > data = ldr.get_page_list_data_from_status_page(); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } this.Invoke(__set_pageID_combo, data); this.Invoke(__write_log, "ページIDコンボが設定完了しました。(" + DateUtil.get_logtime() + ")"); ldr.logout(); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//ページのスクリーンショットの一覧取得 private void do_pageIDs_screenshot() { Task.Run(() => { //デリゲートインスタンス _get_workDir __get_workDir = get_workDir; _get_projectID_row __get_projectID_row = get_projectID_row; _get_pageID_rows __get_page_rows = get_pageID_rows; _ldr_activate __ldr_activate = ldr_activate; _write_log __write_log = write_log; _task_cancel_tsv __task_cancel_tsv = task_cancel_tsv; if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } this.Invoke(__write_log, "処理を開始します。(" + DateUtil.get_logtime() + ")"); //保存先ディレクトリ生成 string project_dir = (string)this.Invoke(__get_projectID_row); project_dir = project_dir.Replace("/", ""); string save_path = (string)this.Invoke(__get_workDir) + project_dir + @"\"; if (!Directory.Exists(save_path)) { Directory.CreateDirectory(save_path); } List <List <string> > page_rows = (List <List <string> >) this.Invoke(__get_page_rows); foreach (var page_row in page_rows) { string pageID = page_row[0]; string pageURL = page_row[1]; this.Invoke(__write_log, pageID + " を処理しています。(" + DateUtil.get_logtime() + ")"); ldr.wd.Navigate().GoToUrl(pageURL); DateUtil.app_sleep(shortWait); ldr.fullpage_screenshot_as(save_path + pageID + "." + "png"); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel_tsv)) { return; } } this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//環境設定パラメータチェック private Boolean checkSettings() { //デリゲートインスタンス _write_log __write_log = write_log; Boolean flag = true; StringBuilder sb = new StringBuilder(); string err_txt = ""; if (uid == "") { flag = false; sb.Append("・ユーザIDが未設定です。\r\n"); } if (pswd == "") { flag = false; sb.Append("・パスワードが未設定です。\r\n"); } if (headless == "") { flag = false; sb.Append("・ヘッドレス起動の有無効が未設定です。\r\n"); } if (systemWait < 60) { flag = false; sb.Append("・システム待時間が60秒未満です。\r\n"); } if (shortWait < 3) { flag = false; sb.Append("・待時間【小】が3秒未満です。\r\n"); } if (midWait < 3) { flag = false; sb.Append("・待時間【中】が3秒未満です。\r\n"); } if (longWait < 3) { flag = false; sb.Append("・待時間【大】が3秒未満です。\r\n"); } err_txt = sb.ToString(); if (flag == false) { err_txt = "【エラー】ブラウザドライバの起動要件を満たしません。\r\n考えられる理由は、初回起動である、あるいは環境設定の不具合です。環境設定をご確認ください。\r\n" + err_txt; this.Invoke(__write_log, err_txt); } return(flag); }
//配列をテキストファイルとして書き込み public void write_text_data(List <string> data, string filename) { _write_log __write_log = write_log; Encoding enc = new System.Text.UTF8Encoding(false); StreamWriter sw = new StreamWriter(filename, false, enc); for (int i = 0; i < data.Count; i++) { string row = (string)data[i] + "\r\n"; sw.Write(row); } sw.Close(); main_form.Invoke(__write_log, "保存に成功しました。(" + filename + ")"); }
//作業割り当て表(検査項目詳細版)Excelファイル出力 public void save_asignlist_by_details_xlsx(List <List <string> > pages, List <string> categories, List <List <object> > data, string filename) { _write_log __write_log = write_log; try { using (var wb = new ClosedXML.Excel.XLWorkbook()) { var ws = wb.Worksheets.Add("Sheet1"); //ヘッダーセルの処理 ws.Rows(1, 1).Height = 111.5; ws.Cell(1, 1).SetValue <string>("PID"); //セル結合 ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Merge(false); ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Fill.BackgroundColor = XLColor.FromArgb(0xFFFFCC); ws.Range(ws.Cell(1, 1), ws.Cell(2, 1)).Style.Font.FontName = "MS Pゴシック"; ws.Cell(1, 2).SetValue <string>("URL"); ws.Cell(1, 2).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(1, 2).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(1, 2).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(1, 2).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(1, 2).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); //セル結合 ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Merge(false); ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Fill.BackgroundColor = XLColor.FromArgb(0xFFFFCC); ws.Range(ws.Cell(1, 2), ws.Cell(2, 2)).Style.Font.FontName = "MS Pゴシック"; //列カウンタ int total_cnt = 3; //偶数奇数カウンタ int mod_cnt = 1; //カテゴリのループ for (int hx = 0; hx < categories.Count; hx++) { //結合範囲セル(カテゴリ名のセル)のRangeリスト List <IXLCell> merge_range = new List <IXLCell>(); //検査項目のループ for (int cx = 0; cx < data.Count; cx++) { //最初はカテゴリ名を入力 if (cx == 0) { //セル結合開始セルRangeを追加 merge_range.Add(ws.Column(total_cnt).Cell(1)); ws.Cell(1, total_cnt).SetValue <string>(categories[hx]); ws.Cell(1, total_cnt).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(1, total_cnt).Style.Font.FontName = "MS Pゴシック"; ws.Cell(1, total_cnt).Style.Alignment.TopToBottom = true; //カテゴリの順番偶数・奇数で色分け if ((mod_cnt % 2) == 0) { ws.Cell(1, total_cnt).Style.Fill.BackgroundColor = XLColor.FromArgb(0xCCFF66); } else { ws.Cell(1, total_cnt).Style.Fill.BackgroundColor = XLColor.FromArgb(0xCCECFF); } } //カテゴリ名の入力セルの下の行に項番とコメント入力 var row = data[cx]; string v0 = (string)row[0]; double v1 = double.Parse((string)row[1]); string v2 = (string)row[2]; string v3 = ""; int inx = 0; List <string> gs = (List <string>)row[3]; foreach (string tx in gs) { v3 += tx; if (inx != (gs.Count - 1)) { v3 += "\r\n"; } inx++; } //カレントカテゴリと一致する時だけ入力 if (v0 == categories[hx]) { //数値はValueメソッドで入力 ws.Cell(2, total_cnt).Value = v1; ws.Cell(2, total_cnt).Comment.AddText(v2 + v3); ws.Cell(2, total_cnt).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(2, total_cnt).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(2, total_cnt).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(2, total_cnt).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(2, total_cnt).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell(2, total_cnt).Style.Font.FontName = "MS Pゴシック"; ws.Column(total_cnt).Width = 4; //カテゴリの順番偶数・奇数で色分け if ((mod_cnt % 2) == 0) { ws.Cell(2, total_cnt).Style.Fill.BackgroundColor = XLColor.FromArgb(0xCCFF66); } else { ws.Cell(2, total_cnt).Style.Fill.BackgroundColor = XLColor.FromArgb(0xCCECFF); } total_cnt++; } } //セル結合終了セルRangeを追加 merge_range.Add(ws.Column(total_cnt - 1).Cell(1)); //セル結合 ws.Range(merge_range.First <IXLCell>(), merge_range.Last <IXLCell>()).Merge(false); ws.Range(merge_range.First <IXLCell>(), merge_range.Last <IXLCell>()).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Range(merge_range.First <IXLCell>(), merge_range.Last <IXLCell>()).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Range(merge_range.First <IXLCell>(), merge_range.Last <IXLCell>()).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Range(merge_range.First <IXLCell>(), merge_range.Last <IXLCell>()).Style.Border.RightBorder = XLBorderStyleValues.Thin; mod_cnt++; } //データセルの処理 //行のループ for (int i = 0; i < pages.Count; i++) { List <string> row = (List <string>)pages[i]; //列のループ for (int j = 0; j < row.Count; j++) { string col = (string)row[j]; ws.Cell(i + 3, j + 1).SetValue <string>(col); ws.Cell(i + 3, j + 1).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, j + 1).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, j + 1).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, j + 1).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, j + 1).Style.Font.FontName = "MS Pゴシック"; ws.Cell(i + 3, j + 1).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); } } //残りのセルの罫線処理 for (int i = 0; i < pages.Count; i++) { for (int z = 3; z < total_cnt; z++) { ws.Cell(i + 3, z).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, z).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, z).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, z).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 3, z).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell(i + 3, z).Style.Font.FontName = "MS Pゴシック"; } } wb.SaveAs(filename); main_form.Invoke(__write_log, "保存に成功しました。(" + filename + ")"); } } catch (Exception ex) { main_form.Invoke(__write_log, "【エラー】" + ex.Message); return; } }
//カテゴリ別検査項目一覧表Excelファイル作成 public void save_category_by_details_xlsx(List <List <object> > data, string filename) { _write_log __write_log = write_log; try { using (var wb = new ClosedXML.Excel.XLWorkbook()) { var ws = wb.Worksheets.Add("検査項目一覧"); //ヘッダー行 ws.Cell(1, 1).SetValue <string>("カテゴリ"); ws.Cell(1, 2).SetValue <string>("項番"); ws.Cell(1, 3).SetValue <string>("検査内容"); ws.Cell(1, 4).SetValue <string>("レベル/達成基準/実装番号"); double[] col_wd = { 15, 5, 91.9, 68 }; for (int cx = 1; cx <= 4; cx++) { ws.Cell(1, cx).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(1, cx).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(1, cx).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(1, cx).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(1, cx).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(1, cx).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); ws.Cell(1, cx).Style.Font.Bold = true; ws.Column(cx).Width = col_wd[cx - 1]; } for (int i = 0; i < data.Count; i++) { var row = data[i]; string v0 = (string)row[0]; string v1 = (string)row[1]; string v2 = (string)row[2]; string v3 = ""; List <string> gs = (List <string>)row[3]; int nx = 0; ws.Cell(i + 2, 1).SetValue <string>(v0); ws.Cell(i + 2, 1).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 1).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 1).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 1).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 1).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(i + 2, 2).SetValue <string>(v1); ws.Cell(i + 2, 2).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 2).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 2).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 2).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 2).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(i + 2, 3).SetValue <string>(v2); ws.Cell(i + 2, 3).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 3).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 3).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 3).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 3).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(i + 2, 3).Style.Alignment.WrapText = true; foreach (string tx in gs) { v3 += tx; if (nx != (gs.Count - 1)) { v3 += "\r\n"; } nx++; } ws.Cell(i + 2, 4).SetValue <string>(v3); ws.Cell(i + 2, 4).Style.Border.TopBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 4).Style.Border.BottomBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 4).Style.Border.LeftBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 4).Style.Border.RightBorder = XLBorderStyleValues.Thin; ws.Cell(i + 2, 4).Style.Alignment.SetVertical(XLAlignmentVerticalValues.Top); ws.Cell(i + 2, 4).Style.Alignment.WrapText = true; } wb.SaveAs(filename); main_form.Invoke(__write_log, "保存に成功しました。(" + filename + ")"); } } catch (Exception ex) { main_form.Invoke(__write_log, "【エラー】" + ex.Message); return; } }
//LibraPlusの検査結果一覧表を書式設定する(LibraPlus全検査結果レポートフォーマット) public async Task lpReportFormat() { await Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; //罫線描画(処理完了まで待機) tableBorderedAsync().Wait(); //最初のワークシートをアクティブにする initCurrentWorksheet(1); main_form.Invoke(__write_log, "LibraPlus全検査結果レポートのフォーマット処理を開始します...."); int r = getStartRow(); int rx = getEndRow(); int cx = getEndCol(); int sv_index = 6; for (int i = r; i <= rx; i++) { main_form.Invoke(__write_log, i + "行目の処理...."); for (int j = 1; j <= cx; j++) { //header cell if (i == 1) { _currentWs.Cell(i, j).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center); _currentWs.Cell(i, j).Style.Font.Bold = true; //列幅指定 double[] colWidthArr = { 8.4, 8.4, 13.9, 45.6, 24, 8.4, 6.1, 45.2, 45.2, 45.2, 8.4, 8.4 }; int wcnt = 1; foreach (double wc in colWidthArr) { _currentWs.Column(wcnt).Width = wc; wcnt++; } } //data cell else { string sv_val = (string)_currentWs.Cell(i, sv_index).Value; if (sv_val == "はい") { _currentWs.Cell(i, j).Style.Fill.BackgroundColor = XLColor.FromArgb(0x89FFFF); } else if (sv_val == "はい(注記)") { _currentWs.Cell(i, j).Style.Fill.BackgroundColor = XLColor.FromArgb(0x99FF99); } else if (sv_val == "いいえ") { _currentWs.Cell(i, j).Style.Fill.BackgroundColor = XLColor.FromArgb(0xFFB3B3); } else if (sv_val == "なし") { _currentWs.Cell(i, j).Style.Fill.BackgroundColor = XLColor.FromArgb(0xDDDDDD); } } } } main_form.Invoke(__write_log, "LibraPlus全検査結果レポートのフォーマット処理が完了しました...."); //保存の段取り string new_filename = Path.GetFileNameWithoutExtension(_currentWbPath); string ext = Path.GetExtension(_currentWbPath); string new_savepath = _saveDirPath + new_filename + "_" + DateUtil.fetch_filename_logtime() + ext; //別名保存 _currentWb.SaveAs(new_savepath); main_form.Invoke(__write_log, "処理が完了しました。出力ファイル:" + new_savepath); }); }
//カテゴリ別検査項目一覧表出力 private async Task do_create_category_by_details() { await Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; _ldr_activate __ldr_activate = ldr_activate; _task_cancel __task_cancel = task_cancel; _is_basic_auth_condition __is_basic_auth_condition = is_basic_auth_condition; _is_pageID_selected __is_pageID_selected = is_pageID_selected; _get_workDir __get_workDir = get_workDir; _get_projectID __get_projectID = get_projectID; _get_pageID_rows __get_page_rows = get_pageID_rows; //Basic認証のON時の条件判定 if (!(Boolean)this.Invoke(__is_basic_auth_condition)) { return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } ldr.home(); this.Invoke(__write_log, "LibraPlusにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string projectID = (string)this.Invoke(__get_projectID); ldr.projectID = projectID; //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } this.Invoke(__write_log, "検査メイン画面に移動します。(" + DateUtil.get_logtime() + ")"); ldr.browse_sv_mainpage(); DateUtil.app_sleep(longWait); string site_name = ldr.get_site_name(); this.Invoke(__write_log, "検査カテゴリの取得を開始します。(" + DateUtil.get_logtime() + ")"); List <string> categories = ldr.get_category_list_data_from_svpage(); List <List <object> > rep_data = new List <List <object> >(); foreach (string category in categories) { this.Invoke(__write_log, "検査カテゴリ:" + category + "の処理をしています...(" + DateUtil.get_logtime() + ")"); ldr.select_category(category); DateUtil.app_sleep(midWait); ldr.select_view("検査項目一覧"); DateUtil.app_sleep(midWait); List <List <object> > data = ldr.get_survey_details(); rep_data.AddRange(data); } this.Invoke(__write_log, "Excel書き出しを開始します。(" + DateUtil.get_logtime() + ")"); string save_dir = (string)this.Invoke(__get_workDir); string save_filename = save_dir + projectID + "_" + site_name + " 検査項目一覧.xlsx"; ExcelUtil eu = new ExcelUtil(); eu.save_category_by_details_xlsx(rep_data, save_filename); ldr.logout(); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//サイト一覧テーブルをExcelファイルで出力 private void create_site_info_book() { Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; _ldr_activate __ldr_activate = ldr_activate; _task_cancel __task_cancel = task_cancel; _get_workDir __get_workDir = get_workDir; _is_basic_auth_condition __is_basic_auth_condition = is_basic_auth_condition; //Basic認証のON時の条件判定 if (!(Boolean)this.Invoke(__is_basic_auth_condition)) { return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } ldr.home(); this.Invoke(__write_log, "LibraPlusにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); List <List <string> > data = new List <List <string> >(); //検査終了サイト一覧を取得 this.Invoke(__write_log, "検査中サイト一覧を取得しています。(" + DateUtil.get_logtime() + ")"); ldr.working_site_page(); DateUtil.app_sleep(shortWait); data.AddRange(ldr.get_site_info_data()); this.Invoke(__write_log, "検査終了サイト一覧を取得しています。(" + DateUtil.get_logtime() + ")"); ldr.completed_site_page(); DateUtil.app_sleep(shortWait); data.AddRange(ldr.get_site_info_data()); List <string> head_row = new List <string>() { "ID", "サイト名/備考", "検査機関", "グループ", "検査開始日", "検査終了日", "URL数", "進捗" }; data.Insert(0, head_row); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } string save_dir = (string)this.Invoke(__get_workDir); string save_filename = save_dir + "LibraPlus検査サイト一覧_" + DateUtil.fetch_filename_logtime() + ".xlsx"; ExcelUtil eu = new ExcelUtil(); eu.save_xlsx_as(data, save_filename); ldr.logout(); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//プロジェクトIDコンボをセット private void set_projectID_combo() { Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; _ldr_activate __ldr_activate = ldr_activate; _task_cancel __task_cancel = task_cancel; _is_basic_auth_condition __is_basic_auth_condition = is_basic_auth_condition; _set_projectID_combo __set_projectID_combo = set_projectID_combo; //Basic認証のON時の条件判定 if (!(Boolean)this.Invoke(__is_basic_auth_condition)) { return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } ldr.home(); this.Invoke(__write_log, "LibraPlusにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } List <List <string> > data = new List <List <string> >(); this.Invoke(__write_log, "検査中サイト一覧を取得しています。(" + DateUtil.get_logtime() + ")"); ldr.working_site_page(); DateUtil.app_sleep(shortWait); data.AddRange(ldr.get_site_list()); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } this.Invoke(__write_log, "検査終了サイト一覧を取得しています。(" + DateUtil.get_logtime() + ")"); ldr.completed_site_page(); DateUtil.app_sleep(shortWait); data.AddRange(ldr.get_site_list()); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } this.Invoke(__set_projectID_combo, data); this.Invoke(__write_log, "サイト名コンボが設定完了しました。(" + DateUtil.get_logtime() + ")"); ldr.logout(); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }
//PID+URLのExcelファイル出力 private void do_create_pid_url_list_xlsx() { Task.Run(() => { //デリゲートインスタンス _write_log __write_log = write_log; _ldr_activate __ldr_activate = ldr_activate; _task_cancel __task_cancel = task_cancel; _is_basic_auth_condition __is_basic_auth_condition = is_basic_auth_condition; _is_pageID_selected __is_pageID_selected = is_pageID_selected; _get_workDir __get_workDir = get_workDir; _get_projectID __get_projectID = get_projectID; _get_pageID_rows __get_page_rows = get_pageID_rows; _get_site_name_by_projectIDCombo __get_site_name_by_projectIDCombo = get_site_name_by_projectIDCombo; //Basic認証のON時の条件判定 if (!(Boolean)this.Invoke(__is_basic_auth_condition)) { return; } if (ldr_activated == false) { //Libraドライバ起動しエラーの場合早期退出 if (!(Boolean)this.Invoke(__ldr_activate)) { return; } } ldr.home(); this.Invoke(__write_log, "LibraPlusにログインします。(" + DateUtil.get_logtime() + ")"); ldr.login(); DateUtil.app_sleep(shortWait); string projectID = (string)this.Invoke(__get_projectID); ldr.projectID = projectID; List <List <string> > data = new List <List <string> >(); string site_name = ""; //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } this.Invoke(__write_log, "進捗管理画面ページにアクセスしています。(" + DateUtil.get_logtime() + ")"); ldr.init_status_page(); data = ldr.get_page_list_data_from_status_page(); site_name = (string)this.Invoke(__get_site_name_by_projectIDCombo); //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } //ヘッダー行の処理 List <string> head_row = new List <string>() { "PID", "URL" }; data.Insert(0, head_row); string save_dir = (string)this.Invoke(__get_workDir); string save_filename = save_dir + projectID + "_" + site_name + " URL.xlsx"; //タスクのキャンセル判定 if ((Boolean)this.Invoke(__task_cancel)) { return; } ExcelUtil eu = new ExcelUtil(); eu.save_xlsx_as(data, save_filename); ldr.logout(); this.Invoke(__write_log, "処理が完了しました。(" + DateUtil.get_logtime() + ")"); }); }