コード例 #1
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        ///--------------------------------------------------------------
        /// <summary>
        ///     稼働予定データが登録済みか調べる </summary>
        /// <param name="cPData">
        ///     個人情報クラス</param>
        /// <returns>
        ///     true:登録済み, false:未登録</returns>
        ///--------------------------------------------------------------
        private bool getScheRec(clsPersonalData cPData)
        {
            //var s = db.会員稼働予定.Where(a => a.カード番号 == cPData.cNo && a.年 == cPData.eYear && a.月 == cPData.eMonth);
            //if (s.Count() != 0) return true;
            //else return false;

            var s = db.会員稼働予定.Where(a => a.カード番号 == cPData.cNo && a.年 == cPData.eYear && a.月 == cPData.eMonth);

            if (db.会員稼働予定.Any(a => a.カード番号 == cPData.cNo && a.年 == cPData.eYear && a.月 == cPData.eMonth))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
コード例 #2
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        /// ------------------------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定データ更新 </summary>
        /// <param name="cPData">
        ///     個人情報クラス</param>
        /// <param name="dDay">
        ///     該当月の日数</param>
        /// ------------------------------------------------------------------------------------
        private bool updateData(clsPersonalData cPData, int dDay)
        {
            try
            {
                // 対象データを取得
                会員稼働予定 s = (会員稼働予定)db.会員稼働予定.Single(a => a.カード番号 == cPData.cNo && a.年 == cPData.eYear && a.月 == cPData.eMonth);

                // エンティティセット
                entitySet(s, cPData, dDay);

                // 更新を確定させる
                db.SubmitChanges();

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #3
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        /// ------------------------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定データ新規登録 </summary>
        /// <param name="cPData">
        ///     個人情報クラス</param>
        /// <param name="dDay">
        ///     該当月の日数</param>
        /// ------------------------------------------------------------------------------------
        private bool insertData(clsPersonalData cPData, int dDay)
        {
            try
            {
                // 会員稼働予定テーブルのインスタンスを新規に作成
                会員稼働予定 tbl = new 会員稼働予定();

                // エンティティセット
                entitySet(tbl, cPData, dDay);

                // レコード挿入
                db.会員稼働予定.InsertOnSubmit(tbl);

                // 登録を確定させる
                db.SubmitChanges();

                return(true);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #4
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        /// ------------------------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定データ登録 </summary>
        /// <param name="cPData">
        ///     個人情報クラス</param>
        /// ------------------------------------------------------------------------------------
        private bool saveData(clsPersonalData cPData)
        {
            bool rtn = false;

            try
            {
                //Excel.Range[] rngs = new Microsoft.Office.Interop.Excel.Range[31];
                string lg = string.Empty;

                // 月末日を取得する(翌月1日の1日前)
                DateTime dt = new DateTime(cPData.eYear, cPData.eMonth, 1).AddMonths(1).AddDays(-1);

                // データが登録済みか確認します
                if (!getScheRec(cPData))
                {
                    // 新規登録
                    if (insertData(cPData, dt.Day))
                    {
                        rtn = true;
                    }
                }
                else
                {
                    // 更新
                    if (updateData(cPData, dt.Day))
                    {
                        rtn = true;
                    }
                }

                return(rtn);
            }
            catch (Exception e)
            {
                return(false);
            }
        }
コード例 #5
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        ///------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定テーブル更新メインルーチン </summary>
        /// <param name="sFile">
        ///     予定申告エクセルファイルパス</param>
        ///------------------------------------------------------------------
        private void dataOutput(string sFile, DateTime sDt)
        {
            // Excelテンプレートシート開く
            string sAppPath = System.AppDomain.CurrentDomain.BaseDirectory;

            Excel.Application oXls = new Excel.Application();

            Excel.Workbook oXlsBook = (Excel.Workbook)(oXls.Workbooks.Open(sFile, 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 oxlsSheet = (Excel.Worksheet)oXlsBook.Sheets[1];

            Excel.Range   rng;
            Excel.Range   rngYear;
            Excel.Range   rngMonth;
            Excel.Range[] rngs = new Microsoft.Office.Interop.Excel.Range[31];

            string lg = string.Empty;

            jfgDataClassDataContext db = new jfgDataClassDataContext();

            // 個人データクラス
            clsPersonalData cPData = new clsPersonalData();

            cPData.sDt = sDt;

            try
            {
                // 予定申告書シートよりカード番号取得
                rng        = (Excel.Range)oxlsSheet.Cells[2, 11];
                cPData.cNo = Utility.cNumberCheck(rng.Text.Trim());

                if (cPData.cNo == -1)
                {
                    // ログ文字列作成
                    lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                         "カード番号が正しい数字情報ではありません : 更新から除外されました。";

                    // ログ配列に出力
                    arrayLog(lg);

                    // 2017/11/30 以下、コメント化
                    //// ExcelBookをクローズ
                    //oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                    //// Excel終了
                    //oXls.Quit();

                    // 戻る
                    return;
                }

                // 会員情報よりフリガナを取得
                var s = db.会員情報.Where(a => a.カード番号 == cPData.cNo);
                if (s.Count() == 0)
                {
                    // ログ文字列作成
                    lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                         "カード番号に該当する会員が存在しません [" + cPData.cNo.ToString() + "] : 更新から除外されました。";

                    // ログ配列に出力
                    arrayLog(lg);

                    // 2017/11/30 以下、コメント化
                    //// ExcelBookをクローズ
                    //oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                    //// Excel終了
                    //oXls.Quit();

                    // 戻る
                    return;
                }
                else
                {
                    foreach (var t in s)
                    {
                        cPData.furi = t.フリガナ;
                    }
                }

                // 各月の予定を会員稼働予定テーブルに書き込む
                for (int i = 0; i < 6; i++)
                {
                    // 年を取得
                    rngYear      = (Excel.Range)oxlsSheet.Cells[5, i * 4 + 2];
                    cPData.eYear = cIntCheck(rangeNullToString(rngYear.Text).Trim());

                    if (cPData.eYear == -1)
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             (i + 1).ToString() + "番目の年が正しくありません : 更新から除外されました。";

                        // ログ配列に出力
                        arrayLog(lg);

                        // 次ぎへ
                        continue;
                    }

                    // 月を取得
                    rngMonth      = (Excel.Range)oxlsSheet.Cells[5, i * 4 + 3];
                    cPData.eMonth = cIntCheck(rangeNullToString(rngMonth.Text).Trim());

                    if (cPData.eMonth == -1)
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             (i + 1).ToString() + "番目の月が正しくありません : 更新から除外されました。";

                        // ログ配列に出力
                        arrayLog(lg);

                        // 次ぎへ
                        continue;
                    }

                    // 過去の予定は更新しない
                    int nowYYMM = DateTime.Today.Year * 100 + DateTime.Today.Month;
                    int xlsYYMM = cPData.eYear * 100 + cPData.eMonth;
                    if (xlsYYMM < nowYYMM)
                    {
                        continue;                    // 次へ
                    }
                    // 連絡事項を取得
                    rng         = (Excel.Range)oxlsSheet.Cells[2, 15];
                    cPData.memo = rng.Text.Trim();

                    // 該当列を取得
                    cPData.colidx = i * 4 + 3;

                    // エクセルシートオブジェクトを取得
                    cPData.exl = oxlsSheet;

                    // データ書き込み
                    if (saveData(cPData))
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             cPData.eYear.ToString() + "年" + cPData.eMonth.ToString() + "月の予定が登録されました。";
                    }
                    else
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             cPData.eYear.ToString() + "年" + cPData.eMonth.ToString() + "月の予定の登録に失敗しました。";
                    }

                    // ログ配列に出力
                    arrayLog(lg);
                }

                //Console.WriteLine(cPData.cNo + " " + cPData.furi);
            }
            catch (Exception e)
            {
            }
            finally
            {
                // ExcelBookをクローズ
                oXlsBook.Close(Type.Missing, Type.Missing, Type.Missing);

                // Excel終了
                oXls.Quit();

                // COM オブジェクトの参照カウントを解放する
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oxlsSheet);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXlsBook);
                System.Runtime.InteropServices.Marshal.ReleaseComObject(oXls);
            }
        }
コード例 #6
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        /// ------------------------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定データエンティティセット </summary>
        /// <param name="tbl">
        ///     会員稼働予定インスタンス</param>
        /// <param name="cPData">
        ///     個人情報クラス</param>
        /// <param name="dDay">
        ///     該当月の日数</param>
        /// ------------------------------------------------------------------------------------
        private void entitySet(会員稼働予定 tbl, clsPersonalData cPData, int dDay)
        {
            const int sRow = 8;

            tbl.カード番号  = cPData.cNo;
            tbl.年      = cPData.eYear;
            tbl.月      = cPData.eMonth;
            tbl.フリガナ   = cPData.furi;
            tbl.申告年月日  = (DateTime)cPData.sDt;
            tbl.アサイン区分 = 0;

            for (int i = 0; i < 31; i++)
            {
                // コメント化 2019/07/18
                //string dVal = Utility.nulltoString(cPData.sheet.Cell(sRow + i, cPData.colidx).Value);

                // Trim()を追加 2019/07/18
                string dVal = Utility.nulltoString(cPData.sheet.Cell(sRow + i, cPData.colidx).Value).Trim();

                if (i == 0)
                {
                    tbl.d1 = dVal;
                }
                if (i == 1)
                {
                    tbl.d2 = dVal;
                }
                if (i == 2)
                {
                    tbl.d3 = dVal;
                }
                if (i == 3)
                {
                    tbl.d4 = dVal;
                }
                if (i == 4)
                {
                    tbl.d5 = dVal;
                }
                if (i == 5)
                {
                    tbl.d6 = dVal;
                }
                if (i == 6)
                {
                    tbl.d7 = dVal;
                }
                if (i == 7)
                {
                    tbl.d8 = dVal;
                }
                if (i == 8)
                {
                    tbl.d9 = dVal;
                }
                if (i == 9)
                {
                    tbl.d10 = dVal;
                }
                if (i == 10)
                {
                    tbl.d11 = dVal;
                }
                if (i == 11)
                {
                    tbl.d12 = dVal;
                }
                if (i == 12)
                {
                    tbl.d13 = dVal;
                }
                if (i == 13)
                {
                    tbl.d14 = dVal;
                }
                if (i == 14)
                {
                    tbl.d15 = dVal;
                }
                if (i == 15)
                {
                    tbl.d16 = dVal;
                }
                if (i == 16)
                {
                    tbl.d17 = dVal;
                }
                if (i == 17)
                {
                    tbl.d18 = dVal;
                }
                if (i == 18)
                {
                    tbl.d19 = dVal;
                }
                if (i == 19)
                {
                    tbl.d20 = dVal;
                }
                if (i == 20)
                {
                    tbl.d21 = dVal;
                }
                if (i == 21)
                {
                    tbl.d22 = dVal;
                }
                if (i == 22)
                {
                    tbl.d23 = dVal;
                }
                if (i == 23)
                {
                    tbl.d24 = dVal;
                }
                if (i == 24)
                {
                    tbl.d25 = dVal;
                }
                if (i == 25)
                {
                    tbl.d26 = dVal;
                }
                if (i == 26)
                {
                    tbl.d27 = dVal;
                }
                if (i == 27)
                {
                    tbl.d28 = dVal;
                }

                if (i == 28)
                {
                    if (dDay < 29)
                    {
                        tbl.d29 = string.Empty;
                    }
                    else
                    {
                        tbl.d29 = dVal;
                    }
                }

                if (i == 29)
                {
                    if (dDay < 30)
                    {
                        tbl.d30 = string.Empty;
                    }
                    else
                    {
                        tbl.d30 = dVal;
                    }
                }

                if (i == 30)
                {
                    if (dDay < 31)
                    {
                        tbl.d31 = string.Empty;
                    }
                    else
                    {
                        tbl.d31 = dVal;
                    }
                }

                tbl.備考  = cPData.memo;
                tbl.更新日 = DateTime.Now;
            }
        }
コード例 #7
0
ファイル: clsXls.cs プロジェクト: ymgw0867/jfgSchedule-2018
        ///------------------------------------------------------------------
        /// <summary>
        ///     会員稼働予定テーブル更新メインルーチン
        ///     : closedXML版 2018/02/22</summary>
        /// <param name="sFile">
        ///     予定申告エクセルファイルパス</param>
        ///------------------------------------------------------------------
        private void dataOutputXML(string sFile, DateTime sDt)
        {
            string lg = string.Empty;

            jfgDataClassDataContext db = new jfgDataClassDataContext();

            // 個人データクラス
            clsPersonalData cPData = new clsPersonalData();

            cPData.sDt = sDt;

            try
            {
                using (var book = new XLWorkbook(sFile, XLEventTracking.Disabled))
                {
                    // ワークシートを取得する
                    IXLWorksheet sheet = book.Worksheet(1);

                    // 予定申告書シートよりカード番号取得
                    cPData.cNo = Utility.cNumberCheck(Utility.nulltoString(sheet.Cell(2, 11).Value).Trim());

                    if (cPData.cNo == -1)
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             "カード番号が正しい数字情報ではありません : 更新から除外されました。";

                        // ログ配列に出力
                        arrayLog(lg);

                        // 戻る
                        return;
                    }

                    // 会員情報よりフリガナを取得
                    if (!db.会員情報.Any(a => a.カード番号 == cPData.cNo))
                    {
                        // ログ文字列作成
                        lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                             "カード番号に該当する会員が存在しません [" + cPData.cNo.ToString() + "] : 更新から除外されました。";

                        // ログ配列に出力
                        arrayLog(lg);

                        // 戻る
                        return;
                    }
                    else
                    {
                        foreach (var t in db.会員情報.Where(a => a.カード番号 == cPData.cNo))
                        {
                            cPData.furi = t.フリガナ;
                        }
                    }

                    // 各月の予定を会員稼働予定テーブルに書き込む
                    for (int i = 0; i < 6; i++)
                    {
                        // 年を取得
                        cPData.eYear = cIntCheck(rangeNullToString(Utility.nulltoString(sheet.Cell(5, i * 4 + 2).Value).Trim()));

                        if (cPData.eYear == -1)
                        {
                            // ログ文字列作成
                            lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                                 (i + 1).ToString() + "番目の年が正しくありません : 更新から除外されました。";

                            // ログ配列に出力
                            arrayLog(lg);

                            // 次ぎへ
                            continue;
                        }

                        // 月を取得
                        cPData.eMonth = cIntCheck(Utility.nulltoString(sheet.Cell(5, i * 4 + 3).Value).Trim());

                        if (cPData.eMonth == -1)
                        {
                            // ログ文字列作成
                            lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                                 (i + 1).ToString() + "番目の月が正しくありません : 更新から除外されました。";

                            // ログ配列に出力
                            arrayLog(lg);

                            // 次ぎへ
                            continue;
                        }

                        // 過去の予定は更新しない
                        int nowYYMM = DateTime.Today.Year * 100 + DateTime.Today.Month;
                        int xlsYYMM = cPData.eYear * 100 + cPData.eMonth;
                        if (xlsYYMM < nowYYMM)
                        {
                            continue; // 次へ
                        }

                        // 連絡事項を取得
                        cPData.memo = Utility.nulltoString(sheet.Cell(2, 15).Value).Trim();

                        // 該当列を取得
                        cPData.colidx = i * 4 + 3;

                        // エクセルシートオブジェクトを取得
                        cPData.sheet = sheet;

                        // データ書き込み
                        if (saveData(cPData))
                        {
                            // ログ文字列作成
                            lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                                 cPData.eYear.ToString() + "年" + cPData.eMonth.ToString() + "月の予定が登録されました。";
                        }
                        else
                        {
                            // ログ文字列作成
                            lg = DateTime.Now.ToShortDateString() + " " + DateTime.Now.ToLongTimeString() + " " + System.IO.Path.GetFileName(sFile) + " " +
                                 cPData.eYear.ToString() + "年" + cPData.eMonth.ToString() + "月の予定の登録に失敗しました。";
                        }

                        // ログ配列に出力
                        arrayLog(lg);
                    }

                    // シート後片付け
                    sheet.Dispose();
                }
            }
            catch (Exception e)
            {
            }
            finally
            {
            }
        }