private void frmCorrect_Load(object sender, EventArgs e) { this.pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); // フォーム最大値 Utility.WindowsMaxSize(this, this.Width, this.Height); // フォーム最小値 Utility.WindowsMinSize(this, this.Width, this.Height); // キャプション this.Text = "過去勤務報告書データ表示"; // 参照テーブルデータセット読込み adp.Fill(dts.過去勤務票ヘッダ); mAdp.Fill(dts.過去勤務票明細); sAdp.Fill(dts.社員所属); yAdp.Fill(dts.休日); //kAdp.Fill(dts.勤怠記号); //eAdp.Fill(dts.出勤形態); //nAdp.Fill(dts.出勤日数); // グリッドビュー定義 GridviewSet gs = new GridviewSet(); gs.Setting_Shain(dGV); // 編集作業、過去データ表示の判断 // 渡されたヘッダIDの過去データを表示します showPastData(dID, _sYY, _sMM); // tagを初期化 this.Tag = string.Empty; }
/// <summary> /// 社員出勤簿印刷・シート追加一括印刷 /// </summary> private void sReport() { // 休日テーブル読み込み MTYSDataSetTableAdapters.休日TableAdapter adpH = new MTYSDataSetTableAdapters.休日TableAdapter(); adpH.Fill(dts.休日); // 出勤日数テーブル読み込み MTYSDataSetTableAdapters.出勤日数TableAdapter adpS = new MTYSDataSetTableAdapters.出勤日数TableAdapter(); adpS.Fill(dts.出勤日数); //エクセルファイル日付明細開始行 const int S_GYO = 6; string sDate; DateTime eDate; try { //マウスポインタを待機にする this.Cursor = Cursors.WaitCursor; string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory; Excel.Application oXls = new Excel.Application(); // 勤務報告書テンプレートシート Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.sxlsPath, 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)); // 勤務報告書印刷用シート Excel.Workbook oXlsPrintBook = (Excel.Workbook)(oXls.Workbooks.Open(Properties.Settings.Default.wxlsPath, 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)); Excel.Worksheet oxlsOosaka = (Excel.Worksheet)oXlsBook.Sheets[1]; // 大阪製造部書式 Excel.Worksheet oxlsShizuoka = (Excel.Worksheet)oXlsBook.Sheets[2]; // 静岡書式 Excel.Worksheet oxlsHonsha = (Excel.Worksheet)oXlsBook.Sheets[3]; // 本社書式 Excel.Worksheet oxlsPrintSheet = null; // 印刷用ワークシート Excel.Range[] rng = new Microsoft.Office.Interop.Excel.Range[2]; string Category = string.Empty; try { int pCnt = 0; //グリッドを順番に読む for (int i = 0; i < dg1.RowCount; i++) { //チェックがあるものを対象とする if (dg1[0, i].Value.ToString() == "True") { pCnt++; // ページカウント int sRow = i; // グリッド行インデックス取得 // 帳票区分取得 Category = dg1[9, sRow].Value.ToString(); // 印刷用BOOKへシートを追加する if (Category == global.C_HONSHA) // 本社 { oxlsHonsha.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]); } else if (Category == global.C_SHIZUOKA) // 静岡 { oxlsShizuoka.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]); } else if (Category == global.C_OOSAKA) // 大阪 { oxlsOosaka.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt]); } // カレントのシートを設定 oxlsPrintSheet = (Excel.Worksheet)oXlsPrintBook.Sheets[pCnt + 1]; //// 印刷2件目以降はシートを追加する //if (pCnt > 1) //{ // oxlsSheet.Copy(Type.Missing, oXlsPrintBook.Sheets[pCnt - 1]); // oxlsSheet = (Excel.Worksheet)oXlsPrintBook.Sheets[pCnt]; //} // 社員番号 oxlsPrintSheet.Cells[2, 19] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(0, 1); oxlsPrintSheet.Cells[2, 20] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(1, 1); oxlsPrintSheet.Cells[2, 21] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(2, 1); oxlsPrintSheet.Cells[2, 22] = dg1[1, sRow].Value.ToString().PadLeft(ShainLen, '0').Substring(3, 1); // 職級 oxlsPrintSheet.Cells[2, 25] = dg1[6, sRow].Value.ToString(); // 年 oxlsPrintSheet.Cells[2, 11] = string.Format("{0, 2}", int.Parse(txtYear.Text)).Substring(2, 1); oxlsPrintSheet.Cells[2, 12] = string.Format("{0, 2}", int.Parse(txtYear.Text)).Substring(3, 1); // 月 oxlsPrintSheet.Cells[2, 14] = string.Format("{0, 2}", int.Parse(txtMonth.Text)).Substring(0, 1); oxlsPrintSheet.Cells[2, 15] = string.Format("{0, 2}", int.Parse(txtMonth.Text)).Substring(1, 1); // 所属コード oxlsPrintSheet.Cells[3, 3] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(0, 1); oxlsPrintSheet.Cells[3, 4] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(1, 1); oxlsPrintSheet.Cells[3, 5] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(2, 1); oxlsPrintSheet.Cells[3, 6] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(3, 1); oxlsPrintSheet.Cells[3, 7] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(4, 1); oxlsPrintSheet.Cells[3, 8] = dg1[4, sRow].Value.ToString().PadLeft(ShozokuLen, '0').Substring(5, 1); // 所属名 oxlsPrintSheet.Cells[3, 11] = dg1[5, sRow].Value.ToString(); // 氏名 oxlsPrintSheet.Cells[3, 19] = dg1[2, sRow].Value.ToString(); // 出勤すべき日数を取得 var h = dts.出勤日数.Where(a => a.RowState != DataRowState.Deleted && a.RowState != DataRowState.Detached && a.年.ToString() == txtYear.Text && a.月.ToString() == txtMonth.Text); string injiNisu = string.Empty; foreach (var t in h) { if (Category == global.C_HONSHA || Category == global.C_SHIZUOKA) // 本社のとき { injiNisu = t.本社静岡印字用.ToString(); } else if (Category == global.C_OOSAKA) // 大阪製造部のとき { if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_A) // 大阪製造Aのとき { injiNisu = t.大阪A印字用.ToString(); } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_B) // 大阪製造Bのとき { injiNisu = t.大阪B印字用.ToString(); } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_C) // 大阪製造Cのとき { injiNisu = t.大阪C印字用.ToString(); } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_D) // 大阪製造Dのとき { injiNisu = t.大阪D印字用.ToString(); } else { // 大阪製造部のとき injiNisu = t.大阪印字用.ToString(); } } } oxlsPrintSheet.Cells[3, 28] = injiNisu; // 曜日表示 int addRow = 0; for (int iX = global.MAX_MIN; iX <= global.MAX_GYO; iX++) { if (iX < 7) { addRow = iX - 1; } else if (iX < 17) { addRow = iX; } else { addRow = iX + 1; } // 暦補正値は設定ファイルから取得する 2011/03/24 sDate = txtYear.Text + "/" + txtMonth.Text + "/" + iX.ToString(); if (DateTime.TryParse(sDate, out eDate)) { //oxlsPrintSheet.Cells[S_GYO + addRow, 2] = ("日月火水木金土").Substring(int.Parse(eDate.DayOfWeek.ToString("d")), 1); oxlsPrintSheet.Cells[S_GYO + addRow, 2] = eDate.ToString("ddd"); } else { oxlsPrintSheet.Cells[S_GYO + addRow, 1] = string.Empty; } // // 網掛け処理 // rng[0] = (Excel.Range)oxlsPrintSheet.Cells[S_GYO + addRow, 1]; rng[1] = (Excel.Range)oxlsPrintSheet.Cells[S_GYO + addRow, 2]; var s = dts.休日.Where(a => a.RowState != DataRowState.Deleted && a.RowState != DataRowState.Detached && a.年月日 == eDate); foreach (var t in s) { if (Category == global.C_HONSHA && t.本社網掛け == global.flgOn) // 本社のとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (Category == global.C_SHIZUOKA && t.静岡網掛け == global.flgOn) // 静岡のとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (Category == global.C_OOSAKA) // 大阪製造部のとき { if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_A && t.大阪A網掛け == global.flgOn) // 大阪製造Aのとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_B && t.大阪B網掛け == global.flgOn) // 大阪製造Bのとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_C && t.大阪C網掛け == global.flgOn) // 大阪製造Cのとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (dg1[10, sRow].Value.ToString() == global.OOSAKAG_D && t.大阪D網掛け == global.flgOn) // 大阪製造Dのとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } else if (Utility.NulltoStr(dg1[10, sRow].Value) == string.Empty && t.大阪製造部網掛け == global.flgOn) // 大阪製造のとき { oxlsPrintSheet.get_Range(rng[0], rng[1]).Interior.Color = Color.LightGray; } } } } } } //マウスポインタを元に戻す this.Cursor = Cursors.Default; // 印刷用BOOKの1番目のシートは削除する ((Excel.Worksheet)oXlsPrintBook.Sheets[1]).Delete(); //印刷 oXlsPrintBook.PrintOut(); // ウィンドウを非表示にする oXls.Visible = false; //保存処理 oXls.DisplayAlerts = false; //Bookをクローズ oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing); oXlsPrintBook.Close(Type.Missing, Type.Missing, Type.Missing); //Excelを終了 oXls.Quit(); } catch (Exception e) { MessageBox.Show(e.Message, "印刷処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); // ウィンドウを非表示にする oXls.Visible = false; //保存処理 oXls.DisplayAlerts = false; //Bookをクローズ oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing); //Excelを終了 oXls.Quit(); } finally { // COM オブジェクトの参照カウントを解放する System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsHonsha); System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsShizuoka); System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsOosaka); System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsPrintSheet); System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsPrintBook); System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls); //マウスポインタを元に戻す this.Cursor = Cursors.Default; } } catch (Exception e) { MessageBox.Show(e.Message, "印刷処理", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } //マウスポインタを元に戻す this.Cursor = Cursors.Default; }
private Boolean ErrCheck() { if (Utility.NumericCheck(txtYear.Text) == false) { MessageBox.Show("年は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtYear.Focus(); return(false); } if (Utility.NumericCheck(txtMonth.Text) == false) { MessageBox.Show("月は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtMonth.Focus(); return(false); } if (int.Parse(txtMonth.Text) < 1 || int.Parse(txtMonth.Text) > 12) { MessageBox.Show("月が正しくありません", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtMonth.Focus(); return(false); } // 出勤日数マスター登録チェック MTYSDataSetTableAdapters.出勤日数TableAdapter adp = new MTYSDataSetTableAdapters.出勤日数TableAdapter(); adp.Fill(dts.出勤日数); var s = dts.出勤日数.Where(a => a.年 == Utility.StrtoInt(txtYear.Text) && a.月 == Utility.StrtoInt(txtMonth.Text)); if (s.Count() == 0) { MessageBox.Show(txtYear.Text + "年" + txtMonth.Text + "月の出勤日数が登録されていません。" + Environment.NewLine + "「マスターメンテナンス」-「出勤日数マスター保守」で出勤日数を登録してください。", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtYear.Focus(); return(false); } // 休日マスター登録チェック DateTime sDate = DateTime.Today; DateTime eDt = DateTime.Today; DateTime eDate = DateTime.Today; // 1日 DateTime.TryParse(txtYear.Text + "/" + txtMonth.Text + "/01", out sDate); // 月末日 for (int i = 2; i < 32; i++) { if (DateTime.TryParse(txtYear.Text + "/" + txtMonth.Text + "/" + i.ToString(), out eDt)) { eDate = eDt; } else { break; } } MTYSDataSetTableAdapters.休日TableAdapter kadp = new MTYSDataSetTableAdapters.休日TableAdapter(); kadp.Fill(dts.休日); var t = dts.休日.Where(a => a.年月日 >= sDate && a.年月日 <= eDate); if (t.Count() == 0) { MessageBox.Show(txtYear.Text + "年" + txtMonth.Text + "月の休日が登録されていません。" + Environment.NewLine + "「マスターメンテナンス」-「休日設定」で休日と網掛け設定を登録してください。", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtYear.Focus(); return(false); } // 社員番号 if (txtSNo.Text != string.Empty && Utility.NumericCheck(txtSNo.Text) == false) { MessageBox.Show("開始社員番号は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtSNo.Focus(); return(false); } if (txtENo.Text != string.Empty && Utility.NumericCheck(txtENo.Text) == false) { MessageBox.Show("終了社員番号は数字で入力してください", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtENo.Focus(); return(false); } // 2018/10/12 if (txtTMData.Text.Trim() != string.Empty) { if (!System.IO.File.Exists(txtTMData.Text)) { MessageBox.Show("存在しないタイムカード打刻データが指定されています", appName, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtTMData.Focus(); return(false); } } return(true); }