Пример #1
0
        public W40041(string programID, string programName) : base(programID, programName)
        {
            dao40041 = new D40041();

            InitializeComponent();
            this.Text             = _ProgramID + "─" + _ProgramName;
            txtDate.DateTimeValue = DateTime.Now;

            oswGrpLookItem.SetDataTable(new OCFG().ListAll(), "OSW_GRP", "OSW_GRP_NAME", TextEditStyles.DisableTextEditor, null);
            oswGrpLookItem.ItemIndex = 0;

            //設定 下拉選單
            //List<LookupItem> prodGrp = new List<LookupItem>(){
            //                               new LookupItem() { ValueMember = "Y", DisplayMember = "1-當日達得調整標準之契約"},
            //                               new LookupItem() { ValueMember = "%", DisplayMember = "%-全部契約" }};

            DataTable dtProd = new CODW().ListLookUpEdit("40041", "DATA_TYPE");

            prodLookItem.SetDataTable(dtProd, "CODW_ID", "CODW_DESC", TextEditStyles.DisableTextEditor, null);
            prodLookItem.ItemIndex = 0; // Y

#if DEBUG
            txtDate.DateTimeValue    = ("2018/11/01").AsDateTime();
            oswGrpLookItem.EditValue = "%";
#endif
            radioGroup1.EditValue = "ALL";
            ExportShow.Hide();
            GridHelper.SetCommonGrid(gvMain);
            gcMain.Visible = false;

            reCountBtn.Click += reCountBtn_Click;
        }
Пример #2
0
        public W35090(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();
            this.Text = _ProgramID + "─" + _ProgramName;

            ExportShow.Hide();
        }
Пример #3
0
        public W35030(string programID, string programName) : base(programID, programName)
        {
            dao35030 = new D35030();
            InitializeComponent();
            this.Text             = _ProgramID + "─" + _ProgramName;
            txtDate.DateTimeValue = GlobalInfo.OCF_DATE.ToString("yyyy/MM/01").AsDateTime();

            ExportShow.Hide();
        }
Пример #4
0
        public WS0020(string programID, string programName) : base(programID, programName)
        {
            daoS0020 = new DS0020();
            InitializeComponent();
            this.Text = _ProgramID + "─" + _ProgramName;

            txtDate.DateTimeValue = GlobalInfo.OCF_DATE;
            ExportShow.Hide();
        }
Пример #5
0
        public W60110(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();

            this.Text = _ProgramID + "─" + _ProgramName;
            txtMonth.DateTimeValue = GlobalInfo.OCF_DATE;

            dao60110 = new D60110();
            ExportShow.Hide();
        }
Пример #6
0
        public W30689(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();
            daoTPRICES_OPT = new TPRICES_OPT();

            this.Text             = _ProgramID + "─" + _ProgramName;
            txtDate.DateTimeValue = GlobalInfo.OCF_DATE;

            ExportShow.Hide();
        }
Пример #7
0
        public W30722(string programID, string programName) : base(programID, programName)
        {
            daoRPT   = new RPT();
            daoAM2   = new AM2();
            daoAI2   = new AI2();
            daoRamm1 = new RAMM1();

            InitializeComponent();
            this.Text             = _ProgramID + "─" + _ProgramName;
            txtDate.DateTimeValue = GlobalInfo.OCF_DATE;

            ExportShow.Hide();
        }
Пример #8
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            try {
                Workbook  workbook = new Workbook();
                DataTable dtSP4    = new DataTable();
                DataTable dtSP5    = new DataTable();

                dtSP4 = daoS0020.GetSP4Data(txtDate.DateTimeValue.ToString("yyyy/MM/dd"));
                dtSP5 = daoS0020.GetSP5Data(txtDate.DateTimeValue.ToString("yyyy/MM/dd"));

                if (dtSP4.Rows.Count <= 0)
                {
                    ExportShow.Hide();
                    MessageDisplay.Info("無任何資料");
                    return(ResultStatus.Fail);
                }

                string destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);

                workbook.LoadDocument(destinationFilePath);

                //將SP4資料放入Excel
                Worksheet worksheet = workbook.Worksheets[0];
                worksheet.Cells[0, 3].Value = txtDate.DateTimeValue.ToString("yyyy/MM/dd");
                for (int i = 0; i < dtSP4.Rows.Count; i++)
                {
                    int row = dtSP4.Rows[i]["SP4_TYPE"].AsInt();
                    worksheet.Cells[row + 7, 1].Value = dtSP4.Rows[i]["sp4_span_cnt"].AsInt();
                    worksheet.Cells[row + 7, 2].Value = dtSP4.Rows[i]["sp4_mkt_cnt"].AsInt();
                }

                //將SP5資料放入Excel(◎尚未申報者:)
                if (dtSP5.Rows.Count > 0)
                {
                    //從Excel 第40列開始塞資料
                    for (int i = 39; i < dtSP5.Rows.Count + 39; i++)
                    {
                        worksheet.Cells[i, 0].Value = dtSP5.Rows[i - 39]["sp5_brk_no"].AsString() + '-' +
                                                      dtSP5.Rows[i - 39]["sp5_brk_abbr_name"].AsString();
                    }
                }
                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #9
0
        public W30500(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();
            dao30500 = new D30500();

            ExportShow.Hide();

            this.Text = _ProgramID + "─" + _ProgramName;

            gcExport.Hide();
            gcMain.Hide();
            txtSDate.DateTimeValue = GlobalInfo.OCF_DATE;
            txtEDate.DateTimeValue = GlobalInfo.OCF_DATE;
        }
Пример #10
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            Workbook  workbook = new Workbook();
            DataTable dt       = new DataTable();

            string   destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);//Path.Combine(GlobalInfo.DEFAULT_REPORT_DIRECTORY_PATH, ls_filename);
            DateTime date = txtDate.DateTimeValue;
            int      rowStart = 4, colStart = 0;

            if (txt.EditValue == null)
            {
                MessageDisplay.Info("請輸入季度資訊 ! ");
                ExportShow.Hide();
                return(ResultStatus.FailButNext);
            }

            string yearQ = txt.EditValue.ToString();

            try {
                workbook.LoadDocument(destinationFilePath);
                Worksheet worksheet = workbook.Worksheets[0];

                worksheet.Cells[2, 0].Select();
                worksheet.Cells[2, 0].Value = yearQ;

                dt = dao35030.GetData(yearQ, date, date);
                if (dt.Rows.Count <= 0)
                {
                    ExportShow.Text = date.ToShortDateString() + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!";
                    return(ResultStatus.Fail);
                }
                worksheet.Import(dt, false, rowStart, colStart);

                //刪除空白列
                Range ra = worksheet.Range[(dt.Rows.Count + rowStart + 1).ToString() + ":1004"];
                ra.Delete(DeleteMode.EntireRow);

                workbook.SaveDocument(destinationFilePath);
            }
            catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #11
0
        public W60320(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();

            this.Text = _ProgramID + "─" + _ProgramName;
            int weekNow = Convert.ToInt32(GlobalInfo.OCF_DATE.DayOfWeek);

            weekNow = (weekNow == 0 ? 7 - 1 : weekNow - 1) * -1;
            //本周第一天(星期一)
            txtStartDate.DateTimeValue = GlobalInfo.OCF_DATE.AddDays(weekNow);
            txtEndDate.DateTimeValue   = GlobalInfo.OCF_DATE;

            dao60320 = new D60320();
            ExportShow.Hide();
        }
Пример #12
0
        public W35020(string programID, string programName) : base(programID, programName)
        {
            dao35020 = new D35020();
            InitializeComponent();
            this.Text = _ProgramID + "─" + _ProgramName;

            txtDate.DateTimeValue = GlobalInfo.OCF_DATE.ToString("yyyy/MM/01").AsDateTime();

            //報表類別 下拉選單
            //DataTable exportTypeSource = daoCod.ListByCol2("35020", "ddlb_rpt");
            //exportType.SetDataTable(exportTypeSource, "COD_ID", "COD_DESC", DevExpress.XtraEditors.Controls.TextEditStyles.DisableTextEditor, null);
            //exportType.EditValue = "0";
            exportType.SelectedIndex = 0;

            ExportShow.Hide();
        }
Пример #13
0
        public W40100(string programID, string programName) : base(programID, programName)
        {
            InitializeComponent();
            this.Text             = _ProgramID + "─" + _ProgramName;
            txtDate.DateTimeValue = GlobalInfo.OCF_DATE;
            //設定 下拉選單
            //List<LookupItem> lstType = new List<LookupItem>(){
            //                               new LookupItem() { ValueMember = "0B", DisplayMember = "一般 / 股票"},
            //                               new LookupItem() { ValueMember = "1B", DisplayMember = "長假調整" },
            //                               new LookupItem() { ValueMember = "1E", DisplayMember = "長假回調" },
            //                               new LookupItem() { ValueMember = "2B", DisplayMember = "處置股票調整"}};

            DataTable dtType = new CODW().ListLookUpEdit("MGD2", "MGD2_ADJ_TYPE");

            //設定下拉選單
            ddlAdjType.SetDataTable(dtType, "CODW_ID", "CODW_DESC", TextEditStyles.DisableTextEditor, null);
            ddlAdjType.ItemIndex = 0; // 0B

            ExportShow.Hide();
        }
Пример #14
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();
            try {
                Workbook  workbook = new Workbook();
                DataTable dtAM6    = new DataTable();
                DataTable dtAM0    = new DataTable();
                DateTime  date     = txtDate.DateTimeValue;

                //交易輔助人
                dtAM6 = dao30730.GetAM6Data(date.ToString("yyyyMM"));
                dtAM0 = dao30730.GetAM0Data(date.ToString("yyyyMM"));

                if (dtAM6.Rows.Count <= 0 && dtAM0.Rows.Count <= 0)
                {
                    ExportShow.Hide();
                    MessageDisplay.Info(date + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!");
                    return(ResultStatus.Fail);
                }

                if (dtAM6.Rows.Count <= 0)
                {
                    dtAM6.Rows.Add();
                    dtAM6.Rows[0]["am6_ym"]        = date.ToString("yyyyMM");
                    dtAM6.Rows[0]["am6_trade_aux"] = 0;
                }

                string destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);
                int    oleRow = 1;

                workbook.LoadDocument(destinationFilePath);

                #region Export

                foreach (DataRow r in dtAM0.Rows)
                {
                    int    v     = r["am0_m_qnty"].AsInt();
                    string brkNo = r["am0_brk_no"].AsString();

                    //判斷是否是期貨
                    if (brkNo == "F")
                    {
                        if (r["am0_brk_type"].ToString() == "9")
                        {
                            dtAM6.Rows[0]["am6_f999"] = v;
                        }
                        else
                        {
                            dtAM6.Rows[0]["am6_f000"] = v;
                        }
                    }
                    else
                    {
                        if (r["am0_brk_type"].ToString() == "9")
                        {
                            dtAM6.Rows[0]["am6_999"] = v;
                        }
                        else
                        {
                            dtAM6.Rows[0]["am6_000"] = v;
                        }
                    }
                }

                dtAM6.AcceptChanges();

                Worksheet worksheet = workbook.Worksheets["30731"];
                //寫入資料
                dtAM6.Columns.Remove("AM6_YM");
                worksheet.Import(dtAM6, false, oleRow, 0);

                worksheet = workbook.Worksheets["30730"];
                worksheet.Range["A1"].Select();
                worksheet.Cells[0, 1].Value = "期貨商及交易輔助人" + date.Year.ToString() + "年" + date.Month.ToString() + "月份期貨交易量統計表";
                #endregion

                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #15
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            Workbook  workbook   = new Workbook();
            DataTable dtYearData = new DataTable();
            DataTable dtMontData = new DataTable();

            string destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);
            string inputMonth          = txtDate.DateTimeValue.ToString("yyyyMM");
            string inputYear           = txtDate.DateTimeValue.Year.ToString();

            try {
                workbook.LoadDocument(destinationFilePath);
                Worksheet  worksheet  = workbook.Worksheets[0];
                string     startYear  = worksheet.Cells[2, 1].Value.ToString();
                int        rowTol     = worksheet.Cells[2, 0].Value.AsInt();
                List <int> ListBIndex = new List <int>();
                int        rowStart   = 4;

                for (int i = 1; i <= idfgCount; i++)
                {
                    rowStart = 4;
                    int bIndex = GetBIndex(i, ListBIndex);
                    int ymd    = 0;

                    ListBIndex.Add(bIndex);

                    if (i == 6)
                    {
                        i = 7;// idfgtype 跳過6
                    }
                    dtYearData = dao30530.ListYearData(startYear, inputYear, inputYear + "01", inputMonth, i.ToString(), bIndex.ToString(), (bIndex + 1).ToString());
                    dtMontData = dao30530.ListMonthData(inputYear + "01", inputMonth, i.ToString(), bIndex.ToString(), (bIndex + 1).ToString());

                    if (dtYearData.Rows.Count <= 0)
                    {
                        ExportShow.Hide();
                        MessageDisplay.Info(inputMonth + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!");
                        File.Delete(destinationFilePath);
                        return(ResultStatus.Fail);
                    }

                    // 年分
                    for (int j = startYear.AsInt(); j <= inputYear.AsInt(); j++)
                    {
                        DataTable dtYear = dtYearData.Filter("AM2_YMD = " + j.ToString());
                        if (ymd != j)
                        {
                            //有資料時才增加列數
                            if (dtYear.Rows.Count > 0)
                            {
                                rowStart++;
                            }

                            ymd = j;
                        }
                        foreach (DataRow dr in dtYear.Rows)
                        {
                            worksheet.Cells[rowStart, 0].Value = ymd;
                            worksheet.Cells[rowStart, dr["BS_Index"].AsInt()].Value = dr["am2_m_qnty"].AsDecimal();
                        }
                    }

                    //每月
                    for (int j = (inputYear.ToString() + "01").AsInt(); j <= inputMonth.AsInt(); j++)
                    {
                        DataTable dtMon = dtMontData.Filter("AM2_YMD = " + j.ToString());
                        if (ymd != j)
                        {
                            //有資料時才增加列數
                            if (dtMon.Rows.Count > 0)
                            {
                                rowStart++;
                            }

                            ymd = j;
                        }
                        foreach (DataRow dr in dtMon.Rows)
                        {
                            worksheet.Cells[rowStart, 0].Value = dr["am2_ymd"].AsDateTime("yyyyMM").ToString("MMM", CultureInfo.CreateSpecificCulture("en-US")) + ".";
                            worksheet.Cells[rowStart, dr["BS_Index"].AsInt()].Value = dr["am2_m_qnty"].AsDecimal();
                        }
                    }
                }

                if (rowTol < 38)
                {
                    Range ra = worksheet.Range[(rowStart + 2).ToString() + ":39"];
                    ra.Delete(DeleteMode.EntireRow);
                }

                worksheet.ScrollToRow(0);
                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #16
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            Workbook  workbook = new Workbook();
            DataTable dtAdd    = new DataTable();
            DataTable dtSub    = new DataTable();

            string   destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);//Path.Combine(GlobalInfo.DEFAULT_REPORT_DIRECTORY_PATH, ls_filename);
            DateTime date = txtDate.DateTimeValue;
            string   yearQ = "";
            int      sheetIndex = exportType.EditValue.AsInt(), rowStart = 6, colStart = 0, rowEnd = 0;
            int      sheetType = exportType.EditValue.AsInt();

            if (txt.EditValue == null)
            {
                MessageDisplay.Info("請輸入季度資訊 ! ");
                ExportShow.Hide();
                return(ResultStatus.FailButNext);
            }

            try {
                workbook.LoadDocument(destinationFilePath);
                Worksheet worksheet = workbook.Worksheets[sheetType];

                yearQ = txt.EditValue.ToString();

                dtAdd = dao35020.GenAddReport(yearQ, date, date);
                if (dtAdd.Rows.Count <= 0)
                {
                    ExportShow.Text = date.ToShortDateString() + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!";
                    return(ResultStatus.Fail);
                }
                dtSub = dao35020.GenSubReport(yearQ, date, date);
                if (dtSub.Rows.Count <= 0)
                {
                    ExportShow.Text = date.ToShortDateString() + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!";
                    return(ResultStatus.Fail);
                }

                worksheet.Cells[2, 0].Value = worksheet.Cells[2, 0].Value + txt.EditValue.ToString();

                switch (sheetType)
                {
                case 0: {
                    //新增部分報表
                    worksheet.Import(dtAdd, false, rowStart, colStart);
                    worksheet.Import(dtSub, false, rowStart, colStart + 2);
                    rowEnd = Math.Max(dtAdd.Rows.Count, dtSub.Rows.Count);
                    break;
                }

                case 1: {
                    //減少部分報表
                    worksheet.Import(dtAdd, false, rowStart, colStart);
                    rowEnd = dtAdd.Rows.Count;
                    break;
                }

                case 2: {
                    //減少部分報表
                    worksheet.Import(dtSub, false, rowStart, colStart);
                    rowEnd = dtSub.Rows.Count;
                    break;
                }
                }
                //刪除空白列
                Range ra = worksheet.Range[(rowEnd + rowStart + 1).ToString() + ":250"];
                ra.Delete(DeleteMode.EntireRow);

                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #17
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();
            try {
                Workbook  workbook = new Workbook();
                DataTable dt       = new DataTable();

                string   kindId = "TXF";
                DateTime sdate  = PbFunc.f_get_last_day("AI3", kindId, txtDate.DateTimeValue.ToString("yyyy/MM"), 1);
                DateTime edate  = PbFunc.f_get_end_day("AI3", kindId, txtDate.DateTimeValue.ToString("yyyy/MM"));

                dt = daoAI3.ListAI3(kindId, sdate, edate);

                //查無資料時不產檔
                if (dt.Rows.Count <= 0)
                {
                    ExportShow.Hide();
                    MessageDisplay.Info(sdate + "~" + edate + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!");
                    return(ResultStatus.Fail);
                }

                //複製Template
                string destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);
                workbook.LoadDocument(destinationFilePath);

                //切換sheet
                Worksheet worksheet = workbook.Worksheets["30711"];
                DateTime  ldt_ymd   = new DateTime(1900, 1, 1);
                int       row_tol   = 33;
                //寫入資料
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (ldt_ymd != Convert.ToDateTime(dt.Rows[i]["ai3_date"]))
                        {
                            ldt_ymd = Convert.ToDateTime(dt.Rows[i]["ai3_date"]);
                            worksheet.Cells[i + 1, 0].Value = ldt_ymd;
                        }
                        worksheet.Cells[i + 1, 1].Value = float.Parse(dt.Rows[i]["ai3_index"].ToString());
                        worksheet.Cells[i + 1, 2].Value = float.Parse(dt.Rows[i]["ai3_close_price"].ToString());
                    }
                }

                //刪除空白列
                if (row_tol > dt.Rows.Count)
                {
                    Range ra = worksheet.Range[(dt.Rows.Count + 2).ToString() + ":" + row_tol.ToString()];
                    ra.Delete(DeleteMode.EntireRow);
                }

                //圖表重選範圍
                ChartObject chartObjs = workbook.ChartSheets[0].Chart;
                chartObjs.Series[0].SeriesName.SetValue("近月份期貨契約指數");
                ChartData closePrice = new ChartData();
                closePrice.RangeValue      = worksheet.Range["C2:C" + (dt.Rows.Count + 1).ToString()];
                chartObjs.Series[0].Values = closePrice;
                ChartData index = new ChartData();
                index.RangeValue           = worksheet.Range["B2:B" + (dt.Rows.Count + 1).ToString()];
                chartObjs.Series[1].Values = index;

                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #18
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            Workbook  workbook = new Workbook();
            DataTable dtAM2    = new DataTable();
            DataTable dtRPT    = new DataTable();
            DataTable dtAi2    = new DataTable();
            DataTable dtRamm1  = new DataTable();

            string   destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);
            DateTime date       = txtDate.DateTimeValue;
            string   asParamKey = "TXO";
            int      oleRow     = 1;

            try {
                int noData = 0;
                workbook.LoadDocument(destinationFilePath);

                #region Get AM2 Data
                dtAM2 = daoAM2.ListAm2DataByYmd(date.ToString("yyyyMM"), asParamKey);

                if (dtAM2.Rows.Count <= 0)
                {
                    ExportShow.Hide();
                    MessageDisplay.Info(date + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!");
                    noData += 1;
                    File.Delete(destinationFilePath);
                    return(ResultStatus.Fail);
                }
                #endregion

                Worksheet worksheet = workbook.Worksheets["30720"];

                #region Get RPT
                dtRPT = daoRPT.ListData("%" + _ProgramID + "%");

                if (dtRPT.Rows.Count <= 0)
                {
                    MessageDisplay.Info(_ProgramID + '-' + "RPT無任何資料!");
                    noData += 1;
                }
                //填寫日期
                TaiwanCalendar tai = new TaiwanCalendar();
                worksheet.Cells[0, 6].Value = tai.GetYear(date).ToString() + "年" + tai.GetMonth(date) + "月" + worksheet.Cells[0, 6].Value;
                worksheet.Cells[1, 4].Value = date.ToString("MMM", CultureInfo.CreateSpecificCulture("en-US")) + "." + date.Year.ToString() + worksheet.Cells[1, 4].Value;

                string paramKey = "";
                foreach (DataRow r in dtAM2.Rows)
                {
                    if (paramKey != (r["am2_param_key"].ToString().Trim()))
                    {
                        paramKey = r["am2_param_key"].ToString().Trim();
                        oleRow   = dtRPT.Rows.IndexOf(dtRPT.Select("trim(rpt_value) = '" + paramKey + "'")[0]);
                        if (oleRow >= 0)
                        {
                            oleRow = dtRPT.Rows[oleRow]["rpt_seq_no"].AsInt();
                        }
                    }

                    int oleCol = GetCol(r["am2_idfg_type"].AsInt(), r["am2_bs_code"].AsString());
                    if (oleRow > 0 && oleCol > 0)
                    {
                        worksheet.Cells[oleRow - 1, oleCol - 1].Value = r["am2_m_qnty"].AsInt();
                    }
                }
                #endregion

                #region Get AI2
                dtAi2 = daoAI2.ListAI2ByYmd(date.ToString("yyyyMM"), date.ToString("yyyyMM"), asParamKey);

                if (dtAi2.Rows.Count <= 0)
                {
                    MessageDisplay.Info(_ProgramID + '-' + "AI2無任何資料!");
                    noData += 1;
                }
                //切換sheet
                paramKey = "";
                foreach (DataRow r in dtAi2.Rows)
                {
                    if (paramKey != (r["ai2_param_key"].ToString().Trim()))
                    {
                        paramKey = r["ai2_param_key"].ToString().Trim();
                        oleRow   = dtRPT.Rows.IndexOf(dtRPT.Select("trim(rpt_value) = '" + paramKey + "'")[0]);
                        if (oleRow >= 0)
                        {
                            oleRow = dtRPT.Rows[oleRow]["rpt_seq_no"].AsInt();
                        }
                    }
                    if (oleRow > 0)
                    {
                        worksheet.Cells[oleRow - 1, 2].Value = r["ai2_m_qnty"].AsInt();
                        worksheet.Cells[oleRow - 1, 3].Value = r["ai2_oi"].AsInt();
                    }
                }
                #endregion

                #region Get Ramm1
                dtRamm1 = daoRamm1.ListRamm1Ymd(date.ToString("yyyyMM") + "01", date.ToString("yyyyMM") + "31", asParamKey);

                if (dtRamm1.Rows.Count <= 0)
                {
                    MessageDisplay.Info(_ProgramID + '-' + "Ramm1無任何資料!");
                    noData += 1;
                }

                paramKey = "";
                foreach (DataRow r in dtRamm1.Rows)
                {
                    if (paramKey != (r["param_key"].ToString().Trim()))
                    {
                        paramKey = r["param_key"].ToString().Trim();
                        oleRow   = dtRPT.Rows.IndexOf(dtRPT.Select("trim(rpt_value) = '" + paramKey + "'")[0]);
                        if (oleRow >= 0)
                        {
                            oleRow = dtRPT.Rows[oleRow]["rpt_seq_no"].AsInt();
                        }
                    }
                    if (oleRow > 0)
                    {
                        worksheet.Cells[oleRow - 1, 16].Value = r["bo"].AsInt();
                        worksheet.Cells[oleRow - 1, 17].Value = r["bq"].AsInt();
                        worksheet.Cells[oleRow - 1, 18].Value = r["so"].AsInt();
                        worksheet.Cells[oleRow - 1, 19].Value = r["sq"].AsInt();
                    }
                }
                #endregion

                workbook.SaveDocument(destinationFilePath);

                //全查無資料時, 刪除檔案
                if (noData == 4)
                {
                    File.Delete(destinationFilePath);
                }
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }
Пример #19
0
        protected override ResultStatus Export()
        {
            ExportShow.Text = "轉檔中...";
            ExportShow.Show();

            Workbook workbook = new Workbook();

            string destinationFilePath = PbFunc.wf_copy_file(_ProgramID, _ProgramID);
            string sYmd = txtSDate.DateTimeValue.ToString("yyyyMM");
            string eYmd = txtEDate.DateTimeValue.ToString("yyyyMM");
            int    inputYear = txtEDate.DateTimeValue.Year - txtSDate.DateTimeValue.Year;
            int    oleRow = 2, rowStart = oleRow + 2, rowEnd = rowStart;
            int    rowTol = 0;
            int    colTot = dao30750.GetColTot();

            try {
                workbook.LoadDocument(destinationFilePath);
                Worksheet worksheet = workbook.Worksheets[0];

                //insert Row (按年分)
                if (inputYear > 0)
                {
                    for (int i = 1; i <= inputYear; i++)
                    {
                        rowEnd += 12;
                        //新增12筆空白列
                        for (int j = 1; j <= 12; j++)
                        {
                            worksheet.Rows[rowEnd - 1].Insert();
                        }
                        //將上面的12列 copy 過去
                        Range ra = worksheet.Range[(rowStart).ToString() + ":" + (rowStart + 11).ToString()];
                        worksheet.Rows[rowEnd - 1].CopyFrom(ra);
                    }
                }
                rowTol = rowStart + ((inputYear + 1) * 12);

                DataTable dtAI2      = dao30750.GetAI2Data(sYmd, eYmd);
                DataTable dtDayCount = dao30750.GetDayCount(sYmd, eYmd);

                if (dtAI2.Rows.Count <= 0)
                {
                    ExportShow.Hide();
                    MessageDisplay.Info(sYmd + "," + _ProgramID + '-' + _ProgramName + ",無任何資料!");
                    File.Delete(destinationFilePath);
                    return(ResultStatus.Fail);
                }

                //補上未選月
                //if (txtSDate.DateTimeValue.Month != 1) {
                //   for (int i = 1; i <= txtSDate.DateTimeValue.Month - 1; i++) {
                //      DataRow addRow = dtDayCount.NewRow();
                //      addRow["ai2_ymd"] = txtSDate.DateTimeValue.Year.ToString() + i.ToString("D2");
                //      addRow["cp_day_count"] = 0;
                //      dtDayCount.Rows.Add(addRow);
                //   }
                //   dtDayCount = dtDayCount.Sort("AI2_YMD");
                //}

                string lsYear = "";
                foreach (DataRow r in dtDayCount.Rows)
                {
                    DateTime       aiYm = r["ai2_ymd"].AsDateTime("yyyyMM");
                    TaiwanCalendar tai  = new TaiwanCalendar();
                    oleRow += 1;
                    //清除未選月公式
                    if (r["ai2_ymd"].AsDateTime("yyyyMM") < txtSDate.DateTimeValue)
                    {
                        worksheet.Rows[oleRow].ClearContents();
                    }
                    if (lsYear != aiYm.Year.ToString())
                    {
                        if (aiYm.Month != 1)
                        {
                            for (int i = 1; i < aiYm.Month; i++)
                            {
                                worksheet.Cells[oleRow, 0].Value = tai.GetYear(aiYm).ToString();
                                worksheet.Cells[oleRow, 1].Value = i.ToString();
                                worksheet.Cells[oleRow, 2].Value = "";
                                oleRow++;
                            }
                        }
                        lsYear = aiYm.Year.ToString();
                    }

                    worksheet.Cells[oleRow, 0].Value = tai.GetYear(aiYm).ToString();
                    worksheet.Cells[oleRow, 1].Value = aiYm.Month.ToString();
                    worksheet.Cells[oleRow, 2].Value = r["cp_day_count"].ToString() != "0" ? r["cp_day_count"].ToString() : "";

                    //日均量總計
                    if (colTot > 0)
                    {
                        int cpMQnty    = dtAI2.Compute("SUM(ai2_m_qnty)", "ai2_ymd=" + r["ai2_ymd"].ToString()).AsInt();
                        int cpDayCount = r["cp_day_count"].AsInt();

                        if (cpDayCount > 0)
                        {
                            worksheet.Cells[oleRow, colTot].Value = Math.Round((double)cpMQnty / cpDayCount, 0, MidpointRounding.AwayFromZero);
                        }
                    }
                    if (dtAI2.Select("ai2_ymd=" + r["ai2_ymd"].ToString()).Length != 0)
                    {
                        DataTable dtAI2ByYmd = dtAI2.Filter("ai2_ymd=" + r["ai2_ymd"].ToString());
                        foreach (DataRow row in dtAI2ByYmd.Rows)
                        {
                            //月總量
                            int col = row["rpt_seq_no"].AsInt();
                            if (col > 0)
                            {
                                worksheet.Cells[oleRow, col - 1].Value = row["ai2_m_qnty"].AsInt();
                            }
                            //日均量
                            int col2 = row["rpt_seq_no_2"].AsInt();
                            if (col2 > 0)
                            {
                                int ai2DayCount = row["ai2_day_count"].AsInt();
                                if (ai2DayCount > 0)
                                {
                                    worksheet.Cells[oleRow, col2 - 1].Value = Math.Round((double)row["ai2_m_qnty"].AsInt() / ai2DayCount, 0, MidpointRounding.AwayFromZero);
                                }
                            }
                        }
                    }// if
                }
                //清除空白列
                if (rowTol != oleRow + 2)
                {
                    Range rowRange = worksheet.Range[(oleRow + 2).ToString() + ":" + (rowTol - 1).ToString()];
                    rowRange.ClearContents();
                }

                //總計
                //insert Row (按年分)
                if (inputYear >= 2)
                {
                    rowStart = rowTol;
                    for (int i = 1; i <= inputYear - 1; i++)
                    {
                        worksheet.Rows[rowStart].Insert();
                        //將上面的總計列 copy 過去
                        Range ra = worksheet.Rows[rowStart - 1];
                        worksheet.Rows[rowStart].CopyFrom(ra);
                        rowStart += 1;
                    }
                }

                DataTable dtAI2Sum = dao30750.GetAI2Sum(sYmd, eYmd);
                string    ymd      = "";
                oleRow = rowTol - 2;
                foreach (DataRow sumR in dtAI2Sum.Rows)
                {
                    if (ymd != sumR["ai2_ymd"].ToString())
                    {
                        DateTime       aiYm = sumR["ai2_ymd"].AsDateTime("yyyy");
                        TaiwanCalendar tai  = new TaiwanCalendar();
                        oleRow += 1;
                        worksheet.Cells[oleRow, 0].Value = tai.GetYear(aiYm).ToString() + "年";
                        worksheet.Cells[oleRow, 2].Value = dtAI2Sum.Compute("MAX(ai2_day_count)", "ai2_ymd=" + sumR["ai2_ymd"].ToString()).AsInt();
                        ymd = sumR["ai2_ymd"].ToString();
                    }
                    //日均量總計
                    if (colTot > 0)
                    {
                        int cpMQnty    = dtAI2Sum.Compute("SUM(ai2_m_qnty)", "ai2_ymd=" + sumR["ai2_ymd"].ToString()).AsInt();
                        int cpDayCount = dtAI2Sum.Compute("MAX(ai2_day_count)", "ai2_ymd=" + sumR["ai2_ymd"].ToString()).AsInt();

                        if (cpDayCount > 0)
                        {
                            worksheet.Cells[oleRow, colTot].Value = Math.Round((double)cpMQnty / cpDayCount, 0, MidpointRounding.AwayFromZero);
                        }
                    }
                    //月總量
                    int col = sumR["rpt_seq_no"].AsInt();
                    if (col > 0)
                    {
                        worksheet.Cells[oleRow, col - 1].Value = sumR["ai2_m_qnty"].AsInt();
                    }
                    //日均量
                    int col2 = sumR["rpt_seq_no_2"].AsInt();
                    if (col2 > 0)
                    {
                        int ai2DayCount = sumR["ai2_day_count"].AsInt();
                        if (ai2DayCount > 0)
                        {
                            worksheet.Cells[oleRow, col2 - 1].Value = Math.Round((double)sumR["ai2_m_qnty"].AsInt() / ai2DayCount, 0, MidpointRounding.AwayFromZero);
                        }
                    }
                }
                //刪除空白列
                if (rowTol > oleRow)
                {
                    Range ra = worksheet.Range[(oleRow + 2).ToString() + ":" + (rowTol + 2).ToString()];
                    ra.Delete(DeleteMode.EntireRow);
                }

                workbook.SaveDocument(destinationFilePath);
            } catch (Exception ex) {
                ExportShow.Text = "轉檔失敗";
                throw ex;
            }
            ExportShow.Text = "轉檔成功!";
            return(ResultStatus.Success);
        }