/// <summary> /// F10:Excel出力 /// </summary> private void exportXls() { // SaveFileDialogクラスのインスタンスを作成 SaveFileDialog sfd = new SaveFileDialog(); // ファイル名の指定 sfd.FileName = "得意先別売上管理表_" + DateTime.Now.ToString("yyyy_MM_dd_HH_mm_ss") + ".xlsx"; // デフォルトパス取得(デスクトップ) string Init_dir = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); //はじめに表示されるフォルダを指定する sfd.InitialDirectory = Init_dir; // ファイルフィルタの設定 sfd.Filter = "すべてのファイル(*.*)|*.*"; try { // データ検索用 List <string> lstSearchItem = new List <string>(); // データチェック if (!blnDataCheack()) { return; } //待機状態 Cursor.Current = Cursors.WaitCursor; // 検索するデータをリストに格納 lstSearchItem.Add(txtYmdFrom.Text); lstSearchItem.Add(txtYmdTo.Text); // グループコード(開始)が空の場合 if (labelSet_GroupCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_GroupCdFrom.CodeTxtText); } // グループコード(終了)が空の場合 if (labelSet_GroupCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_GroupCdTo.CodeTxtText); } // 担当者コード(開始)が空の場合 if (labelSet_TantoushaCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_TantoushaCdFrom.CodeTxtText); } // 担当者コード(終了)が空の場合 if (labelSet_TantoushaCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_TantoushaCdTo.CodeTxtText); } // 得意先コード(開始)が空の場合 if (labelSet_TokuisakiCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_TokuisakiCdFrom.CodeTxtText); } // 得意先コード(終了)が空の場合 if (labelSet_TokuisakiCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_TokuisakiCdTo.CodeTxtText); } // 営業所コード(開始)が空の場合 if (labelSet_EigyoshoCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_EigyoshoCdFrom.CodeTxtText); } // 営業所コード(終了)が空の場合 if (labelSet_EigyoshoCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_EigyoshoCdTo.CodeTxtText); } // ビジネス層のインスタンス生成 C0630_TokuisakiUriageArariPrint_B uriagePrint_B = new C0630_TokuisakiUriageArariPrint_B(); // 検索実行 DataTable dtUriage = uriagePrint_B.getUriage(lstSearchItem); // カーソルを戻す this.Cursor = Cursors.Default; // 対象データがある場合 if (dtUriage != null && dtUriage.Rows.Count > 0) { // 並べ替え(グループコード、担当者コード、得意先コード) DataView dvUriage = new DataView(dtUriage); dvUriage.Sort = "グループコード, 担当者コード, 得意先コード"; dtUriage = dvUriage.ToTable(); // ダイアログ表示 if (sfd.ShowDialog() == DialogResult.OK) { //待機状態 Cursor.Current = Cursors.WaitCursor; CreatePdf cpdf = new CreatePdf(); // 出力するヘッダを設定 string[] header = { "グループ名", "担当者名", "コード", "得意先名", "売上額", "粗利額", "粗利率", "指定期間内受注残金額", "指定期間内受注残粗利", "指定期間以降受注残金額", "指定期間以降受注残粗利", "月末売掛金残", "当月入金額", }; // Linqで出力対象の項目をSelect // カラム名は以下のようにつける(カラム名でフォーマットを判断するため) // 金額関係:***kingaku // 単価関係:***tanka // 原価:***genka // 数量:***suryo var outDat = dtUriage.AsEnumerable() .Select(dat => new { groupName = dat["グループ名"], tantoName = dat["担当者名"], tokuiCode = dat["得意先コード"], tokuiName = dat["得意先名"], uriageKingaku = dat["売上額"], arariKingaku = dat["粗利額"], arariritu = dat["粗利率"], getumatuJuchuzanKingaku = dat["月末迄受注残売上"], getumatuJuchuarariKingaku = dat["月末迄受注残粗利"], yokugetuJuchuzankingaku = dat["翌月以降受注残売上"], yokugetuJuchuarariKingaku = dat["翌月以降受注残粗利"], urikakezanKingaku = dat["月末売掛金残"], nyuKingaku = dat["当月入金額"], }).ToList(); // listをDataTableに変換 DataTable dtTokuiArari = cpdf.ConvertToDataTable(outDat); string outFile = sfd.FileName; cpdf.DtToXls(dtTokuiArari, "得意先別売上管理表", outFile, 3, 1, header); this.Cursor = Cursors.Default; // メッセージボックスの処理、Excel作成完了の場合のウィンドウ(OK) BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excelファイルを作成しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION); basemessagebox.ShowDialog(); } } else { // メッセージボックスの処理、項目が空の場合のウィンドウ(OK) BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_INPUT, "対象のデータはありません", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR); basemessagebox.ShowDialog(); //元に戻す Cursor.Current = Cursors.Default; return; } } catch (Exception ex) { this.Cursor = Cursors.Default; // エラーロギング new CommonException(ex); // Excel出力失敗メッセージ BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "Excel出力に失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR); basemessagebox.ShowDialog(); return; } }
/// <summary> /// printReport /// PDFを出力する /// </summary> private void printReport() { // データ検索用 List <string> lstSearchItem = new List <string>(); // データチェック if (!blnDataCheack()) { return; } // 検索するデータをリストに格納 lstSearchItem.Add(txtYmdFrom.Text); lstSearchItem.Add(txtYmdTo.Text); // グループコード(開始)が空の場合 if (labelSet_GroupCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_GroupCdFrom.CodeTxtText); } // グループコード(終了)が空の場合 if (labelSet_GroupCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_GroupCdTo.CodeTxtText); } // 担当者コード(開始)が空の場合 if (labelSet_TantoushaCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_TantoushaCdFrom.CodeTxtText); } // 担当者コード(終了)が空の場合 if (labelSet_TantoushaCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_TantoushaCdTo.CodeTxtText); } // 得意先コード(開始)が空の場合 if (labelSet_TokuisakiCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_TokuisakiCdFrom.CodeTxtText); } // 得意先コード(終了)が空の場合 if (labelSet_TokuisakiCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_TokuisakiCdTo.CodeTxtText); } // 営業所コード(開始)が空の場合 if (labelSet_EigyoshoCdFrom.CodeTxtText.Equals("")) { lstSearchItem.Add("0000"); } else { lstSearchItem.Add(labelSet_EigyoshoCdFrom.CodeTxtText); } // 営業所コード(終了)が空の場合 if (labelSet_EigyoshoCdTo.CodeTxtText.Equals("")) { lstSearchItem.Add("9999"); } else { lstSearchItem.Add(labelSet_EigyoshoCdTo.CodeTxtText); } // ビジネス層のインスタンス生成 C0630_TokuisakiUriageArariPrint_B uriagePrint_B = new C0630_TokuisakiUriageArariPrint_B(); try { // 検索実行 DataTable dtUriage = uriagePrint_B.getUriage(lstSearchItem); // 対象データがある場合 if (dtUriage != null && dtUriage.Rows.Count > 0) { // 並べ替え(グループコード、担当者コード、得意先コード) DataView dvUriage = new DataView(dtUriage); dvUriage.Sort = "グループコード, 担当者コード, 得意先コード"; dtUriage = dvUriage.ToTable(); // 印刷ダイアログ Common.Form.PrintForm pf = new Common.Form.PrintForm(this, "", CommonTeisu.SIZE_A4, CommonTeisu.YOKO); pf.lblBusu.Visible = true; pf.txtBusu.Visible = true; pf.ShowDialog(this); // プレビューの場合 if (this.printFlg == CommonTeisu.ACTION_PREVIEW) { // カーソルを待機状態にする this.Cursor = Cursors.WaitCursor; // PDF作成 String strFile = uriagePrint_B.dbToPdf(dtUriage, lstSearchItem, null, 0); // プレビュー //pf.execPreview(strFile); } // 一括印刷の場合 else if (this.printFlg == CommonTeisu.ACTION_PRINT) { // カーソルを待機状態にする this.Cursor = Cursors.WaitCursor; string s = pf.txtBusu.Text; int num = 0; if (!string.IsNullOrWhiteSpace(s)) { num = int.Parse(s); } // PDF作成 String strFile = uriagePrint_B.dbToPdf(dtUriage, lstSearchItem, pf.printer, num); // 一括印刷 //pf.execPrint(null, strFile, CommonTeisu.SIZE_B4, CommonTeisu.YOKO, true); } // カーソルの状態を元に戻す this.Cursor = Cursors.Default; pf.Dispose(); } else { // メッセージボックスの処理、対象データがない場合のウィンドウ(OK) BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "対象のデータはありません。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_INFOMATION); basemessagebox.ShowDialog(); } } catch (Exception ex) { // エラーロギング new CommonException(ex); // メッセージボックスの処理、PDF作成失敗の場合のウィンドウ(OK) BaseMessageBox basemessagebox = new BaseMessageBox(this, CommonTeisu.TEXT_VIEW, "印刷が失敗しました。", CommonTeisu.BTN_OK, CommonTeisu.DIAG_ERROR); basemessagebox.ShowDialog(); return; } }