Example #1
0
        DrillDataPoints GetChartData(C1XLBook book)
        {
            // Get first sheet
            var sheet = book.Sheets[0];

            // Get location, date, and cell count
            var location = sheet[1, 1].Value as string;
            var date = (DateTime)sheet[2, 1].Value;
            var count = sheet.Rows.Count - 5;
           // label.Text = string.Format("{0}, {1} points", location, count);

            // Get values into arrays for charting
            var drillData = new DrillDataPoints(count);
            for (int r = 0; r < count; r++)
            {
                drillData.Temperature[r] = (double)sheet[r + 5, 1].Value;
                drillData.Pressure[r] = (double)sheet[r + 5, 2].Value;
                drillData.Conductivity[r] = (double)sheet[r + 5, 3].Value;
                drillData.Ph[r] = (double)sheet[r + 5, 4].Value;
                drillData.Depth[r] = r;
            }
            drillData.ScaleValues();

            // Send data to chart
            return drillData;
        }
        public void Save(string filename, C1FlexGrid flexgrid)
        {
            // create the book to save
            var book = new C1XLBook();
            book.Sheets.Clear();
            var  xlSheet = book.Sheets.Add("Sheet1");
            ExcelExport.ExcelFilter.Save(flexgrid, xlSheet);

            // save the book
            book.Save(filename, C1.WPF.Excel.FileFormat.OpenXml);
        }
Example #3
0
        private void button2_Click(object sender, EventArgs e)
        {
            if (File.Exists(textBox1.Text))
            {
                this.excelBook = new C1.C1Excel.C1XLBook();
                try
                {
                    this.excelBook.Load(this.textBox1.Text);

                }
                catch (Exception ex)
                {

                    MessageBox.Show(ex.StackTrace);
                    return;
                }
            }

            XLSheet sheet = this.excelBook.Sheets[0];

            string strSQL = "select * from E_Points ";
            SQLExecute.Fill(strSQL, ds, "E_Points");
            ds.Tables["E_Points"].PrimaryKey = new DataColumn[] { ds.Tables["E_Points"].Columns["PointCode"] };

            DialogResult dialogResult  = DialogResult.OK;

            //����ļ��Ƿ��п���
            if (!CheckDate(sheet))
            {
                dialogResult = System.Windows.Forms.MessageBox.Show("�ļ����п��У��Ƿ��룿", this.Text, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
                if (dialogResult == DialogResult.Yes)
                {
                    ImportDate(sheet);
                }
                else if (dialogResult == DialogResult.Cancel)
                {
                    return;
                }
            }
        }
        private void _btCreate_Click(object sender, RoutedEventArgs e)
        {
            // create new workbook
            if (_book == null)
                _book = new C1XLBook();

            // clear the book
            _book.Clear();
            _book.Sheets.Clear();

            // load from resources
            Assembly a = Assembly.GetExecutingAssembly();
            foreach (string res in a.GetManifestResourceNames())
            {
                if (!res.ToLower().EndsWith(".xlsx")) continue;

                using (var stream = a.GetManifestResourceStream(res))
                {
                    // load Excel file
                    var book = new C1XLBook();
                    book.Load(stream, FileFormat.OpenXml);

                    // clone and rename first sheet (sheet names must be unique)
                    var ss = res.Split('.');
                    Debug.Assert(ss.Length >= 3);
                    XLSheet clone = book.Sheets[0].Clone();
                    clone.Name = ss[ss.Length - 2];

                    // add cloned sheet to main book
                    _book.Sheets.Add(clone);
                }
            }

            // allow save the file
            _lblStatus.Text = "You can save workbook";
            _btnSave.IsEnabled = true;
        }
 private static void InternalSave(Action<C1XLBook> action)
 {
     var dlg = new SaveFileDialog();
     dlg.Filter = "Excel Files (*.xlsx)|*.xlsx";
     if (dlg.ShowDialog() == true)
     {
         try
         {
             var book = new C1XLBook();
             if (action != null)
             {
                 action(book);
             }
             using (var stream = dlg.OpenFile())
             {
                 book.Save(stream);
             }
         }
         catch (Exception x)
         {
             MessageBox.Show(x.Message);
         }
     }
 }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM v_MonthParkingCount";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            sql += " Order By CompanyName";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        string fileName = HttpContext.Current.Server.MapPath(@"\Report\Template\THSLXT_tpl.xlsx");

                        xlbBook.Load(fileName);
                        XLSheet xlsSheet = xlbBook.Sheets["DANH SÁCH BẢO VỆ"];
                        //xlsSheet.Name = drpMonth.SelectedValue + "_" + drpYear.SelectedValue;

                        int i = 0;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.Font = new Font("", 12, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        xlsSheet[i, 0].Value = "Tháng " + drpMonth.SelectedValue + "/" + drpYear.SelectedValue;
                        xlsSheet[i, 0].Style = xlstStyle;

                        xlsSheet[i + 1, 0].Value = "STT";
                        xlsSheet[i + 1, 1].Value = "Mã Nhân Viên";
                        xlsSheet[i + 1, 2].Value = "Họ và Tên";

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.Font = new Font("", 10, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        for (int j = 1; j <= 31; j++)
                        {
                            //xlsSheet[i, 2 + j].Value = j;
                            //DateTime date = new DateTime(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue), j);
                            //xlsSheet[i + 1, 2 + j].Value = dictionary[date.DayOfWeek.ToString().ToLower()];

                            //xlsSheet[i, 2 + j].Style = xlstStyle01;
                            //xlsSheet[i + 1, 2 + j].Style = xlstStyle01;
                            //if (j == DateTime.DaysInMonth(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue)))
                            //{
                            //    break;
                            //}
                        }

                        //i++;
                        //DataTable dt = ds.Tables[0];
                        //foreach (DataRow rowType in dt.Rows)
                        //{
                        //    int No = i;
                        //    i++;
                        //    string StaffId = rowType["StaffId"].ToString();
                        //    string Name = rowType["Name"].ToString();

                        //    xlsSheet[i, 0].Value = No;
                        //    xlsSheet[i, 1].Value = StaffId;
                        //    xlsSheet[i, 2].Value = Name;

                        //    xlsSheet[i, 0].Style = xlstStyle01;
                        //    xlsSheet[i, 1].Style = xlstStyle01;
                        //    xlsSheet[i, 2].Style = xlstStyle01;

                        //}

                        ////ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('/CSV/DownloadZipFile.aspx'," + PopupWidth + "," + PopupHeight + ",'EditFlat', true);", true);

                        ////xlsSheet[i++, 0].Value = "Ghi chú:";
                        //DataSet ds1 = new DataSet();
                        //sql = string.Empty;

                        //sql = " SELECT *";
                        //sql += " FROM BD_WorkingHour";
                        //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1";
                        //sql += " Order By Name";

                        //using (SqlCommand cm1 = db.CreateCommand(sql))
                        //{
                        //    SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                        //    da1.Fill(ds1);
                        //    db.Close();

                        //    if (ds != null)
                        //    {

                        //        xlsSheet[i++ + 1, 0].Value = "Ghi chú:";
                        //        DataTable dt1 = ds1.Tables[0];
                        //        foreach (DataRow rowType in dt1.Rows)
                        //        {
                        //            i++;
                        //            string Ma = rowType["WorkingHourId"].ToString();
                        //            string Name = rowType["Name"].ToString();
                        //            xlsSheet[i, 0].Value = Ma + ":";
                        //            xlsSheet[i, 1].Value = Name;
                        //        }
                        //        xlsSheet[i + 1, 0].Value = "OF:";
                        //        xlsSheet[i + 1, 1].Value = "OF: nghỉ";
                        //    }
                        //}
                        //string dataPath = HttpContext.Current.Server.MapPath(@"\Building\Staff\DataTmp");
                        //string tmpFolder = dataPath;
                        //if (!Directory.Exists(tmpFolder))
                        //{
                        //    Directory.CreateDirectory(tmpFolder);
                        //}
                        //string name = "KhaiBaoLichLamViec_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
                        //string fileName = Path.Combine(tmpFolder, name);
                        string fileName1 = HttpContext.Current.Server.MapPath(@"\Report\Template\THSLXT_tpl_1.xlsx");

                        xlbBook.Save(fileName1);
                        //Session["ZipFilePath"] = null;
                        //Session["ZipFilePath"] = fileName;

                        //ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../Staff/DataTmp/" + name + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
Example #7
0
        public void DoExport()
        {
            int rBillNo = 0;
            int cBillNo = 1;

            int rBillDate = 0;
            int cBillDate = 10;

            int rBillMonth = 2;
            int cBillMonth = 0;

            int rContact = 5;
            int cContact = 3;

            int rCustomer = 5;
            int cCustomer = 7;

            int rContract = 7;
            int cContract = 1;

            int rRate = 11;
            int cRate = 9;

            int rRateDate = 11;
            int cRateDate = 12;

            int rRent = 15;

            int rManager = 23;

            int rParking = 31;

            int rExtra = 39;

            int rElec = 47;

            int rWater = 55;

            int rService = 63;

            int rPaid = 70;

            int rDept = 77;

            int rOffice = 88;
            int cOffice = 3;

            int rPhone = 89;
            int cPhone = 3;

            int rBank = 88;
            int cBank = 7;

            int rAccountName = 89;
            int cAccountName = 7;

            int rAccount = 90;
            int cAccount = 7;

            int rSum = 81;
            int cSum = 12;

            int rSumVND = 80;
            int cSumVND = 12;

            int rSumRead = 82;
            int cSumRead = 13;

            ////
            using (SqlDatabase db = new SqlDatabase())
            {

                DataSet ds = new DataSet();
                DataSet dsCus = new DataSet();

                string sql = string.Empty;

                string Bank = "";
                string Account = "";
                string AccountName = "";
                string Office = "";
                string OfficeAddress = "";
                string OfficePhone = "";

                ds = new DataSet();
                sql = " SELECT Bank,Account,AccountName,Office,OfficeAddress,OfficePhone";
                sql += " FROM Mst_Building";
                sql += " WHERE BuildingId = '" + sBuildingId + "' ";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            Bank = rowType["Bank"].ToString();
                            Account = rowType["Account"].ToString();
                            AccountName = rowType["AccountName"].ToString();
                            Office = rowType["Office"].ToString();
                            OfficeAddress = rowType["OfficeAddress"].ToString();
                            OfficePhone = rowType["OfficePhone"].ToString();
                        }
                    }
                }

                //Danh sách Bill
                sql = "  Select BillDate,UsdExchangeDate,UsdExchange,BillNo,B.Name,B.ContactName,A.CustomerId, A.YearMonths, A.Id ";
                sql += " From	PaymentBillInfo A, Customer B";
                sql += " Where	A.BuildingId = B.BuildingId and A.CustomerId = B.CustomerId and B.DelFlag = 0 and A.BuildingId = '" + sBuildingId + "' and YearMonth = '" + sYearMonth + "'";

                string BillDate = "";
                string UsdExchangeDate = "";
                string UsdExchange = "";
                string BillNo = "";
                string Name = "";
                string ContactName = "";
                string CustomerId = "";
                string lsYearmonth = "";
                string id = "";

                string maxYearMonth = "";

                using (SqlCommand cmCus = db.CreateCommand(sql))
                {
                    SqlDataAdapter daCus = new SqlDataAdapter(cmCus);
                    daCus.Fill(dsCus);

                    if (dsCus != null)
                    {
                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");

                        DataTable dtCus = dsCus.Tables[0];
                        foreach (DataRow rowCus in dtCus.Rows)
                        {
                            BillDate = rowCus[0].ToString();
                            UsdExchangeDate = rowCus[1].ToString();
                            UsdExchange = rowCus[2].ToString();
                            BillNo = rowCus[3].ToString();
                            Name = rowCus[4].ToString();
                            ContactName = rowCus[5].ToString();
                            CustomerId = rowCus[6].ToString();
                            lsYearmonth = rowCus[7].ToString();
                            id = rowCus[8].ToString();

                            string[] strTmpYearMonth = lsYearmonth.Split(',');

                            for (int l = 0; l < strTmpYearMonth.Length; l++)
                            {
                                string tmp = strTmpYearMonth[l];
                                if (maxYearMonth == "")
                                    maxYearMonth = tmp;
                                if (maxYearMonth.CompareTo(tmp) < 0)
                                    maxYearMonth = tmp;
                            }

                            C1XLBook xlbBook = new C1XLBook();
                            //ShowData(drpYear.SelectedValue + drpMonth.SelectedValue);
                            XLStyle xlstStyle = new XLStyle(xlbBook);
                            xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                            xlstStyle.AlignVert = XLAlignVertEnum.Center;
                            xlstStyle.WordWrap = true;
                            xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyle.SetBorderColor(Color.Black);
                            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyle.BorderRight = XLLineStyleEnum.Thin;
                            xlstStyle.Format = "#,##0.00_);(#,##0.00)";

                            XLStyle xlstStyleH = new XLStyle(xlbBook);
                            xlstStyleH.AlignHorz = XLAlignHorzEnum.Center;
                            xlstStyleH.AlignVert = XLAlignVertEnum.Center;
                            xlstStyleH.Font = new Font("", 8, FontStyle.Bold);
                            xlstStyleH.SetBorderColor(Color.Black);
                            xlstStyleH.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleH.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleH.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyleH.BorderRight = XLLineStyleEnum.Thin;
                            xlstStyleH.WordWrap = true;

                            XLStyle xlstStyleSum = new XLStyle(xlbBook);
                            xlstStyleSum.AlignHorz = XLAlignHorzEnum.Right;
                            xlstStyleSum.AlignVert = XLAlignVertEnum.Center;
                            xlstStyleSum.Font = new Font("", 8, FontStyle.Bold);
                            xlstStyleSum.SetBorderColor(Color.Black);
                            xlstStyleSum.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleSum.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleSum.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyleSum.BorderRight = XLLineStyleEnum.Thin;
                            xlstStyleSum.WordWrap = true;

                            string fileName = sFilePath + @"\Template\BillTongQuat.xlsx";
                            if (!Directory.Exists(sFilePath + @"\Building\" + sBuildingId + @"\Bill"))
                            {
                                Directory.CreateDirectory(sFilePath + @"\Report\Building\" + sBuildingId + @"\Bill");
                            }

                            string strFilePath = sFilePath + @"\Building\" + sBuildingId + @"\Bill\Bill" + "_" + CustomerId + "_" + BillNo + id + "_" + strDT + ".xlsx";
                            string strFilePathExport = sFilePath.Replace(@"\", "/") + @"/Building/" + sBuildingId + @"/Bill/Bill" + "_" + CustomerId + "_" + BillNo + id + "_" + strDT + ".xlsx";

                            string fileNameDes = strFilePath;

                            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + sBuildingId + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
                            File.Copy(fileName, fileNameDes);

                            xlbBook.Load(fileNameDes);
                            XLSheet xlsSheet = xlbBook.Sheets["TongHop"];
                            XLSheet xlsSheetEn = xlbBook.Sheets["TongHop_En"];

                            //Thông tin về Ngân hàng của Tòa Nhà
                            xlsSheet[rOffice, cOffice].Value = xlsSheet[rOffice, cOffice].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheet[rPhone, cPhone].Value = xlsSheet[rPhone, cPhone].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheet[rBank, cBank].Value = xlsSheet[rBank, cBank].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheet[rAccountName, cAccountName].Value = xlsSheet[rAccountName, cAccountName].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheet[rAccount, cAccount].Value = xlsSheet[rAccount, cAccount].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);
                            //Thông tin về Ngân hàng của Tòa Nhà

                            //Customer
                            xlsSheet[rCustomer, cCustomer].Value = xlsSheet[rCustomer, cCustomer].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            //Contact
                            xlsSheet[rContact, cContact].Value = xlsSheet[rContact, cContact].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);

                            //Bill No
                            xlsSheet[rBillNo, cBillNo].Value = xlsSheet[rBillNo, cBillNo].Value.ToString().Replace("{%BILL_NO%}", BillNo);

                            ///////////////////////////////////////////
                            //Thông tin về Ngân hàng của Tòa Nhà
                            xlsSheetEn[rOffice, cOffice].Value = xlsSheetEn[rOffice, cOffice].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheetEn[rPhone, cPhone].Value = xlsSheetEn[rPhone, cPhone].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheetEn[rBank, cBank].Value = xlsSheetEn[rBank, cBank].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheetEn[rAccountName, cAccountName].Value = xlsSheetEn[rAccountName, cAccountName].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheetEn[rAccount, cAccount].Value = xlsSheetEn[rAccount, cAccount].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);
                            //Thông tin về Ngân hàng của Tòa Nhà

                            //Customer
                            xlsSheetEn[rCustomer, cCustomer].Value = xlsSheetEn[rCustomer, cCustomer].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            //Contact
                            xlsSheetEn[rContact, cContact].Value = xlsSheetEn[rContact, cContact].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);

                            //Bill No
                            xlsSheetEn[rBillNo, cBillNo].Value = xlsSheetEn[rBillNo, cBillNo].Value.ToString().Replace("{%BILL_NO%}", BillNo);
                            ///////////////////////////////////////////
                            //Ngay Thang Nam
                            DateTime dtime = DateTime.Today;

                            string strTmp = xlsSheet[rBillDate, cBillDate].Value.ToString().Replace("{%NGAY%}", dtime.ToString("dd"));
                            strTmp = strTmp.Replace("{%THANG%}", dtime.ToString("MM"));
                            xlsSheet[rBillDate, cBillDate].Value = strTmp.Replace("{%NAM%}", dtime.ToString("yyyy"));

                            strTmp = xlsSheetEn[rBillDate, cBillDate].Value.ToString().Replace("{%NGAY%}", dtime.ToString("dd"));
                            strTmp = strTmp.Replace("{%THANG%}", dtime.ToString("MM"));
                            xlsSheetEn[rBillDate, cBillDate].Value = strTmp.Replace("{%NAM%}", dtime.ToString("yyyy"));

                            //Nam
                            xlsSheet[rBillMonth, cBillMonth].Value = xlsSheet[rBillMonth, cBillMonth].Value.ToString().Replace("{%NAM_THANG%}", sMonth + "/" + sYear);
                            xlsSheetEn[rBillMonth, cBillMonth].Value = xlsSheetEn[rBillMonth, cBillMonth].Value.ToString().Replace("{%NAM_THANG%}", sMonth + "/" + sYear);

                            //Thông tin Tỉ giá
                            xlsSheet[rRate, cRate].Value = xlsSheet[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", UsdExchange);
                            xlsSheet[rRateDate, cRateDate].Value = xlsSheet[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", UsdExchangeDate);
                            //Thông tin Tỉ giá
                            xlsSheetEn[rRate, cRate].Value = xlsSheetEn[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", UsdExchange);
                            xlsSheetEn[rRateDate, cRateDate].Value = xlsSheetEn[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", UsdExchangeDate);

                            Hashtable contractIdLst = new Hashtable();
                            string contract = "";
                            ////

                            //Thue phong
                            ds = new DataSet();
                            sql = " Select A.*, B.ContractDate";
                            sql += " FROM PaymentRoom A, RentContract B";
                            sql += " WHERE A.ContractId = B.ContractId and A.BuildingId = B.BuildingId and A.BuildingId = '" + sBuildingId + "' and A.CustomerId = '" + CustomerId + "' and A.YearMonth in (" + lsYearmonth + ")";

                            int sumRow = 0;
                            int j = 0;
                            decimal[] LastSumPriceVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                            decimal[] LastSumPriceUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                            decimal PaidPriceVND = 0;
                            decimal PaidPriceUSD = 0;

                            int line = 0;
                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);

                                line = rRent - 3 + j;

                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];
                                    int k = 0;
                                    foreach (DataRow rowType in dt.Rows)
                                    {
                                        decimal tmp01 = Convert.ToDecimal(rowType["LastRentSumUSD"]);
                                        decimal tmp02 = Convert.ToDecimal(rowType["LastRentSumVND"]);

                                        string ContractId = Func.ParseString(rowType["ContractId"]);
                                        string ContractNo = Func.ParseString(rowType["ContractNo"]);
                                        string YearMonth = Func.ParseString(rowType["YearMonth"]);
                                        string Area = Func.ParseString(rowType["Area"]);
                                        string Regional = Func.ParseString(rowType["Regional"]);
                                        string Floor = Func.ParseString(rowType["Floor"]);
                                        string BeginContract = Func.ParseString(rowType["ContractDate"]);

                                        if (!contractIdLst.ContainsKey(ContractId + "(" + Func.FormatDMY(BeginContract) + ")"))
                                        {
                                            contractIdLst.Add(ContractId + "(" + Func.FormatDMY(BeginContract) + ")", ContractNo + "(" + Func.FormatDMY(BeginContract) + ")");
                                            contract += ";" + ContractNo + "(" + Func.FormatDMY(BeginContract) + ")";
                                        }
                                        if (tmp01 > 0 || tmp02 > 0)
                                        {

                                            if (count >= 1)
                                            {
                                                xlsSheet.Rows.Insert(rRent + 1 + j);
                                                xlsSheetEn.Rows.Insert(rRent + 1 + j);
                                                j++;
                                            }
                                            count++;
                                            int tmp = rRent + j;
                                            xlsSheet[tmp, 1].Value = Name;
                                            xlsSheet[tmp, 4].Value = rowType["Area"];
                                            xlsSheet[tmp, 6].Value = rowType["MonthRentPriceUSD"];
                                            xlsSheet[tmp, 7].Value = rowType["MonthRentPriceVND"];

                                            xlsSheet[tmp, 8].Value = rowType["MonthRentSumUSD"];
                                            xlsSheet[tmp, 9].Value = rowType["MonthRentSumVND"];

                                            xlsSheet[tmp, 10].Value = rowType["VatRentPriceUSD"];
                                            xlsSheet[tmp, 11].Value = rowType["VatRentPriceVND"];

                                            xlsSheet[tmp, 12].Value = rowType["LastRentSumUSD"];
                                            xlsSheet[tmp, 13].Value = rowType["LastRentSumVND"];

                                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                            xlsSheet.MergedCells.Add(mrCell);

                                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                            xlsSheet.MergedCells.Add(mrCell);

                                            ////EN
                                            xlsSheetEn[tmp, 1].Value = Name;
                                            xlsSheetEn[tmp, 4].Value = rowType["Area"];
                                            xlsSheetEn[tmp, 6].Value = rowType["MonthRentPriceUSD"];
                                            xlsSheetEn[tmp, 7].Value = rowType["MonthRentPriceVND"];

                                            xlsSheetEn[tmp, 8].Value = rowType["MonthRentSumUSD"];
                                            xlsSheetEn[tmp, 9].Value = rowType["MonthRentSumVND"];

                                            xlsSheetEn[tmp, 10].Value = rowType["VatRentPriceUSD"];
                                            xlsSheetEn[tmp, 11].Value = rowType["VatRentPriceVND"];

                                            xlsSheetEn[tmp, 12].Value = rowType["LastRentSumUSD"];
                                            xlsSheetEn[tmp, 13].Value = rowType["LastRentSumVND"];

                                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                            xlsSheetEn.MergedCells.Add(mrCell);

                                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                            xlsSheetEn.MergedCells.Add(mrCell);
                                            ////EN

                                            LastSumPriceVND[0] += Convert.ToDecimal(rowType["LastRentSumVND"]);
                                            LastSumPriceUSD[0] += Convert.ToDecimal(rowType["LastRentSumUSD"]);
                                        }
                                        else
                                        {
                                            k++;
                                        }
                                    }
                                    mCell = new XLCellRange(rRent + 1 + j, rRent + 1 + j, 1, 11);
                                    xlsSheet.MergedCells.Add(mCell);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    xlsSheet[rRent + 1 + j, 12].Value = LastSumPriceUSD[0];
                                    xlsSheet[rRent + 1 + j, 13].Value = LastSumPriceVND[0];

                                    xlsSheetEn[rRent + 1 + j, 12].Value = LastSumPriceUSD[0];
                                    xlsSheetEn[rRent + 1 + j, 13].Value = LastSumPriceVND[0];

                                    for (int row = rRent + sumRow; row <= rRent + dt.Rows.Count - k; row++)
                                    {
                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[row, col].Style = xlstStyle;
                                            xlsSheetEn[row, col].Style = xlstStyle;
                                        }
                                    }
                                    sumRow += dt.Rows.Count - 1 - k;

                                    ////////////////////////
                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[rRent + 1 + j, col].Style = xlstStyleSum;
                                        xlsSheetEn[rRent + 1 + j, col].Style = xlstStyleSum;
                                    }
                                    line = rManager - 3 + j;
                                    mCell = new XLCellRange(line, line + 2, 1, 3);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 4, 5);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 6, 7);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 8, 9);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 10, 11);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 12, 13);
                                    xlsSheet.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                    xlsSheet.MergedCells.Add(mCell);

                                    ////En
                                    mCell = new XLCellRange(line, line + 2, 1, 3);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 4, 5);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 6, 7);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 8, 9);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 10, 11);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line, line, 12, 13);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                    xlsSheetEn.MergedCells.Add(mCell);
                                    ////En
                                    k = 0;
                                    count = 0;
                                    foreach (DataRow row in dt.Rows)
                                    {
                                        decimal tmp01 = Convert.ToDecimal(row["LastManagerSumUSD"]);
                                        decimal tmp02 = Convert.ToDecimal(row["LastManagerSumVND"]);

                                        if (tmp01 > 0 || tmp02 > 0)
                                        {

                                            if (count >= 1)
                                            {
                                                xlsSheet.Rows.Insert(rManager + 1 + j);
                                                xlsSheetEn.Rows.Insert(rManager + 1 + j);
                                                j++;
                                            }
                                            count++;
                                            int tmp = rManager + j;

                                            string YearMonth = Func.ParseString(row["YearMonth"]);
                                            string Area = Func.ParseString(row["Area"]);

                                            xlsSheet[tmp, 1].Value = Name;
                                            xlsSheet[tmp, 4].Value = row["Area"];
                                            xlsSheet[tmp, 6].Value = row["MonthManagerPriceUSD"];
                                            xlsSheet[tmp, 7].Value = row["MonthManagerPriceVND"];

                                            xlsSheet[tmp, 8].Value = row["MonthManagerSumUSD"];
                                            xlsSheet[tmp, 9].Value = row["MonthManagerSumVND"];

                                            xlsSheet[tmp, 10].Value = row["VatManagerPriceUSD"];
                                            xlsSheet[tmp, 11].Value = row["VatManagerPriceVND"];

                                            xlsSheet[tmp, 12].Value = row["LastManagerSumUSD"];
                                            xlsSheet[tmp, 13].Value = row["LastManagerSumVND"];

                                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                            xlsSheet.MergedCells.Add(mrCell);

                                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                            xlsSheet.MergedCells.Add(mrCell);

                                            ////En
                                            xlsSheetEn[tmp, 1].Value = Name;
                                            xlsSheetEn[tmp, 4].Value = row["Area"];
                                            xlsSheetEn[tmp, 6].Value = row["MonthManagerPriceUSD"];
                                            xlsSheetEn[tmp, 7].Value = row["MonthManagerPriceVND"];

                                            xlsSheetEn[tmp, 8].Value = row["MonthManagerSumUSD"];
                                            xlsSheetEn[tmp, 9].Value = row["MonthManagerSumVND"];

                                            xlsSheetEn[tmp, 10].Value = row["VatManagerPriceUSD"];
                                            xlsSheetEn[tmp, 11].Value = row["VatManagerPriceVND"];

                                            xlsSheetEn[tmp, 12].Value = row["LastManagerSumUSD"];
                                            xlsSheetEn[tmp, 13].Value = row["LastManagerSumVND"];

                                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                            xlsSheetEn.MergedCells.Add(mrCell);

                                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                            xlsSheetEn.MergedCells.Add(mrCell);
                                            ////En
                                            LastSumPriceVND[1] += Convert.ToDecimal(row["LastManagerSumVND"]);
                                            LastSumPriceUSD[1] += Convert.ToDecimal(row["LastManagerSumUSD"]);
                                        }
                                        else { k++; }
                                    }
                                    mCell = new XLCellRange(rManager + 1 + j, rManager + 1 + j, 1, 11);
                                    xlsSheet.MergedCells.Add(mCell);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    xlsSheet[rManager + 1 + j, 12].Value = LastSumPriceUSD[1];
                                    xlsSheet[rManager + 1 + j, 13].Value = LastSumPriceVND[1];

                                    xlsSheetEn[rManager + 1 + j, 12].Value = LastSumPriceUSD[1];
                                    xlsSheetEn[rManager + 1 + j, 13].Value = LastSumPriceVND[1];

                                    for (int row = rManager + sumRow; row <= rManager + sumRow + dt.Rows.Count - k; row++)
                                    {
                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[row, col].Style = xlstStyle;
                                            xlsSheetEn[row, col].Style = xlstStyle;
                                        }
                                    }

                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[rManager + 1 + j, col].Style = xlstStyleSum;
                                        xlsSheetEn[rManager + 1 + j, col].Style = xlstStyleSum;
                                    }
                                    sumRow += dt.Rows.Count - 1 - k;
                                }
                            }

                            ds = new DataSet();
                            //Xuất ra toàn bộ nội dung theo Trang
                            sql = " SELECT COUNT(*) AS Num, YearMonth, TariffsParkingName, PriceVND, PriceUSD, SUM(VatVND) AS VatVND,SUM(VatUSD) AS VatUSD, SUM(SumVND) AS SumVND, SUM(SumUSD) AS SumUSD, SUM(LastPriceVND) AS LastPriceVND";
                            sql += "        , SUM(LastPriceUSD) AS LastPriceUSD";
                            sql += " FROM         dbo.PaymentParking";
                            sql += " WHERE BuildingId = '" + sBuildingId + "' and CustomerId = '" + CustomerId + "' and YearMonth in (" + lsYearmonth + ")";

                            sql += " GROUP BY YearMonth, TariffsParkingName, PriceVND, PriceUSD, Vat, daysParking";
                            sql += " HAVING (SUM(LastPriceVND) >0 or SUM(LastPriceUSD) >0)";
                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);

                                line = rParking - 3 + j;
                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                ////En
                                mCell = new XLCellRange(line, line + 2, 1, 3);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 4, 5);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);
                                ////En
                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];

                                    foreach (DataRow row in dt.Rows)
                                    {
                                        if (count >= 1)
                                        {
                                            xlsSheet.Rows.Insert(rParking + 1 + j);
                                            xlsSheetEn.Rows.Insert(rParking + 1 + j);
                                            j++;
                                        }
                                        count++;
                                        int tmp = rParking + j;

                                        string Num = Func.ParseString(row["Num"]);
                                        string TariffsParkingName = Func.ParseString(row["TariffsParkingName"]);

                                        xlsSheet[tmp, 1].Value = TariffsParkingName;
                                        xlsSheet[tmp, 4].Value = Num;
                                        xlsSheet[tmp, 6].Value = row["PriceUSD"];
                                        xlsSheet[tmp, 7].Value = row["PriceVND"];

                                        xlsSheet[tmp, 8].Value = row["SumUSD"];
                                        xlsSheet[tmp, 9].Value = row["SumVND"];

                                        xlsSheet[tmp, 10].Value = row["VatUSD"];
                                        xlsSheet[tmp, 11].Value = row["VatVND"];

                                        xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                                        xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                                        XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                        xlsSheet.MergedCells.Add(mrCell);

                                        mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                        xlsSheet.MergedCells.Add(mrCell);

                                        /////En
                                        xlsSheetEn[tmp, 1].Value = TariffsParkingName;
                                        xlsSheetEn[tmp, 4].Value = Num;
                                        xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                                        xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                                        xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                                        xlsSheetEn[tmp, 9].Value = row["SumVND"];

                                        xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                                        xlsSheetEn[tmp, 11].Value = row["VatVND"];

                                        xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                                        xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];

                                        mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                        xlsSheetEn.MergedCells.Add(mrCell);

                                        mrCell = new XLCellRange(tmp, tmp, 4, 5);
                                        xlsSheetEn.MergedCells.Add(mrCell);
                                        /////En
                                        LastSumPriceVND[2] += Convert.ToDecimal(row["LastPriceVND"]);
                                        LastSumPriceUSD[2] += Convert.ToDecimal(row["LastPriceUSD"]);
                                    }
                                    xlsSheet[rParking + 1 + j, 12].Value = LastSumPriceUSD[2];
                                    xlsSheet[rParking + 1 + j, 13].Value = LastSumPriceVND[2];

                                    mCell = new XLCellRange(rParking + 1 + j, rParking + 1 + j, 1, 11);
                                    xlsSheet.MergedCells.Add(mCell);

                                    /////En
                                    xlsSheetEn[rParking + 1 + j, 12].Value = LastSumPriceUSD[2];
                                    xlsSheetEn[rParking + 1 + j, 13].Value = LastSumPriceVND[2];

                                    mCell = new XLCellRange(rParking + 1 + j, rParking + 1 + j, 1, 11);
                                    xlsSheetEn.MergedCells.Add(mCell);
                                    /////En

                                    for (int row = rParking + sumRow; row <= rParking + sumRow + dt.Rows.Count; row++)
                                    {
                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[row, col].Style = xlstStyle;
                                            xlsSheetEn[row, col].Style = xlstStyle;
                                        }
                                    }

                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[rParking + 1 + j, col].Style = xlstStyleSum;
                                        xlsSheetEn[rParking + 1 + j, col].Style = xlstStyleSum;
                                    }
                                    sumRow += dt.Rows.Count - 1;
                                }
                            }

                            ds = new DataSet();
                            sql = "SELECT id";
                            sql += " ,YearMonth,BuildingId,CustomerId,RoomId,ExtraHour,VAT,OtherFee01,OtherFee02";
                            sql += " ,PriceUSD,PriceVND,VatUSD,VatVND,SumUSD,SumVND,IsNull(LastPriceUSD,0) LastPriceUSD      ,IsNull(LastPriceVND,0) LastPriceVND ";
                            sql += " ,RentArea,dbo.fnDateTime(FromWD) BeginDate,dbo.fnDateTime(EndWD) EndDate,ExtratimeType";
                            sql += " FROM PaymentExtraTimeMonth";
                            sql += " WHERE BuildingId = '" + sBuildingId + "' and CustomerId = '" + CustomerId + "' and YearMonth in (" + lsYearmonth + ")";

                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);
                                line = rExtra - 3 + j;
                                //Phi dien
                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 4, 4);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                /////En
                                mCell = new XLCellRange(line, line + 2, 1, 3);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 4, 4);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);
                                /////En
                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];

                                    foreach (DataRow row in dt.Rows)
                                    {
                                        if (count >= 1)
                                        {
                                            xlsSheet.Rows.Insert(rExtra + 1 + j);
                                            xlsSheetEn.Rows.Insert(rExtra + 1 + j);
                                            j++;
                                        }
                                        count++;
                                        int tmp = rExtra + j;

                                        string ExtraHour = Func.ParseString(row["ExtraHour"]);
                                        string BeginDate = Func.ParseString(row["BeginDate"]);
                                        string EndDate = Func.ParseString(row["EndDate"]);

                                        string ExtratimeType = Func.ParseString(row["ExtratimeType"]);

                                        xlsSheet[tmp, 1].Value = BeginDate + "~" + EndDate;
                                        xlsSheet[tmp, 5].Value = ExtraHour;

                                        xlsSheet[tmp, 4].Value = "Diện tích";
                                        if ("0".Equals(ExtratimeType))
                                        {
                                            xlsSheet[tmp, 4].Value = "m2*h";
                                        }
                                        xlsSheet[tmp, 6].Value = row["PriceUSD"];
                                        xlsSheet[tmp, 7].Value = row["PriceVND"];

                                        xlsSheet[tmp, 8].Value = row["SumUSD"];
                                        xlsSheet[tmp, 9].Value = row["SumVND"];

                                        xlsSheet[tmp, 10].Value = row["VatUSD"];
                                        xlsSheet[tmp, 11].Value = row["VatVND"];

                                        xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                                        xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                                        LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);
                                        LastSumPriceUSD[3] += Convert.ToDecimal(row["LastPriceUSD"]);

                                        XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                        xlsSheet.MergedCells.Add(mrCell);
                                        //////En
                                        xlsSheetEn[tmp, 1].Value = BeginDate + "~" + EndDate;
                                        xlsSheetEn[tmp, 5].Value = ExtraHour;

                                        xlsSheetEn[tmp, 4].Value = "Di?n tích";
                                        if ("0".Equals(ExtratimeType))
                                        {
                                            xlsSheetEn[tmp, 4].Value = "m2*h";
                                        }
                                        xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                                        xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                                        xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                                        xlsSheetEn[tmp, 9].Value = row["SumVND"];

                                        xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                                        xlsSheetEn[tmp, 11].Value = row["VatVND"];

                                        xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                                        xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];

                                        //LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);
                                        //LastSumPriceUSD[3] += Convert.ToDecimal(row["LastPriceUSD"]);

                                        mrCell = new XLCellRange(tmp, tmp, 1, 3);
                                        xlsSheetEn.MergedCells.Add(mrCell);
                                        //////En

                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[tmp, col].Style = xlstStyle;
                                            xlsSheetEn[tmp, col].Style = xlstStyle;
                                        }

                                    }
                                    mCell = new XLCellRange(rExtra + 1 + j, rExtra + 1 + j, 1, 11);
                                    xlsSheet.MergedCells.Add(mCell);
                                    xlsSheetEn.MergedCells.Add(mCell);

                                    xlsSheet[rExtra + 1 + j, 12].Value = LastSumPriceUSD[3];
                                    xlsSheet[rExtra + 1 + j, 13].Value = LastSumPriceVND[3];

                                    xlsSheetEn[rExtra + 1 + j, 12].Value = LastSumPriceUSD[3];
                                    xlsSheetEn[rExtra + 1 + j, 13].Value = LastSumPriceVND[3];

                                    for (int row = rExtra + sumRow; row <= rExtra + sumRow + dt.Rows.Count; row++)
                                    {
                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[row, col].Style = xlstStyle;
                                            xlsSheetEn[row, col].Style = xlstStyle;
                                        }
                                    }

                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[rExtra + 1 + j, col].Style = xlstStyleSum;
                                        xlsSheetEn[rExtra + 1 + j, col].Style = xlstStyleSum;
                                    }
                                    sumRow += dt.Rows.Count - 1;
                                }
                            }

                            ds = new DataSet();
                            //Dien
                            //Xuất ra toàn bộ nội dung theo Trang
                            sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                            sql += "        B.VatVND, B.VatUSD ,IsNull(B.LastPriceUSD,0) LastPriceUSD      ,IsNull(B.LastPriceVND,0) LastPriceVND , B.Name, B.WaterPricePercent,B.ElecPricePercent ";
                            sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                            sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                            sql += " WHERE A.BuildingId = '" + sBuildingId + "' and A.CustomerId = '" + CustomerId + "' and TarrifsOfWaterId = 0  and A.YearMonth in (" + lsYearmonth + ")";
                            sql += " Order by A.DateFrom, B.FromIndex";

                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);

                                line = rElec - 3 + j;
                                //Phi dien
                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                /////En
                                mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);
                                /////En

                                for (int col = 1; col < 13; col++)
                                {
                                    xlsSheet[line, col].Style = xlstStyleH;
                                    xlsSheet[line + 1, col].Style = xlstStyleH;
                                    xlsSheet[line + 2, col].Style = xlstStyleH;

                                    xlsSheetEn[line, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 1, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 2, col].Style = xlstStyleH;
                                }

                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];
                                    if (dt.Rows.Count > 0)
                                    {
                                        foreach (DataRow row in dt.Rows)
                                        {
                                            if (count >= 1)
                                            {
                                                xlsSheet.Rows.Insert(rElec + 1 + j);
                                                xlsSheetEn.Rows.Insert(rElec + 1 + j);
                                                j++;

                                            }
                                            count++;
                                            int tmp = rElec + j;

                                            string DateFrom = Func.ParseString(row["DateFrom"]);
                                            string DateTo = Func.ParseString(row["DateTo"]);

                                            string FromIndex = Func.ParseString(row["FromIndex"]);
                                            string ToIndex = Func.ParseString(row["ToIndex"]);
                                            string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                            string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                            string Mount = Func.ParseString(row["Mount"]);
                                            string ElecPricePercent = Func.ParseString(row["ElecPricePercent"]);

                                            xlsSheet[tmp, 1].Value = DateFrom;
                                            xlsSheet[tmp, 2].Value = DateTo;
                                            xlsSheet[tmp, 3].Value = FromIndex;
                                            xlsSheet[tmp, 4].Value = ToIndex;
                                            xlsSheet[tmp, 5].Value = OtherFee01;
                                            xlsSheet[tmp, 6].Value = Mount;
                                            xlsSheet[tmp, 7].Value = row["PriceVND"];
                                            xlsSheet[tmp, 8].Value = row["VatVND"];

                                            xlsSheet[tmp, 9].Value = row["SumVND"];
                                            xlsSheet[tmp, 10].Value = row["OtherFee02"];
                                            xlsSheet[tmp, 11].Value = row["ElecPricePercent"];
                                            xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                                            mCell = new XLCellRange(tmp, tmp, 12, 13);
                                            xlsSheet.MergedCells.Add(mCell);

                                            /////En
                                            xlsSheetEn[tmp, 1].Value = DateFrom;
                                            xlsSheetEn[tmp, 2].Value = DateTo;
                                            xlsSheetEn[tmp, 3].Value = FromIndex;
                                            xlsSheetEn[tmp, 4].Value = ToIndex;
                                            xlsSheetEn[tmp, 5].Value = OtherFee01;
                                            xlsSheetEn[tmp, 6].Value = Mount;
                                            xlsSheetEn[tmp, 7].Value = row["PriceVND"];
                                            xlsSheetEn[tmp, 8].Value = row["VatVND"];

                                            xlsSheetEn[tmp, 9].Value = row["SumVND"];
                                            xlsSheetEn[tmp, 10].Value = row["OtherFee02"];
                                            xlsSheetEn[tmp, 11].Value = row["ElecPricePercent"];
                                            xlsSheetEn[tmp, 12].Value = row["LastPriceVND"];

                                            mCell = new XLCellRange(tmp, tmp, 12, 13);
                                            xlsSheetEn.MergedCells.Add(mCell);
                                            /////En
                                            for (int col = 1; col <= 12; col++)
                                            {
                                                xlsSheet[tmp, col].Style = xlstStyle;
                                                xlsSheetEn[tmp, col].Style = xlstStyle;
                                            }
                                            LastSumPriceVND[4] += Convert.ToDecimal(row["LastPriceVND"]);
                                            LastSumPriceUSD[4] += Convert.ToDecimal(row["LastPriceUSD"]);
                                        }
                                        xlsSheet[rElec + 1 + j, 12].Value = LastSumPriceVND[4];
                                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 1, 11);
                                        xlsSheet.MergedCells.Add(mCell);

                                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 12, 13);
                                        xlsSheet.MergedCells.Add(mCell);

                                        xlsSheetEn[rElec + 1 + j, 12].Value = LastSumPriceVND[4];
                                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 1, 11);
                                        xlsSheetEn.MergedCells.Add(mCell);

                                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 12, 13);
                                        xlsSheetEn.MergedCells.Add(mCell);

                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[rElec + 1 + j, col].Style = xlstStyleSum;
                                            xlsSheetEn[rElec + 1 + j, col].Style = xlstStyleSum;
                                        }
                                        sumRow += dt.Rows.Count - 1;
                                    }
                                }
                            }

                            ds = new DataSet();
                            //Nuoc
                            //Xuất ra toàn bộ nội dung theo Trang
                            sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                            sql += "        B.VatVND, B.VatUSD,IsNull(B.LastPriceUSD,0) LastPriceUSD,IsNull(B.LastPriceVND,0) LastPriceVND, B.Name, B.WaterPricePercent,B.ElecPricePercent  ";
                            sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                            sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                            sql += " WHERE A.BuildingId = '" + sBuildingId + "' and A.CustomerId = '" + CustomerId + "' and TarrifsOfElecId = 0 and A.YearMonth in (" + lsYearmonth + ")";
                            sql += " Order by A.DateFrom, B.FromIndex";

                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);
                                line = rWater - 3 + j;
                                //Phi dien
                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 6, 6);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                /////En
                                mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 6, 6);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);
                                /////En

                                for (int col = 1; col < 13; col++)
                                {
                                    xlsSheet[line, col].Style = xlstStyleH;
                                    xlsSheet[line + 1, col].Style = xlstStyleH;
                                    xlsSheet[line + 2, col].Style = xlstStyleH;

                                    xlsSheetEn[line, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 1, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 2, col].Style = xlstStyleH;
                                }

                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];
                                    if (dt.Rows.Count > 0)
                                    {
                                        foreach (DataRow row in dt.Rows)
                                        {
                                            if (count >= 1)
                                            {
                                                xlsSheet.Rows.Insert(rWater + 1 + j);
                                                xlsSheetEn.Rows.Insert(rWater + 1 + j);
                                                j++;
                                            }
                                            count++;
                                            int tmp = rWater + j;

                                            string DateFrom = Func.ParseString(row["DateFrom"]);
                                            string DateTo = Func.ParseString(row["DateTo"]);

                                            string FromIndex = Func.ParseString(row["FromIndex"]);
                                            string ToIndex = Func.ParseString(row["ToIndex"]);
                                            string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                            string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                            string Mount = Func.ParseString(row["Mount"]);

                                            xlsSheet[tmp, 1].Value = DateFrom;
                                            xlsSheet[tmp, 2].Value = DateTo;
                                            xlsSheet[tmp, 3].Value = FromIndex;
                                            xlsSheet[tmp, 4].Value = ToIndex;
                                            xlsSheet[tmp, 5].Value = Mount;
                                            xlsSheet[tmp, 6].Value = row["PriceVND"];
                                            xlsSheet[tmp, 7].Value = row["OtherFee01"];
                                            xlsSheet[tmp, 8].Value = row["VatVND"];

                                            xlsSheet[tmp, 9].Value = row["SumVND"];
                                            xlsSheet[tmp, 10].Value = row["OtherFee02"];
                                            xlsSheet[tmp, 11].Value = row["WaterPricePercent"];
                                            xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                                            /////En
                                            xlsSheetEn[tmp, 1].Value = DateFrom;
                                            xlsSheetEn[tmp, 2].Value = DateTo;
                                            xlsSheetEn[tmp, 3].Value = FromIndex;
                                            xlsSheetEn[tmp, 4].Value = ToIndex;
                                            xlsSheetEn[tmp, 5].Value = Mount;
                                            xlsSheetEn[tmp, 6].Value = row["PriceVND"];
                                            xlsSheetEn[tmp, 7].Value = row["OtherFee01"];
                                            xlsSheetEn[tmp, 8].Value = row["VatVND"];

                                            xlsSheetEn[tmp, 9].Value = row["SumVND"];
                                            xlsSheetEn[tmp, 10].Value = row["OtherFee02"];
                                            xlsSheetEn[tmp, 11].Value = row["WaterPricePercent"];
                                            xlsSheetEn[tmp, 12].Value = row["LastPriceVND"];

                                            /////En
                                            for (int col = 1; col <= 12; col++)
                                            {
                                                xlsSheet[tmp, col].Style = xlstStyle;
                                                xlsSheetEn[tmp, col].Style = xlstStyle;
                                            }
                                            LastSumPriceVND[5] += Convert.ToDecimal(row["LastPriceVND"]);
                                            LastSumPriceUSD[5] += Convert.ToDecimal(row["LastPriceUSD"]);

                                            mCell = new XLCellRange(tmp, tmp, 12, 13);
                                            xlsSheet.MergedCells.Add(mCell);
                                            xlsSheetEn.MergedCells.Add(mCell);
                                        }
                                        xlsSheet[rWater + 1 + j, 12].Value = LastSumPriceVND[5];
                                        xlsSheetEn[rWater + 1 + j, 12].Value = LastSumPriceVND[5];
                                        mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 1, 11);
                                        xlsSheet.MergedCells.Add(mCell);
                                        xlsSheetEn.MergedCells.Add(mCell);

                                        mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 12, 13);
                                        xlsSheet.MergedCells.Add(mCell);
                                        xlsSheetEn.MergedCells.Add(mCell);

                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[rWater + 1 + j, col].Style = xlstStyleSum;
                                            xlsSheetEn[rWater + 1 + j, col].Style = xlstStyleSum;
                                        }
                                        sumRow += dt.Rows.Count - 1;
                                    }
                                }
                            }

                            //Service
                            ds = new DataSet();

                            sql = string.Empty;
                            sql = " SELECT Service,dbo.fnDateTime(ServiceDateFrom) ServiceDateFrom,dbo.fnDateTime(ServiceDateTo) ServiceDateTo,PriceVND,PriceUSD,VatUSD,VatVND,Mount,Unit,SumVND,SumUSD,isnull(LastPriceVND,0) LastPriceVND,isnull(LastPriceUSD,0) LastPriceUSD";
                            sql += " FROM   PaymentService";
                            sql += " WHERE BuildingId = '" + sBuildingId + "' and CustomerId = '" + CustomerId + "' and YearMonth in (" + lsYearmonth + ")";
                            sql += " Order By ServiceDate ";

                            using (SqlCommand cm = db.CreateCommand(sql))
                            {
                                SqlDataAdapter da = new SqlDataAdapter(cm);
                                da.Fill(ds);
                                line = rService - 3 + j;
                                //Phi khác
                                XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 3, 3);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 4, 4);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheet.MergedCells.Add(mCell);

                                /////En
                                mCell = new XLCellRange(line, line + 2, 1, 1);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 2, 2);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 3, 3);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line + 2, 4, 4);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line, line, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                                xlsSheetEn.MergedCells.Add(mCell);
                                /////En
                                for (int col = 1; col < 13; col++)
                                {
                                    xlsSheet[line, col].Style = xlstStyleH;
                                    xlsSheet[line + 1, col].Style = xlstStyleH;
                                    xlsSheet[line + 2, col].Style = xlstStyleH;

                                    xlsSheetEn[line, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 1, col].Style = xlstStyleH;
                                    xlsSheetEn[line + 2, col].Style = xlstStyleH;
                                }
                                mCell = new XLCellRange(line, line, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);

                                if (ds != null)
                                {
                                    int count = 0;
                                    DataTable dt = ds.Tables[0];

                                    if (dt.Rows.Count > 0)
                                    {

                                        foreach (DataRow row in dt.Rows)
                                        {
                                            if (count >= 1)
                                            {
                                                xlsSheet.Rows.Insert(rService + 1 + j);
                                                xlsSheetEn.Rows.Insert(rService + 1 + j);
                                                j++;
                                            }
                                            count++;
                                            int tmp = rService + j;

                                            string Service = Func.ParseString(row["Service"]);
                                            string ServiceDateFrom = Func.ParseString(row["ServiceDateFrom"]);
                                            string ServiceDateTo = Func.ParseString(row["ServiceDateTo"]);

                                            string Mount = Func.ParseString(row["Mount"]);

                                            xlsSheet[tmp, 1].Value = Service;
                                            xlsSheet[tmp, 2].Value = Func.ParseString(row["Unit"]);
                                            xlsSheet[tmp, 3].Value = ServiceDateFrom;
                                            xlsSheet[tmp, 4].Value = ServiceDateTo;
                                            xlsSheet[tmp, 5].Value = Mount;

                                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                                            xlsSheet[tmp, 9].Value = row["SumVND"];

                                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                                            xlsSheet[tmp, 11].Value = row["VatVND"];

                                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                                            /////En
                                            xlsSheetEn[tmp, 1].Value = Service;
                                            xlsSheetEn[tmp, 2].Value = Func.ParseString(row["Unit"]);
                                            xlsSheetEn[tmp, 3].Value = ServiceDateFrom;
                                            xlsSheetEn[tmp, 4].Value = ServiceDateTo;
                                            xlsSheetEn[tmp, 5].Value = Mount;

                                            xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                                            xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                                            xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                                            xlsSheetEn[tmp, 9].Value = row["SumVND"];

                                            xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                                            xlsSheetEn[tmp, 11].Value = row["VatVND"];

                                            xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                                            xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];
                                            /////En

                                            for (int col = 1; col <= 13; col++)
                                            {
                                                xlsSheet[tmp, col].Style = xlstStyle;
                                                xlsSheetEn[tmp, col].Style = xlstStyle;
                                            }
                                            LastSumPriceVND[6] += Convert.ToDecimal(row["LastPriceVND"]);
                                            LastSumPriceUSD[6] += Convert.ToDecimal(row["LastPriceUSD"]);
                                        }
                                        xlsSheet[rService + 1 + j, 12].Value = LastSumPriceUSD[6];
                                        xlsSheet[rService + 1 + j, 13].Value = LastSumPriceVND[6];

                                        xlsSheetEn[rService + 1 + j, 12].Value = LastSumPriceUSD[6];
                                        xlsSheetEn[rService + 1 + j, 13].Value = LastSumPriceVND[6];

                                        mCell = new XLCellRange(rService + 1 + j, rService + 1 + j, 1, 11);
                                        xlsSheet.MergedCells.Add(mCell);
                                        xlsSheetEn.MergedCells.Add(mCell);

                                        for (int col = 1; col <= 13; col++)
                                        {
                                            xlsSheet[rService + 1 + j, col].Style = xlstStyleSum;
                                            xlsSheetEn[rService + 1 + j, col].Style = xlstStyleSum;
                                        }
                                        sumRow += dt.Rows.Count - 1;
                                    }
                                }
                            }

                            //Paid
                            sql = "Select  *";
                            sql += " From    PaymentBillDetail";
                            sql += " Where   BuildingId = '" + sBuildingId + "' and CustomerId = '" + CustomerId + "' and YearMonth in (" + lsYearmonth + ") and YearMonth < " + maxYearMonth + "";
                            string strYearMonth = "";
                            int lineTmp = rPaid - 2 + j;

                            //Paid
                            XLCellRange mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            /////En
                            mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                            xlsSheetEn.MergedCells.Add(mCellTmp);
                            /////En
                            Hashtable rowNo = new Hashtable();
                            decimal[] PaidSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                            decimal[] PaidSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                            DataTable dtPaid = DbHelper.GetDataTable(sql);
                            for (int i = 0; i < dtPaid.Rows.Count; i++)
                            {
                                string PaymentType = Func.ParseString(dtPaid.Rows[i]["PaymentType"]);
                                string MoneyUSD = Func.ParseString(dtPaid.Rows[i]["MoneyUSD"]);
                                string MoneyVND = Func.ParseString(dtPaid.Rows[i]["MoneyVND"]);
                                string PaidUSD = Func.ParseString(dtPaid.Rows[i]["PaidUSD"]);
                                string PaidVND = Func.ParseString(dtPaid.Rows[i]["PaidVND"]);
                                string ExchangeType = Func.ParseString(dtPaid.Rows[i]["ExchangeType"]);
                                string YearMonth = Func.ParseString(dtPaid.Rows[i]["YearMonth"]);

                                if (!rowNo.Contains(YearMonth))
                                {
                                    if (rowNo.Count != 0)
                                    {
                                        xlsSheet.Rows.Insert(rPaid + j + 1);
                                        xlsSheetEn.Rows.Insert(rPaid + j + 1);
                                        j++;
                                    }
                                    rowNo.Add(YearMonth, j);
                                }
                                int m = Func.ParseInt(rowNo[YearMonth]);
                                strYearMonth = YearMonth;
                                decimal tmpUSD = Convert.ToDecimal(MoneyUSD) - Convert.ToDecimal(PaidUSD);
                                decimal tmpVND = Convert.ToDecimal(MoneyVND) - Convert.ToDecimal(PaidVND);

                                PaidPriceUSD += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                PaidPriceVND += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                                xlsSheet[rPaid + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                                xlsSheetEn[rPaid + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                                switch (PaymentType)
                                {
                                    case "1":
                                        //Rent
                                        xlsSheet[rPaid + m, 2].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheet[rPaid + m, 3].Value = dtPaid.Rows[i]["PaidVND"];

                                        xlsSheetEn[rPaid + m, 2].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheetEn[rPaid + m, 3].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[0] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[0] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                                        break;
                                    case "2":
                                        //Manager
                                        xlsSheet[rPaid + m, 4].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheet[rPaid + m, 5].Value = dtPaid.Rows[i]["PaidVND"];

                                        xlsSheetEn[rPaid + m, 4].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheetEn[rPaid + m, 5].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[1] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[1] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                                        break;
                                    case "3":
                                        //Parking
                                        xlsSheet[rPaid + m, 6].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheet[rPaid + m, 7].Value = dtPaid.Rows[i]["PaidVND"];

                                        xlsSheetEn[rPaid + m, 6].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheetEn[rPaid + m, 7].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[2] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[2] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                        break;
                                    case "4":
                                        //Extra
                                        xlsSheet[rPaid + m, 8].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheet[rPaid + m, 9].Value = dtPaid.Rows[i]["PaidVND"];

                                        xlsSheetEn[rPaid + m, 8].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheetEn[rPaid + m, 9].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[3] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[3] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                        break;
                                    case "5":
                                        xlsSheet[rPaid + m, 10].Value = dtPaid.Rows[i]["PaidVND"];
                                        xlsSheetEn[rPaid + m, 10].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[4] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[4] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                        break;
                                    case "6":
                                        xlsSheet[rPaid + m, 11].Value = dtPaid.Rows[i]["PaidVND"];
                                        xlsSheetEn[rPaid + m, 11].Value = dtPaid.Rows[i]["PaidVND"];

                                        PaidSumUSD[5] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                                        PaidSumVND[5] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                        break;
                                    case "7":
                                        xlsSheet[rPaid + m, 12].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheet[rPaid + m, 13].Value = dtPaid.Rows[i]["PaidVND"];

                                        xlsSheetEn[rPaid + m, 12].Value = dtPaid.Rows[i]["PaidUSD"];
                                        xlsSheetEn[rPaid + m, 13].Value = dtPaid.Rows[i]["PaidVND"];
                                        break;
                                    default:
                                        break;
                                }
                                for (int row = rPaid + m; row <= rPaid + 1 + j; row++)
                                {
                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[row, col].Style = xlstStyle;
                                    }
                                }
                            }
                            lineTmp = rPaid - 2 + j;

                            xlsSheet[lineTmp + 3, 2].Value = PaidSumUSD[0];
                            xlsSheet[lineTmp + 3, 3].Value = PaidSumVND[0];
                            xlsSheet[lineTmp + 3, 4].Value = PaidSumUSD[1];
                            xlsSheet[lineTmp + 3, 5].Value = PaidSumVND[1];
                            xlsSheet[lineTmp + 3, 6].Value = PaidSumUSD[2];
                            xlsSheet[lineTmp + 3, 7].Value = PaidSumVND[2];
                            xlsSheet[lineTmp + 3, 8].Value = PaidSumUSD[3];
                            xlsSheet[lineTmp + 3, 9].Value = PaidSumVND[3];
                            xlsSheet[lineTmp + 3, 10].Value = PaidSumVND[4];
                            xlsSheet[lineTmp + 3, 11].Value = PaidSumVND[5];
                            xlsSheet[lineTmp + 3, 12].Value = PaidSumUSD[6];
                            xlsSheet[lineTmp + 3, 13].Value = PaidSumVND[6];

                            /////En
                            xlsSheetEn[lineTmp + 3, 2].Value = PaidSumUSD[0];
                            xlsSheetEn[lineTmp + 3, 3].Value = PaidSumVND[0];
                            xlsSheetEn[lineTmp + 3, 4].Value = PaidSumUSD[1];
                            xlsSheetEn[lineTmp + 3, 5].Value = PaidSumVND[1];
                            xlsSheetEn[lineTmp + 3, 6].Value = PaidSumUSD[2];
                            xlsSheetEn[lineTmp + 3, 7].Value = PaidSumVND[2];
                            xlsSheetEn[lineTmp + 3, 8].Value = PaidSumUSD[3];
                            xlsSheetEn[lineTmp + 3, 9].Value = PaidSumVND[3];
                            xlsSheetEn[lineTmp + 3, 10].Value = PaidSumVND[4];
                            xlsSheetEn[lineTmp + 3, 11].Value = PaidSumVND[5];
                            xlsSheetEn[lineTmp + 3, 12].Value = PaidSumUSD[6];
                            xlsSheetEn[lineTmp + 3, 13].Value = PaidSumVND[6];
                            /////En

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[lineTmp + 3, col].Style = xlstStyleSum;
                                xlsSheetEn[lineTmp + 3, col].Style = xlstStyleSum;
                            }

                            ///////////////DEPT
                            sql = "  Select *";
                            sql += " From   v_DeptBill";
                            sql += " Where  BuildingId = '" + sBuildingId + "' and CustomerId = '" + CustomerId + "' and YearMonth not in (" + lsYearmonth + ") and YearMonth < " + maxYearMonth + "";
                            sql += " And    (DeptUsd <> 0 or DeptVnd <> 0)";
                            strYearMonth = "";
                            lineTmp = rDept - 2 + j;

                            //Paid
                            mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                            xlsSheet.MergedCells.Add(mCellTmp);

                            //////En
                            mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                            xlsSheetEn.MergedCells.Add(mCellTmp);

                            mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                            xlsSheetEn.MergedCells.Add(mCellTmp);
                            //////En
                            rowNo = new Hashtable();
                            decimal DeptPriceVND = 0;
                            decimal DeptPriceUSD = 0;

                            decimal[] DeptSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                            decimal[] DeptSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                            DataTable dtDept = DbHelper.GetDataTable(sql);
                            for (int i = 0; i < dtDept.Rows.Count; i++)
                            {
                                string PaymentType = Func.ParseString(dtDept.Rows[i]["PaymentType"]);
                                string DeptUSD = Func.ParseString(dtDept.Rows[i]["DeptUSD"]);
                                string DeptVND = Func.ParseString(dtDept.Rows[i]["DeptVND"]);
                                string YearMonth = Func.ParseString(dtDept.Rows[i]["YearMonth"]);

                                if (!rowNo.Contains(YearMonth))
                                {
                                    if (rowNo.Count != 0)
                                    {
                                        xlsSheet.Rows.Insert(rDept + j + 1);
                                        xlsSheetEn.Rows.Insert(rDept + j + 1);
                                        j++;
                                    }
                                    rowNo.Add(YearMonth, j);
                                }
                                int m = Func.ParseInt(rowNo[YearMonth]);
                                strYearMonth = YearMonth;

                                DeptPriceUSD += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                DeptPriceVND += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                                xlsSheet[rDept + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                                xlsSheetEn[rDept + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);

                                switch (PaymentType)
                                {
                                    case "1":
                                        //Rent
                                        xlsSheet[rDept + m, 2].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheet[rDept + m, 3].Value = dtDept.Rows[i]["DeptVND"];

                                        xlsSheetEn[rDept + m, 2].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheetEn[rDept + m, 3].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[0] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[0] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                                        break;
                                    case "2":
                                        //Manager
                                        xlsSheet[rDept + m, 4].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheet[rDept + m, 5].Value = dtDept.Rows[i]["DeptVND"];

                                        xlsSheetEn[rDept + m, 4].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheetEn[rDept + m, 5].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[1] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[1] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                                        break;
                                    case "3":
                                        //Parking
                                        xlsSheet[rDept + m, 6].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheet[rDept + m, 7].Value = dtDept.Rows[i]["DeptVND"];

                                        xlsSheetEn[rDept + m, 6].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheetEn[rDept + m, 7].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[2] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[2] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                        break;
                                    case "4":
                                        //Extra
                                        xlsSheet[rDept + m, 8].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheet[rDept + m, 9].Value = dtDept.Rows[i]["DeptVND"];

                                        xlsSheetEn[rDept + m, 8].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheetEn[rDept + m, 9].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[3] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[3] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                        break;
                                    case "5":
                                        xlsSheet[rDept + m, 10].Value = dtDept.Rows[i]["DeptVND"];
                                        xlsSheetEn[rDept + m, 10].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[4] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[4] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                        break;
                                    case "6":
                                        xlsSheet[rDept + m, 11].Value = dtDept.Rows[i]["DeptVND"];
                                        xlsSheetEn[rDept + m, 11].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[5] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[5] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                        break;
                                    case "7":
                                        xlsSheet[rDept + m, 12].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheet[rDept + m, 13].Value = dtDept.Rows[i]["DeptVND"];

                                        xlsSheetEn[rDept + m, 12].Value = dtDept.Rows[i]["DeptUSD"];
                                        xlsSheetEn[rDept + m, 13].Value = dtDept.Rows[i]["DeptVND"];

                                        DeptSumUSD[6] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                                        DeptSumVND[6] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                        break;
                                    default:
                                        break;
                                }
                                for (int row = rDept + m; row <= rDept + 1 + j; row++)
                                {
                                    for (int col = 1; col <= 13; col++)
                                    {
                                        xlsSheet[row, col].Style = xlstStyle;
                                        xlsSheetEn[row, col].Style = xlstStyle;
                                    }
                                }
                            }
                            lineTmp = rDept - 2 + j;

                            xlsSheet[lineTmp + 3, 2].Value = DeptSumUSD[0];
                            xlsSheet[lineTmp + 3, 3].Value = DeptSumVND[0];
                            xlsSheet[lineTmp + 3, 4].Value = DeptSumUSD[1];
                            xlsSheet[lineTmp + 3, 5].Value = DeptSumVND[1];
                            xlsSheet[lineTmp + 3, 6].Value = DeptSumUSD[2];
                            xlsSheet[lineTmp + 3, 7].Value = DeptSumVND[2];
                            xlsSheet[lineTmp + 3, 8].Value = DeptSumUSD[3];
                            xlsSheet[lineTmp + 3, 9].Value = DeptSumVND[3];
                            xlsSheet[lineTmp + 3, 10].Value = DeptSumVND[4];
                            xlsSheet[lineTmp + 3, 11].Value = DeptSumVND[5];
                            xlsSheet[lineTmp + 3, 12].Value = DeptSumUSD[6];
                            xlsSheet[lineTmp + 3, 13].Value = DeptSumVND[6];

                            //////En
                            xlsSheetEn[lineTmp + 3, 2].Value = DeptSumUSD[0];
                            xlsSheetEn[lineTmp + 3, 3].Value = DeptSumVND[0];
                            xlsSheetEn[lineTmp + 3, 4].Value = DeptSumUSD[1];
                            xlsSheetEn[lineTmp + 3, 5].Value = DeptSumVND[1];
                            xlsSheetEn[lineTmp + 3, 6].Value = DeptSumUSD[2];
                            xlsSheetEn[lineTmp + 3, 7].Value = DeptSumVND[2];
                            xlsSheetEn[lineTmp + 3, 8].Value = DeptSumUSD[3];
                            xlsSheetEn[lineTmp + 3, 9].Value = DeptSumVND[3];
                            xlsSheetEn[lineTmp + 3, 10].Value = DeptSumVND[4];
                            xlsSheetEn[lineTmp + 3, 11].Value = DeptSumVND[5];
                            xlsSheetEn[lineTmp + 3, 12].Value = DeptSumUSD[6];
                            xlsSheetEn[lineTmp + 3, 13].Value = DeptSumVND[6];
                            //////En
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[lineTmp + 3, col].Style = xlstStyleSum;
                                xlsSheetEn[lineTmp + 3, col].Style = xlstStyleSum;
                            }

                            xlsSheet[lineTmp + 3, 1].Style = xlstStyleSum;
                            xlsSheetEn[lineTmp + 3, 1].Style = xlstStyleSum;

                            decimal AllSumVND = 0;
                            decimal AllSumUSD = 0;
                            for (int i = 0; i < 7; i++)
                            {
                                AllSumVND += LastSumPriceVND[i];
                                AllSumUSD += LastSumPriceUSD[i];
                            }

                            AllSumVND -= PaidPriceVND;
                            AllSumUSD -= PaidPriceUSD;

                            AllSumVND += DeptPriceVND;
                            AllSumUSD += DeptPriceUSD;

                            xlsSheet[rSumVND + j, cSumVND].Value = Func.FormatNumber_New(AllSumUSD);
                            xlsSheet[rSumVND + j, cSumVND].Value += "(USD)";
                            xlsSheet[rSumVND + j, cSumVND + 1].Value = Func.FormatNumber_New(AllSumVND);
                            xlsSheet[rSumVND + j, cSumVND + 1].Value += "(VND)";

                            xlsSheetEn[rSumVND + j, cSumVND].Value = Func.FormatNumber_New(AllSumUSD);
                            xlsSheetEn[rSumVND + j, cSumVND].Value += "(USD)";
                            xlsSheetEn[rSumVND + j, cSumVND + 1].Value = Func.FormatNumber_New(AllSumVND);
                            xlsSheetEn[rSumVND + j, cSumVND + 1].Value += "(VND)";

                            AllSumVND += Convert.ToDecimal(AllSumUSD * Convert.ToDecimal(UsdExchange));

                            string strMoney = Func.docso(Convert.ToInt32(AllSumVND));
                            string strMoneyEn = Func.DocSo_En(Convert.ToInt32(AllSumVND));

                            xlsSheet[rContract, cContract].Value = xlsSheet[rContract, cContract].Value.ToString().Replace("{%HOP_DONG%}", String.IsNullOrEmpty(contract) ? "" : contract.Substring(1));
                            xlsSheet[rSum + j, cSum].Value = Convert.ToInt32(AllSumVND);

                            mCellTmp = new XLCellRange(rSum + j, rSum + j, cSum, cSum + 1);
                            xlsSheet.MergedCells.Add(mCellTmp);
                            xlsSheet[rSum + j, cSum].Style = xlstStyleSum;
                            xlsSheet[rSum + j, cSum + 1].Style = xlstStyleSum;
                            xlsSheet[rSumRead + j, cSumRead].Value = xlsSheet[rSumRead + j, cSumRead].Value.ToString().Replace("{%TONG_CHU%}", strMoney.ToUpper());

                            xlsSheetEn[rContract, cContract].Value = xlsSheetEn[rContract, cContract].Value.ToString().Replace("{%HOP_DONG%}", String.IsNullOrEmpty(contract) ? "" : contract.Substring(1));
                            xlsSheetEn[rSum + j, cSum].Value = Convert.ToInt32(AllSumVND);

                            mCellTmp = new XLCellRange(rSum + j, rSum + j, cSum, cSum + 1);
                            xlsSheetEn.MergedCells.Add(mCellTmp);
                            xlsSheetEn[rSum + j, cSum].Style = xlstStyleSum;
                            xlsSheetEn[rSum + j, cSum + 1].Style = xlstStyleSum;
                            xlsSheetEn[rSumRead + j, cSumRead].Value = xlsSheetEn[rSumRead + j, cSumRead].Value.ToString().Replace("{%TONG_CHU%}", strMoneyEn.ToUpper());

                            xlbBook.Save(fileNameDes);
                            xlbBook.Clear();
                            //ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
                        }
                    }
                }
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT  A.GroupName, B.MaintenanceItem, B.ScheduleDate";
            sql += " FROM    BD_SuppliesGroup AS A Left outer JOIN";
            sql += "         BD_SuppliesGroupMaintenance AS B ON A.id = B.SuppliesGroupId";
            sql += "         and substring(ScheduleDate,1,4) = '" + drpYear.SelectedValue + "'";
            sql += " and B.DelFlag = 0 Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.SuppliesType = '" + hidSuppliesType.Value + "'";
            sql += " Order by GroupName, MaintenanceItem";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyle.AlignVert = XLAlignVertEnum.Center;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        XLStyle xlstStyleS = new XLStyle(xlbBook);
                        xlstStyleS.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyleS.AlignVert = XLAlignVertEnum.Center;
                        xlstStyleS.WordWrap = true;
                        xlstStyleS.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyleS.SetBorderColor(Color.Black);
                        xlstStyleS.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyleS.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyleS.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyleS.BorderRight = XLLineStyleEnum.Thin;
                        xlstStyleS.BackColor = Color.Red;

                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BaoTriDinhKy.xls");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoTriDinhKy"))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoTriDinhKy"));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoTriDinhKy\BaoTriDinhKy" + strDT + ".xls";
                        string strFilePathExport = "../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/BaoTriDinhKy/BaoTriDinhKy" + strDT + ".xls";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);

                        XLSheet xlsSheet = xlbBook.Sheets["BaoTri"];
                        xlsSheet[1, 0].Value = xlsSheet[1, 0].Value.ToString().Replace("{%NAM%}", drpYear.SelectedValue);

                        int stt = 0;
                        XLCellRange mCell = new XLCellRange(0, 0, 0, 0);

                        int i = 4;
                        DataTable dt = ds.Tables[0];
                        string tmpMaintenanceItem = "";
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string GroupName = rowType["GroupName"].ToString();
                            string MaintenanceItem = rowType["MaintenanceItem"].ToString();
                            string ScheduleDate = rowType["ScheduleDate"].ToString();
                            if (String.IsNullOrEmpty(tmpMaintenanceItem))
                            {
                                tmpMaintenanceItem = GroupName + MaintenanceItem;
                                i++;
                            }

                            if (!tmpMaintenanceItem.Equals(GroupName + MaintenanceItem))
                            {
                                i++;
                                tmpMaintenanceItem = GroupName + MaintenanceItem;
                            }

                            xlsSheet[i, 1].Value = GroupName;
                            xlsSheet[i, 2].Value = MaintenanceItem;

                            mCell = new XLCellRange(i, i, 2, 3);
                            xlsSheet.MergedCells.Add(mCell);

                            xlsSheet[i, 1].Style = xlstStyle;
                            xlsSheet[i, 2].Style = xlstStyle;

                            for (int m = 0; m <= 51; m++)
                            {
                                xlsSheet[i, m].Style = xlstStyle;
                                if ("X".Equals(xlsSheet[i, m].Value))
                                {
                                    xlsSheet[i, m].Style = xlstStyleS;
                                }
                            }

                            if (!String.IsNullOrEmpty(ScheduleDate))
                            {
                                int month = Func.ParseInt(ScheduleDate.Substring(4, 2));
                                int date = Func.ParseInt(ScheduleDate.Substring(6, 2));
                                int x = month * 4;
                                if (date >= 1 && date <= 7)
                                    x += 0;
                                if (date >= 8 && date <= 14)
                                    x += 1;
                                if (date >= 15 && date <= 21)
                                    x += 2;
                                if (date >= 22 && date <= 31)
                                    x += 3;
                                xlsSheet[i, x].Value = "X";
                                xlsSheet[i, x].Style = xlstStyleS;
                            }

                        }

                        i = 5;
                        int k = 1;
                        string tmp = xlsSheet[i, 1].Value.ToString();
                        xlsSheet[i, 0].Value = k;
                        int y = i;
                        i++;
                        mCell = new XLCellRange(0, 0, 0, 0); ;
                        while (!String.IsNullOrEmpty(Func.ParseString(xlsSheet[i, 1].Value)))
                        {
                            if (xlsSheet[i, 1].Value.ToString() != tmp)
                            {
                                tmp = xlsSheet[i, 1].Value.ToString();
                                mCell = new XLCellRange(y, i - 1, 1, 1);
                                xlsSheet.MergedCells.Add(mCell);

                                mCell = new XLCellRange(y, i - 1, 0, 0);
                                xlsSheet.MergedCells.Add(mCell);

                                y = i;
                                xlsSheet[i, 0].Value = ++k;
                            }
                            i++;
                        }
                        mCell = new XLCellRange(y, i - 1, 1, 1);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(y, i - 1, 0, 0);
                        xlsSheet.MergedCells.Add(mCell);

                        xlbBook.Save(fileNameDes);
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
Example #9
0
        /// <summary>
        /// Loads the content of an XLSheet into a C1FlexGrid.
        /// </summary>
        public static void Load(XLSheet sheet, C1FlexGrid flex)
        {
            // clear style cache if this is a new book
            if (sheet.Book != _lastBook)
            {
                _cellStyles.Clear();
                _excelStyles.Clear();
                _lastBook = sheet.Book;
            }

            // set default parameters
            flex.FontFamily = new FontFamily(sheet.Book.DefaultFont.FontName);
            flex.FontSize = PointsToPixels(sheet.Book.DefaultFont.FontSize);
            flex.Rows.DefaultSize = TwipsToPixels(sheet.DefaultRowHeight);
            flex.Columns.DefaultSize = TwipsToPixels(sheet.DefaultColumnWidth);
            flex.IsReadOnly = sheet.Locked;
            flex.GridLinesVisibility = sheet.ShowGridLines
                ? GridLinesVisibility.All
                : GridLinesVisibility.None;
            //flex.GridLinesBrush = sheet.GridColor;
            flex.HeadersVisibility = sheet.ShowHeaders
                ? HeadersVisibility.All
                : HeadersVisibility.None;
            flex.GroupRowPosition = sheet.OutlinesBelow
                ? GroupRowPosition.BelowData
                : GroupRowPosition.AboveData;

            // add columns
            flex.Columns.Clear();
            foreach (XLColumn c in sheet.Columns)
            {
                // create column, give it a unique name so undo/ColumnLayout work
                var col = new Column();
                col.ColumnName = col.GetHashCode().ToString("x0");

                // set size and visibility
                if (c.Width > -1)
                {
                    col.Width = new GridLength(TwipsToPixels(c.Width));
                }
                col.Visible = c.Visible;

                // set style
                if (c.Style != null)
                {
                    col.CellStyle = GetCellStyle(c.Style);
                }

                // and add to the grid
                flex.Columns.Add(col);
            }

            // add rows
            flex.Rows.Clear();
            foreach (XLRow r in sheet.Rows)
            {
                var row = new ExcelRow();
                if (r.Height > -1)
                {
                    row.Height = TwipsToPixels(r.Height);
                }
                if (r.Style != null)
                {
                    row.CellStyle = GetCellStyle(r.Style);
                }
                row.Level = r.OutlineLevel;
                row.Visible = r.Visible;
                flex.Rows.Add(row);
            }

            // add cells
            for (int r = 0; r < flex.Rows.Count; r++)
            {
                for (int c = 0; c < flex.Columns.Count; c++)
                {
                    var cell = sheet[r, c];
                    if (cell != null)
                    {
                        if (!string.IsNullOrEmpty(cell.Formula))
                        {
                            // save formula
                            var formula = cell.Formula.Trim();
                            if (!formula.StartsWith("="))
                            {
                                formula = string.Format("={0}", formula);
                            }
                            flex[r, c] = formula;
                        }
                        else if (cell.Value != null)
                        {
                            // save value
                            flex[r, c] = cell.Value;
                        }
                        if (cell.Style != null)
                        {
                            // save style
                            var row = flex.Rows[r] as ExcelRow;
                            var col = flex.Columns[c];
                            row.SetCellStyle(col, GetCellStyle(cell.Style));
                        }
                    }
                }
            }

            // at least 20 columns, 50 rows
            while (flex.Columns.Count < 20)
            {
                flex.Columns.Add(new Column());
            }
            while (flex.Rows.Count < 50)
            {
                flex.Rows.Add(new ExcelRow());
            }

            // load merged cells
            var xmm = flex.MergeManager as ExcelMergeManager;
            if (xmm == null)
            {
                xmm = new ExcelMergeManager();
            }
            xmm.GetMergedRanges(sheet);

            // freeze rows/columns
            flex.Rows.Frozen = sheet.Rows.Frozen;
            flex.Columns.Frozen = sheet.Columns.Frozen;

            // update selection
            if (sheet.SelectedCells != null && sheet.SelectedCells.Count > 0)
            {
                // review: using the last one seems to work, but why?
                var sel = sheet.SelectedCells[sheet.SelectedCells.Count - 1];
                flex.Select(sel.RowFrom, sel.ColumnFrom, sel.RowTo, sel.ColumnTo, false);
            }
            else
            {
                flex.Select(0, 0);
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            string type = Func.ParseString(Request["type"]);

            DataSet ds = new DataSet();
            string sql = string.Empty;

            //sql = " SELECT *";
            //sql += " FROM v_BuildingStatusInfo";
            //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and StatusDate >= '" + Func.FormatYYYYmmdd(txtFromDate.Text.Substring(0, 10)) + "' and StatusDate <= '" + Func.FormatYYYYmmdd(txtToDate.Text.Substring(0, 10)) + "' and Type = '" + type + "'";

            sql = "  SELECT  right('0'+convert(varchar,[Month]),2) + '/' + convert(varchar,[Year]),[Week],MainName,SubName";
            sql += " ,dbo.fnDateTime(ExecDate),ExecCompany,ExecDescription,ExecComment,ExecConfirmer,ModifiedBy,dbo.fnDateTime(Modified)";
            sql += " FROM BD_Maintenance ";
            sql += " WHERE    BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            sql += " and  convert(varchar,[Year]) + right('0'+convert(varchar,[Month]),2) >= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
            sql += " and  convert(varchar,[Year]) + right('0'+convert(varchar,[Month]),2) <= '" + drpYearTo.SelectedValue + drpMonthTo.SelectedValue + "'";
            sql += " and DelFlag = '0'  ";
            sql += " and UPPER(IsMaintenance) = 'X'  ";
            sql += " Order by  right('0'+convert(varchar,[Month]),2) + '/' + convert(varchar,[Year]), MainName, SubName,Week ";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\KeHoachBaoTri.xlsx");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\KeHoachBaoTri"))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\KeHoachBaoTri"));
                        }
                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");

                        string strFilePath = "";
                        string strFilePathExport = "";

                        strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\KeHoachBaoTri\KeHoachBaoTri" + strDT + ".xlsx";
                        strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/KeHoachBaoTri/KeHoachBaoTri" + strDT + ".xlsx";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);
                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);
                        string sheet = "KeHoachBaoTri";

                        XLSheet xlsSheet = xlbBook.Sheets[sheet];

                        int i = 3;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.AlignVert = XLAlignVertEnum.Center;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        XLStyle xlstStyleB = new XLStyle(xlbBook);
                        xlstStyleB.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyleB.AlignVert = XLAlignVertEnum.Top;
                        xlstStyleB.WordWrap = false;
                        xlstStyleB.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyleB.SetBorderColor(Color.Black);
                        xlstStyleB.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyleB.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyleB.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyleB.BorderRight = XLLineStyleEnum.Thin;

                        xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%BUILDING%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
                        string tmp = Func.ParseString( xlsSheet[1, 0].Value);
                        tmp = tmp.Replace("{%NAM%}", drpYear.SelectedValue);
                        tmp = tmp.Replace("{%THANG%}", drpMonth.SelectedValue);
                        tmp = tmp.Replace("{%NAM_TO%}", drpYearTo.SelectedValue);
                        tmp = tmp.Replace("{%THANG_TO%}", drpMonthTo.SelectedValue);
                        xlsSheet[1, 0].Value = tmp;

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string col01 = rowType[0].ToString();
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();
                            string col07 = rowType[6].ToString();
                            string col08 = rowType[7].ToString();
                            string col09 = rowType[8].ToString();
                            string col10 = rowType[9].ToString();
                            string col11 = rowType[10].ToString();

                            xlsSheet[i, 0].Value = col01;
                            xlsSheet[i, 1].Value = col02;
                            xlsSheet[i, 2].Value = col03;
                            xlsSheet[i, 3].Value = col04;
                            xlsSheet[i, 4].Value = col05;
                            xlsSheet[i, 5].Value = col06;
                            xlsSheet[i, 6].Value = col07;
                            xlsSheet[i, 7].Value = col08;
                            xlsSheet[i, 8].Value = col09;
                            xlsSheet[i, 9].Value = col10;
                            xlsSheet[i, 10].Value = col11;

                            xlsSheet[i, 0].Style = xlstStyle;
                            xlsSheet[i, 1].Style = xlstStyleB;
                            xlsSheet[i, 2].Style = xlstStyleB;
                            xlsSheet[i, 3].Style = xlstStyleB;
                            xlsSheet[i, 4].Style = xlstStyleB;
                            xlsSheet[i, 5].Style = xlstStyleB;
                            xlsSheet[i, 6].Style = xlstStyleB;
                            xlsSheet[i, 7].Style = xlstStyleB;
                            xlsSheet[i, 8].Style = xlstStyleB;
                            xlsSheet[i, 9].Style = xlstStyleB;
                            xlsSheet[i, 10].Style = xlstStyleB;
                            xlsSheet[i, 11].Style = xlstStyleB;
                            ++i;
                        }

                        ////ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('/CSV/DownloadZipFile.aspx'," + PopupWidth + "," + PopupHeight + ",'EditFlat', true);", true);

                        ////xlsSheet[i++, 0].Value = "Ghi chú:";
                        //DataSet ds1 = new DataSet();
                        //sql = string.Empty;

                        //sql = " SELECT *";
                        //sql += " FROM BD_WorkingHour";
                        //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1";
                        //sql += " Order By Name";

                        //using (SqlCommand cm1 = db.CreateCommand(sql))
                        //{
                        //    SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                        //    da1.Fill(ds1);
                        //    db.Close();

                        //    if (ds != null)
                        //    {

                        //        xlsSheet[i++ + 1, 0].Value = "Ghi chú:";
                        //        DataTable dt1 = ds1.Tables[0];
                        //        foreach (DataRow rowType in dt1.Rows)
                        //        {
                        //            i++;
                        //            string Ma = rowType["WorkingHourId"].ToString();
                        //            string Name = rowType["Name"].ToString();
                        //            xlsSheet[i, 0].Value = Ma + ":";
                        //            xlsSheet[i, 1].Value = Name;
                        //        }
                        //        xlsSheet[i + 1, 0].Value = "OF:";
                        //        xlsSheet[i + 1, 1].Value = "OF: nghỉ";
                        //    }
                        //}
                        //string dataPath = HttpContext.Current.Server.MapPath(@"\Building\Staff\DataTmp");
                        //string tmpFolder = dataPath;
                        //if (!Directory.Exists(tmpFolder))
                        //{
                        //    Directory.CreateDirectory(tmpFolder);
                        //}
                        //string name = "KhaiBaoLichLamViec_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
                        //string fileName = Path.Combine(tmpFolder, name);
                        //                        string fileNameDes = HttpContext.Current.Server.MapPath(@"\Report\Template\THSLXT_tpl_1.xlsx");

                        xlbBook.Save(fileNameDes);
                        //Session["ZipFilePath"] = null;
                        //Session["ZipFilePath"] = fileName;

                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM v_GuiXeThang";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            sql += " AND ((NgayKetThuc is null) OR ";
            sql += "      (NgayKetThuc is not null and substring(NgayKetThuc,1,6) >= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'))";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\GuixeThang.xls");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\GuiXeThang" + strDT + ".xls";
                        string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/GuiXeThang" + strDT + ".xls";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);
                        XLSheet xlsSheet = xlbBook.Sheets["GuiXeThang"];
                        //xlsSheet.Name = drpMonth.SelectedValue + "_" + drpYear.SelectedValue;

                        int i = 4;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.Font = new Font("", 10, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        xlsSheet[1, 0].Value = xlsSheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
                        xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue+"/"+drpYear.SelectedValue);

                        int stt = 0;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string col01 = rowType[0].ToString();
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();
                            string col07 = Func.FormatDMY(rowType[6].ToString());
                            string col08 = Func.FormatDMY(rowType[7].ToString());
                            string col09 = rowType[8].ToString();

                            xlsSheet[i, 0].Value = ++stt;
                            xlsSheet[i, 1].Value = col03;
                            xlsSheet[i, 2].Value = col04;
                            xlsSheet[i, 3].Value = col05;
                            xlsSheet[i, 4].Value = col06;
                            xlsSheet[i, 5].Value = col07;
                            xlsSheet[i, 6].Value = col08;
                            xlsSheet[i, 7].Value = col09;

                            xlsSheet[i, 0].Style = xlstStyle;
                            xlsSheet[i, 1].Style = xlstStyle;
                            xlsSheet[i, 2].Style = xlstStyle;
                            xlsSheet[i, 3].Style = xlstStyle;
                            xlsSheet[i, 4].Style = xlstStyle;
                            xlsSheet[i, 5].Style = xlstStyle;
                            xlsSheet[i, 6].Style = xlstStyle;
                            xlsSheet[i, 7].Style = xlstStyle;
                            ++i;
                        }

                        ////ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('/CSV/DownloadZipFile.aspx'," + PopupWidth + "," + PopupHeight + ",'EditFlat', true);", true);

                        ////xlsSheet[i++, 0].Value = "Ghi chú:";
                        //DataSet ds1 = new DataSet();
                        //sql = string.Empty;

                        //sql = " SELECT *";
                        //sql += " FROM BD_WorkingHour";
                        //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1";
                        //sql += " Order By Name";

                        //using (SqlCommand cm1 = db.CreateCommand(sql))
                        //{
                        //    SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                        //    da1.Fill(ds1);
                        //    db.Close();

                        //    if (ds != null)
                        //    {

                        //        xlsSheet[i++ + 1, 0].Value = "Ghi chú:";
                        //        DataTable dt1 = ds1.Tables[0];
                        //        foreach (DataRow rowType in dt1.Rows)
                        //        {
                        //            i++;
                        //            string Ma = rowType["WorkingHourId"].ToString();
                        //            string Name = rowType["Name"].ToString();
                        //            xlsSheet[i, 0].Value = Ma + ":";
                        //            xlsSheet[i, 1].Value = Name;
                        //        }
                        //        xlsSheet[i + 1, 0].Value = "OF:";
                        //        xlsSheet[i + 1, 1].Value = "OF: nghỉ";
                        //    }
                        //}
                        //string dataPath = HttpContext.Current.Server.MapPath(@"\Building\Staff\DataTmp");
                        //string tmpFolder = dataPath;
                        //if (!Directory.Exists(tmpFolder))
                        //{
                        //    Directory.CreateDirectory(tmpFolder);
                        //}
                        //string name = "KhaiBaoLichLamViec_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
                        //string fileName = Path.Combine(tmpFolder, name);
            //                        string fileNameDes = HttpContext.Current.Server.MapPath(@"\Report\Template\THSLXT_tpl_1.xlsx");

                        xlbBook.Save(fileNameDes);
                        //Session["ZipFilePath"] = null;
                        //Session["ZipFilePath"] = fileName;

                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
        public void ViewMultiBoth(string lsYearmonth)
        {
            //string lsYearmonth = "";
            //foreach (ListItem lstItem in lstSelectedYearMonth.Items)
            //{
            //    lsYearmonth += ",'" + lstItem.Value + "'";

            //    if (String.Compare(DateTime.Now.ToString("yyyyMMdd"), lstItem.Value) < 0)
            //    {
            //        using (SqlConnection con = new SqlConnection(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
            //        {
            //            con.Open();
            //            using (SqlCommand cm = new SqlCommand("sp_PaymentDetailOneCustomerRentManager", con))
            //            {
            //                try
            //                {
            //                    cm.CommandType = CommandType.StoredProcedure;
            //                    cm.Parameters.AddWithValue("@BuildingId", Func.ParseString(Session["__BUILDINGID__"]));
            //                    cm.Parameters.AddWithValue("@CustomerId", lblCustomerId.Text);
            //                    cm.Parameters.AddWithValue("@YearMonth", lstItem.Value);
            //                    cm.Parameters.AddWithValue("@Created", DateTime.Now.ToString("yyyyMMddHHmmss"));
            //                    cm.Parameters.AddWithValue("@CreatedBy", Page.User.Identity.Name);
            //                    cm.Parameters.AddWithValue("@Modified", DateTime.Now.ToString("yyyyMMddHHmmss"));
            //                    cm.Parameters.AddWithValue("@ModifiedBy", Page.User.Identity.Name);

            //                    cm.CommandTimeout = 9999;

            //                    int ret = cm.ExecuteNonQuery();
            //                }
            //                catch (Exception ex)
            //                {
            //                    ApplicationLog.WriteError(ex);
            //                }
            //                finally
            //                {
            //                    con.Close();
            //                }
            //            }
            //        }
            //    }
            //}
            if (String.IsNullOrEmpty(lsYearmonth))
            {
                mvMessage.AddError("Phải chọn ít nhất 1 tháng");
                return;
            }
            //lsYearmonth = lsYearmonth.Substring(1);

            int rBillNo = 0;
            int cBillNo = 1;

            int rBillDate = 0;
            int cBillDate = 10;

            int rBillMonth = 2;
            int cBillMonth = 0;

            int rContact = 5;
            int cContact = 3;

            int rCustomer = 5;
            int cCustomer = 7;

            int rContract = 7;
            int cContract = 1;

            int rRate = 11;
            int cRate = 9;

            int rRateDate = 11;
            int cRateDate = 12;

            int rRent = 15;

            int rManager = 23;

            int rParking = 31;

            int rExtra = 39;

            int rElec = 47;

            int rWater = 55;

            int rService = 63;

            int rPaid = 70;

            int rDept = 77;

            int rOffice = 88;
            int cOffice = 3;

            int rPhone = 89;
            int cPhone = 3;

            int rBank = 88;
            int cBank = 7;

            int rAccountName = 89;
            int cAccountName = 7;

            int rAccount = 90;
            int cAccount = 7;

            int rSum = 81;
            int cSum = 12;

            int rSumVND = 80;
            int cSumVND = 12;

            int rSumRead = 82;
            int cSumRead = 13;

            int check = DbHelper.GetCount("Select count(*) from PaymentBillInfo Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + lblCustomerId.Text + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'");
            if (check == 0)
            {
                mvMessage.AddError("Xin vui lòng tạo hóa đơn trước khi xem");
                return;
            }
            mvMessage.CheckRequired(txtBillDate, "Ngày xuất Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtBillNo, "Số Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchange, "Tỉ giá USD-VN là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchangeDate, "Ngày tỉ giá là danh mục bắt buộc");
            //ShowData(drpYear.SelectedValue + drpMonth.SelectedValue);
            C1XLBook xlbBook = new C1XLBook();
            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BillTongQuat.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
            }

            XLStyle xlstStyle = new XLStyle(xlbBook);
            xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyle.AlignVert = XLAlignVertEnum.Center;
            xlstStyle.WordWrap = true;
            xlstStyle.Font = new Font("Times New Roman", 12, FontStyle.Regular);
            xlstStyle.SetBorderColor(Color.Black);
            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleH = new XLStyle(xlbBook);
            xlstStyleH.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleH.AlignVert = XLAlignVertEnum.Center;
            xlstStyleH.Font = new Font("Times New Roman", 12, FontStyle.Bold);
            xlstStyleH.SetBorderColor(Color.Black);
            xlstStyleH.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleH.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleH.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleH.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleH.WordWrap = true;

            XLStyle xlstStyleSum = new XLStyle(xlbBook);
            xlstStyleSum.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleSum.AlignVert = XLAlignVertEnum.Center;
            xlstStyleSum.Font = new Font("Times New Roman", 12, FontStyle.Bold);
            xlstStyleSum.SetBorderColor(Color.Black);
            xlstStyleSum.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleSum.WordWrap = true;
            xlstStyleSum.Format = "#,##0.00_);(#,##0.00)";

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\Bill_" + lblCustomerId.Text + "_" + strDT + ".xlsx";
            string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/Bill_" + lblCustomerId.Text + "_" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);
            XLSheet xlsSheet = xlbBook.Sheets["TongHop"];
            XLSheet xlsSheetEn = xlbBook.Sheets["TongHop_En"];

            //Bill No
            xlsSheet[rBillNo, cBillNo].Value = xlsSheet[rBillNo, cBillNo].Value.ToString().Replace("{%BILL_NO%}", txtBillNo.Text);
            xlsSheetEn[rBillNo, cBillNo].Value = xlsSheetEn[rBillNo, cBillNo].Value.ToString().Replace("{%BILL_NO%}", txtBillNo.Text);

            //Ngay Thang Nam
            DateTime dtime = DateTime.Today;

            string strTmp = xlsSheet[rBillDate, cBillDate].Value.ToString().Replace("{%NGAY%}", dtime.ToString("dd"));
            strTmp = strTmp.Replace("{%THANG%}", dtime.ToString("MM"));
            xlsSheet[rBillDate, cBillDate].Value = strTmp.Replace("{%NAM%}", dtime.ToString("yyyy"));

            strTmp = xlsSheetEn[rBillDate, cBillDate].Value.ToString().Replace("{%NGAY%}", dtime.ToString("dd"));
            strTmp = strTmp.Replace("{%THANG%}", dtime.ToString("MM"));
            xlsSheetEn[rBillDate, cBillDate].Value = strTmp.Replace("{%NAM%}", dtime.ToString("yyyy"));

            //Nam
            xlsSheet[rBillMonth, cBillMonth].Value = xlsSheet[rBillMonth, cBillMonth].Value.ToString().Replace("{%NAM_THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);
            xlsSheetEn[rBillMonth, cBillMonth].Value = xlsSheetEn[rBillMonth, cBillMonth].Value.ToString().Replace("{%NAM_THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            using (SqlDatabase db = new SqlDatabase())
            {
                DataSet ds = new DataSet();
                string sql = string.Empty;

                sql = " SELECT Name, ContactName";
                sql += " FROM Customer";
                sql += " WHERE CustomerId = '" + lblCustomerId.Text + "' ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Name = rowType[0].ToString();
                            string ContactName = rowType[1].ToString();

                            //Customer
                            xlsSheet[rCustomer, cCustomer].Value = xlsSheet[rCustomer, cCustomer].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            xlsSheetEn[rCustomer, cCustomer].Value = xlsSheetEn[rCustomer, cCustomer].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            //Contact
                            xlsSheet[rContact, cContact].Value = xlsSheet[rContact, cContact].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);
                            xlsSheetEn[rContact, cContact].Value = xlsSheetEn[rContact, cContact].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);
                        }
                    }
                }
                Hashtable contractIdLst = new Hashtable();
                string contract = "";
                ds = new DataSet();
                sql = " SELECT Bank,Account,AccountName,Office,OfficeAddress,OfficePhone";
                sql += " FROM Mst_Building";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Bank = rowType["Bank"].ToString();
                            string Account = rowType["Account"].ToString();
                            string AccountName = rowType["AccountName"].ToString();
                            string Office = rowType["Office"].ToString();
                            string OfficeAddress = rowType["OfficeAddress"].ToString();
                            string OfficePhone = rowType["OfficePhone"].ToString();

                            xlsSheet[rOffice, cOffice].Value = xlsSheet[rOffice, cOffice].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheet[rPhone, cPhone].Value = xlsSheet[rPhone, cPhone].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheet[rBank, cBank].Value = xlsSheet[rBank, cBank].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheet[rAccountName, cAccountName].Value = xlsSheet[rAccountName, cAccountName].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheet[rAccount, cAccount].Value = xlsSheet[rAccount, cAccount].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);

                            xlsSheetEn[rOffice, cOffice].Value = xlsSheetEn[rOffice, cOffice].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheetEn[rPhone, cPhone].Value = xlsSheetEn[rPhone, cPhone].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheetEn[rBank, cBank].Value = xlsSheetEn[rBank, cBank].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheetEn[rAccountName, cAccountName].Value = xlsSheetEn[rAccountName, cAccountName].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheetEn[rAccount, cAccount].Value = xlsSheetEn[rAccount, cAccount].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);
                        }
                    }
                }

                xlsSheet[rRate, cRate].Value = xlsSheet[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", txtUsdExchange.Text);
                xlsSheet[rRateDate, cRateDate].Value = xlsSheet[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", txtUsdExchangeDate.Text);

                xlsSheetEn[rRate, cRate].Value = xlsSheetEn[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", txtUsdExchange.Text);
                xlsSheetEn[rRateDate, cRateDate].Value = xlsSheetEn[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", txtUsdExchangeDate.Text);

                //Thue phong
                ds = new DataSet();
                sql = " Select *";
                sql += " FROM PaymentRoom";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";

                int sumRow = 0;
                int j = 0;
                decimal[] LastSumPriceVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] LastSumPriceUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                decimal PaidPriceVND = 0;
                decimal PaidPriceUSD = 0;

                int line = 0;
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rRent - 3 + j;

                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rRent + 1 + j);
                                xlsSheetEn.Rows.Insert(rRent + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rRent + j;

                            string ContractId = Func.ParseString(rowType["ContractId"]);
                            string ContractNo = Func.ParseString(rowType["ContractNo"]);
                            string YearMonth = Func.ParseString(rowType["YearMonth"]);
                            string Area = Func.ParseString(rowType["Area"]);
                            string Name = Func.ParseString(rowType["Name"]);
                            string Regional = Func.ParseString(rowType["Regional"]);
                            string Floor = Func.ParseString(rowType["Floor"]);

                            string BeginContract = Func.ParseString(rowType["BeginContract"]);

                            if (!contractIdLst.ContainsKey(ContractId + "(" + BeginContract.Substring(0, 10) + ")"))
                            {
                                contractIdLst.Add(ContractId + "(" + BeginContract.Substring(0, 10) + ")", ContractNo + "(" + BeginContract.Substring(0, 10) + ")");
                                contract += ";" + ContractNo + "(" + BeginContract.Substring(0, 10) + ")";
                            }

                            xlsSheet[tmp, 1].Value = Name;
                            xlsSheet[tmp, 4].Value = rowType["Area"];
                            xlsSheet[tmp, 6].Value = rowType["MonthRentPriceUSD"];
                            xlsSheet[tmp, 7].Value = rowType["MonthRentPriceVND"];

                            xlsSheet[tmp, 8].Value = rowType["MonthRentSumUSD"];
                            xlsSheet[tmp, 9].Value = rowType["MonthRentSumVND"];

                            xlsSheet[tmp, 10].Value = rowType["VatRentPriceUSD"];
                            xlsSheet[tmp, 11].Value = rowType["VatRentPriceVND"];

                            xlsSheet[tmp, 12].Value = rowType["LastRentSumUSD"];
                            xlsSheet[tmp, 13].Value = rowType["LastRentSumVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            ////EN
                            xlsSheetEn[tmp, 1].Value = Name;
                            xlsSheetEn[tmp, 4].Value = rowType["Area"];
                            xlsSheetEn[tmp, 6].Value = rowType["MonthRentPriceUSD"];
                            xlsSheetEn[tmp, 7].Value = rowType["MonthRentPriceVND"];

                            xlsSheetEn[tmp, 8].Value = rowType["MonthRentSumUSD"];
                            xlsSheetEn[tmp, 9].Value = rowType["MonthRentSumVND"];

                            xlsSheetEn[tmp, 10].Value = rowType["VatRentPriceUSD"];
                            xlsSheetEn[tmp, 11].Value = rowType["VatRentPriceVND"];

                            xlsSheetEn[tmp, 12].Value = rowType["LastRentSumUSD"];
                            xlsSheetEn[tmp, 13].Value = rowType["LastRentSumVND"];

                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheetEn.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheetEn.MergedCells.Add(mrCell);
                            ////EN

                            LastSumPriceVND[0] += Convert.ToDecimal(rowType["LastRentSumVND"]);
                            LastSumPriceUSD[0] += Convert.ToDecimal(rowType["LastRentSumUSD"]);

                        }
                        mCell = new XLCellRange(rRent + 1 + j, rRent + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);
                        xlsSheetEn.MergedCells.Add(mCell);

                        xlsSheet[rRent + 1 + j, 12].Value = LastSumPriceUSD[0];
                        xlsSheet[rRent + 1 + j, 13].Value = LastSumPriceVND[0];

                        xlsSheetEn[rRent + 1 + j, 12].Value = LastSumPriceUSD[0];
                        xlsSheetEn[rRent + 1 + j, 13].Value = LastSumPriceVND[0];

                        for (int row = rRent + sumRow; row <= rRent + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                                xlsSheetEn[row, col].Style = xlstStyle;
                            }
                        }
                        sumRow += dt.Rows.Count - 1;

                        ////////////////////////
                        for (int col = 1; col <= 13; col++)
                        {
                            xlsSheet[rRent + 1 + j, col].Style = xlstStyleSum;
                            xlsSheetEn[rRent + 1 + j, col].Style = xlstStyleSum;
                        }
                        line = rManager - 3 + j;
                        mCell = new XLCellRange(line, line + 2, 1, 3);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 6, 7);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 8, 9);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 10, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        ////En
                        mCell = new XLCellRange(line, line + 2, 1, 3);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 4, 5);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 6, 7);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 8, 9);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 10, 11);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 12, 13);
                        xlsSheetEn.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                        xlsSheetEn.MergedCells.Add(mCell);
                        ////En
                        count = 0;
                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rManager + 1 + j);
                                xlsSheetEn.Rows.Insert(rManager + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rManager + j;

                            string YearMonth = Func.ParseString(row["YearMonth"]);
                            string Area = Func.ParseString(row["Area"]);
                            string Name = Func.ParseString(row["Name"]);

                            xlsSheet[tmp, 1].Value = Name;
                            xlsSheet[tmp, 4].Value = row["Area"];
                            xlsSheet[tmp, 6].Value = row["MonthManagerPriceUSD"];
                            xlsSheet[tmp, 7].Value = row["MonthManagerPriceVND"];

                            xlsSheet[tmp, 8].Value = row["MonthManagerSumUSD"];
                            xlsSheet[tmp, 9].Value = row["MonthManagerSumVND"];

                            xlsSheet[tmp, 19].Value = row["VatManagerPriceUSD"];
                            xlsSheet[tmp, 11].Value = row["VatManagerPriceVND"];

                            xlsSheet[tmp, 12].Value = row["LastManagerSumUSD"];
                            xlsSheet[tmp, 13].Value = row["LastManagerSumVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            ////En
                            xlsSheetEn[tmp, 1].Value = Name;
                            xlsSheetEn[tmp, 4].Value = row["Area"];
                            xlsSheetEn[tmp, 6].Value = row["MonthManagerPriceUSD"];
                            xlsSheetEn[tmp, 7].Value = row["MonthManagerPriceVND"];

                            xlsSheetEn[tmp, 8].Value = row["MonthManagerSumUSD"];
                            xlsSheetEn[tmp, 9].Value = row["MonthManagerSumVND"];

                            xlsSheetEn[tmp, 19].Value = row["VatManagerPriceUSD"];
                            xlsSheetEn[tmp, 11].Value = row["VatManagerPriceVND"];

                            xlsSheetEn[tmp, 12].Value = row["LastManagerSumUSD"];
                            xlsSheetEn[tmp, 13].Value = row["LastManagerSumVND"];

                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheetEn.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheetEn.MergedCells.Add(mrCell);
                            ////En
                            LastSumPriceVND[1] += Convert.ToDecimal(row["LastManagerSumVND"]);
                            LastSumPriceUSD[1] += Convert.ToDecimal(row["LastManagerSumUSD"]);
                        }
                        mCell = new XLCellRange(rManager + 1 + j, rManager + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);
                        xlsSheetEn.MergedCells.Add(mCell);

                        xlsSheet[rManager + 1 + j, 12].Value = LastSumPriceUSD[1];
                        xlsSheet[rManager + 1 + j, 13].Value = LastSumPriceVND[1];

                        xlsSheetEn[rManager + 1 + j, 12].Value = LastSumPriceUSD[1];
                        xlsSheetEn[rManager + 1 + j, 13].Value = LastSumPriceVND[1];

                        for (int row = rManager + sumRow; row <= rManager + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                                xlsSheetEn[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 13; col++)
                        {
                            xlsSheet[rManager + 1 + j, col].Style = xlstStyleSum;
                            xlsSheetEn[rManager + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT COUNT(*) AS Num, YearMonth, TariffsParkingName, PriceVND, PriceUSD, SUM(VatVND) AS VatVND,SUM(VatUSD) AS VatUSD, SUM(SumVND) AS SumVND, SUM(SumUSD) AS SumUSD, SUM(LastPriceVND) AS LastPriceVND";
                sql += "        , SUM(LastPriceUSD) AS LastPriceUSD";
                sql += " FROM         dbo.PaymentParking";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";
                sql += " GROUP BY YearMonth, TariffsParkingName, PriceVND, PriceUSD, Vat, daysParking";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rParking - 3 + j;
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    ////En
                    mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);
                    ////En
                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rParking + 1 + j);
                                xlsSheetEn.Rows.Insert(rParking + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rParking + j;

                            string Num = Func.ParseString(row["Num"]);
                            string TariffsParkingName = Func.ParseString(row["TariffsParkingName"]);

                            xlsSheet[tmp, 1].Value = TariffsParkingName;
                            xlsSheet[tmp, 4].Value = Num;
                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                            xlsSheet[tmp, 9].Value = row["SumVND"];

                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                            xlsSheet[tmp, 11].Value = row["VatVND"];

                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            /////En
                            xlsSheetEn[tmp, 1].Value = TariffsParkingName;
                            xlsSheetEn[tmp, 4].Value = Num;
                            xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                            xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                            xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                            xlsSheetEn[tmp, 9].Value = row["SumVND"];

                            xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                            xlsSheetEn[tmp, 11].Value = row["VatVND"];

                            xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];

                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheetEn.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheetEn.MergedCells.Add(mrCell);
                            /////En
                            LastSumPriceVND[2] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[2] += Convert.ToDecimal(row["LastPriceUSD"]);
                        }
                        xlsSheet[rParking + 1 + j, 12].Value = LastSumPriceUSD[2];
                        xlsSheet[rParking + 1 + j, 13].Value = LastSumPriceVND[2];

                        mCell = new XLCellRange(rParking + 1 + j, rParking + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        /////En
                        xlsSheetEn[rParking + 1 + j, 12].Value = LastSumPriceUSD[2];
                        xlsSheetEn[rParking + 1 + j, 13].Value = LastSumPriceVND[2];

                        mCell = new XLCellRange(rParking + 1 + j, rParking + 1 + j, 1, 11);
                        xlsSheetEn.MergedCells.Add(mCell);
                        /////En

                        for (int row = rParking + sumRow; row <= rParking + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                                xlsSheetEn[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 13; col++)
                        {
                            xlsSheet[rParking + 1 + j, col].Style = xlstStyleSum;
                            xlsSheetEn[rParking + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                sql = "SELECT id";
                sql += " ,YearMonth,BuildingId,CustomerId,RoomId,ExtraHour,VAT,OtherFee01,OtherFee02";
                sql += " ,PriceUSD,PriceVND,VatUSD,VatVND,SumUSD,SumVND,LastPriceUSD,LastPriceVND";
                sql += " ,RentArea,dbo.fnDateTime(FromWD) BeginDate,dbo.fnDateTime(EndWD) EndDate,ExtratimeType";
                sql += " FROM PaymentExtraTimeMonth";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rExtra - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    /////En
                    mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 4, 4);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);
                    /////En
                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rExtra + 1 + j);
                                xlsSheetEn.Rows.Insert(rExtra + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rExtra + j;

                            string ExtraHour = Func.ParseString(row["ExtraHour"]);
                            string BeginDate = Func.ParseString(row["BeginDate"]);
                            string EndDate = Func.ParseString(row["EndDate"]);

                            string ExtratimeType = Func.ParseString(row["ExtratimeType"]);

                            xlsSheet[tmp, 1].Value = BeginDate + "~" + EndDate;
                            xlsSheet[tmp, 5].Value = ExtraHour;

                            xlsSheet[tmp, 4].Value = "Diện tích";
                            if ("0".Equals(ExtratimeType))
                            {
                                xlsSheet[tmp, 4].Value = "m2*h";
                            }
                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                            xlsSheet[tmp, 9].Value = row["SumVND"];

                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                            xlsSheet[tmp, 11].Value = row["VatVND"];

                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                            LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[3] += Convert.ToDecimal(row["LastPriceUSD"]);

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);
                            //////En
                            xlsSheetEn[tmp, 1].Value = BeginDate + "~" + EndDate;
                            xlsSheetEn[tmp, 5].Value = ExtraHour;

                            xlsSheetEn[tmp, 4].Value = "Di?n tích";
                            if ("0".Equals(ExtratimeType))
                            {
                                xlsSheetEn[tmp, 4].Value = "m2*h";
                            }
                            xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                            xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                            xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                            xlsSheetEn[tmp, 9].Value = row["SumVND"];

                            xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                            xlsSheetEn[tmp, 11].Value = row["VatVND"];

                            xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];

                            LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[3] += Convert.ToDecimal(row["LastPriceUSD"]);

                            mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheetEn.MergedCells.Add(mrCell);
                            //////En

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                                xlsSheetEn[tmp, col].Style = xlstStyle;
                            }

                        }
                        mCell = new XLCellRange(rExtra + 1 + j, rExtra + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);
                        xlsSheetEn.MergedCells.Add(mCell);

                        xlsSheet[rExtra + 1 + j, 12].Value = LastSumPriceUSD[3];
                        xlsSheet[rExtra + 1 + j, 13].Value = LastSumPriceVND[3];

                        xlsSheetEn[rExtra + 1 + j, 12].Value = LastSumPriceUSD[3];
                        xlsSheetEn[rExtra + 1 + j, 13].Value = LastSumPriceVND[3];

                        for (int row = rExtra + sumRow; row <= rExtra + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                                xlsSheetEn[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 12; col++)
                        {
                            xlsSheet[rExtra + 1 + j, col].Style = xlstStyleSum;
                            xlsSheetEn[rExtra + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                //Dien
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD, B.LastPriceVND, B.LastPriceUSD, B.Name, B.WaterPricePercent,B.ElecPricePercent ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfWaterId = 0  and A.YearMonth in (" + lsYearmonth + ")";
                sql += " Order by A.DateFrom, B.FromIndex";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rElec - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    /////En
                    mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);
                    /////En

                    for (int col = 1; col < 13; col++)
                    {
                        xlsSheet[line, col].Style = xlstStyleH;
                        xlsSheet[line + 1, col].Style = xlstStyleH;
                        xlsSheet[line + 2, col].Style = xlstStyleH;

                        xlsSheetEn[line, col].Style = xlstStyleH;
                        xlsSheetEn[line + 1, col].Style = xlstStyleH;
                        xlsSheetEn[line + 2, col].Style = xlstStyleH;
                    }

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        if (dt.Rows.Count > 0)
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rElec + 1 + j);
                                    xlsSheetEn.Rows.Insert(rElec + 1 + j);
                                    j++;

                                }
                                count++;
                                int tmp = rElec + j;

                                string DateFrom = Func.ParseString(row["DateFrom"]);
                                string DateTo = Func.ParseString(row["DateTo"]);

                                string FromIndex = Func.ParseString(row["FromIndex"]);
                                string ToIndex = Func.ParseString(row["ToIndex"]);
                                string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                string Mount = Func.ParseString(row["Mount"]);
                                string ElecPricePercent = Func.ParseString(row["ElecPricePercent"]);

                                xlsSheet[tmp, 1].Value = DateFrom;
                                xlsSheet[tmp, 2].Value = DateTo;
                                xlsSheet[tmp, 3].Value = FromIndex;
                                xlsSheet[tmp, 4].Value = ToIndex;
                                xlsSheet[tmp, 5].Value = OtherFee01;
                                xlsSheet[tmp, 6].Value = Mount;
                                xlsSheet[tmp, 7].Value = row["PriceVND"];
                                xlsSheet[tmp, 8].Value = row["VatVND"];

                                xlsSheet[tmp, 9].Value = row["SumVND"];
                                xlsSheet[tmp, 10].Value = row["OtherFee02"];
                                xlsSheet[tmp, 11].Value = row["ElecPricePercent"];
                                xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                                mCell = new XLCellRange(tmp, tmp, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);

                                /////En
                                xlsSheetEn[tmp, 1].Value = DateFrom;
                                xlsSheetEn[tmp, 2].Value = DateTo;
                                xlsSheetEn[tmp, 3].Value = FromIndex;
                                xlsSheetEn[tmp, 4].Value = ToIndex;
                                xlsSheetEn[tmp, 5].Value = OtherFee01;
                                xlsSheetEn[tmp, 6].Value = Mount;
                                xlsSheetEn[tmp, 7].Value = row["PriceVND"];
                                xlsSheetEn[tmp, 8].Value = row["VatVND"];

                                xlsSheetEn[tmp, 9].Value = row["SumVND"];
                                xlsSheetEn[tmp, 10].Value = row["OtherFee02"];
                                xlsSheetEn[tmp, 11].Value = row["ElecPricePercent"];
                                xlsSheetEn[tmp, 12].Value = row["LastPriceVND"];

                                mCell = new XLCellRange(tmp, tmp, 12, 13);
                                xlsSheetEn.MergedCells.Add(mCell);
                                /////En
                                for (int col = 1; col <= 12; col++)
                                {
                                    xlsSheet[tmp, col].Style = xlstStyle;
                                    xlsSheetEn[tmp, col].Style = xlstStyle;
                                }
                                LastSumPriceVND[4] += Convert.ToDecimal(row["LastPriceVND"]);
                                LastSumPriceUSD[4] += Convert.ToDecimal(row["LastPriceUSD"]);
                            }
                            xlsSheet[rElec + 1 + j, 12].Value = LastSumPriceVND[4];
                            mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 1, 11);
                            xlsSheet.MergedCells.Add(mCell);

                            mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 12, 13);
                            xlsSheet.MergedCells.Add(mCell);

                            xlsSheetEn[rElec + 1 + j, 12].Value = LastSumPriceVND[4];
                            mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 1, 11);
                            xlsSheetEn.MergedCells.Add(mCell);

                            mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 12, 13);
                            xlsSheetEn.MergedCells.Add(mCell);

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[rElec + 1 + j, col].Style = xlstStyleSum;
                                xlsSheetEn[rElec + 1 + j, col].Style = xlstStyleSum;
                            }
                            sumRow += dt.Rows.Count - 1;
                        }
                    }
                }

                ds = new DataSet();
                //Nuoc
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD, B.LastPriceVND, B.LastPriceUSD, B.Name, B.WaterPricePercent,B.ElecPricePercent  ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfElecId = 0 and A.YearMonth in (" + lsYearmonth + ")";
                sql += " Order by A.DateFrom, B.FromIndex";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rWater - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 6, 6);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    /////En
                    mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 6, 6);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 10, 10);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheetEn.MergedCells.Add(mCell);
                    /////En

                    for (int col = 1; col < 13; col++)
                    {
                        xlsSheet[line, col].Style = xlstStyleH;
                        xlsSheet[line + 1, col].Style = xlstStyleH;
                        xlsSheet[line + 2, col].Style = xlstStyleH;

                        xlsSheetEn[line, col].Style = xlstStyleH;
                        xlsSheetEn[line + 1, col].Style = xlstStyleH;
                        xlsSheetEn[line + 2, col].Style = xlstStyleH;
                    }

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        if (dt.Rows.Count > 0)
                        {
                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rWater + 1 + j);
                                    xlsSheetEn.Rows.Insert(rWater + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rWater + j;

                                string DateFrom = Func.ParseString(row["DateFrom"]);
                                string DateTo = Func.ParseString(row["DateTo"]);

                                string FromIndex = Func.ParseString(row["FromIndex"]);
                                string ToIndex = Func.ParseString(row["ToIndex"]);
                                string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                string Mount = Func.ParseString(row["Mount"]);

                                xlsSheet[tmp, 1].Value = DateFrom;
                                xlsSheet[tmp, 2].Value = DateTo;
                                xlsSheet[tmp, 3].Value = FromIndex;
                                xlsSheet[tmp, 4].Value = ToIndex;
                                xlsSheet[tmp, 5].Value = Mount;
                                xlsSheet[tmp, 6].Value = row["PriceVND"];
                                xlsSheet[tmp, 7].Value = row["OtherFee01"];
                                xlsSheet[tmp, 8].Value = row["VatVND"];

                                xlsSheet[tmp, 9].Value = row["SumVND"];
                                xlsSheet[tmp, 10].Value = row["OtherFee02"];
                                xlsSheet[tmp, 11].Value = row["WaterPricePercent"];
                                xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                                /////En
                                xlsSheetEn[tmp, 1].Value = DateFrom;
                                xlsSheetEn[tmp, 2].Value = DateTo;
                                xlsSheetEn[tmp, 3].Value = FromIndex;
                                xlsSheetEn[tmp, 4].Value = ToIndex;
                                xlsSheetEn[tmp, 5].Value = Mount;
                                xlsSheetEn[tmp, 6].Value = row["PriceVND"];
                                xlsSheetEn[tmp, 7].Value = row["OtherFee01"];
                                xlsSheetEn[tmp, 8].Value = row["VatVND"];

                                xlsSheetEn[tmp, 9].Value = row["SumVND"];
                                xlsSheetEn[tmp, 10].Value = row["OtherFee02"];
                                xlsSheetEn[tmp, 11].Value = row["WaterPricePercent"];
                                xlsSheetEn[tmp, 12].Value = row["LastPriceVND"];

                                /////En
                                for (int col = 1; col <= 12; col++)
                                {
                                    xlsSheet[tmp, col].Style = xlstStyle;
                                    xlsSheetEn[tmp, col].Style = xlstStyle;
                                }
                                LastSumPriceVND[5] += Convert.ToDecimal(row["LastPriceVND"]);
                                LastSumPriceUSD[5] += Convert.ToDecimal(row["LastPriceUSD"]);

                                mCell = new XLCellRange(tmp, tmp, 12, 13);
                                xlsSheet.MergedCells.Add(mCell);
                                xlsSheetEn.MergedCells.Add(mCell);
                            }
                            xlsSheet[rWater + 1 + j, 12].Value = LastSumPriceVND[5];
                            xlsSheetEn[rWater + 1 + j, 12].Value = LastSumPriceVND[5];
                            mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 1, 11);
                            xlsSheet.MergedCells.Add(mCell);
                            xlsSheetEn.MergedCells.Add(mCell);

                            mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 12, 13);
                            xlsSheet.MergedCells.Add(mCell);
                            xlsSheetEn.MergedCells.Add(mCell);

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[rWater + 1 + j, col].Style = xlstStyleSum;
                                xlsSheetEn[rWater + 1 + j, col].Style = xlstStyleSum;
                            }
                            sumRow += dt.Rows.Count - 1;
                        }
                    }
                }

                //Service
                ds = new DataSet();

                sql = string.Empty;
                sql = " SELECT Service,dbo.fnDateTime(ServiceDateFrom) ServiceDateFrom,dbo.fnDateTime(ServiceDateTo) ServiceDateTo,PriceVND,PriceUSD,VatUSD,VatVND,Mount,Unit,SumVND,SumUSD,LastPriceVND,LastPriceUSD ";
                sql += " FROM   PaymentService";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";
                sql += " Order By ServiceDate ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rService - 3 + j;
                    //Phi khác
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    /////En
                    mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 3, 3);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 4, 4);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheetEn.MergedCells.Add(mCell);
                    /////En
                    for (int col = 1; col < 13; col++)
                    {
                        xlsSheet[line, col].Style = xlstStyleH;
                        xlsSheet[line + 1, col].Style = xlstStyleH;
                        xlsSheet[line + 2, col].Style = xlstStyleH;

                        xlsSheetEn[line, col].Style = xlstStyleH;
                        xlsSheetEn[line + 1, col].Style = xlstStyleH;
                        xlsSheetEn[line + 2, col].Style = xlstStyleH;
                    }
                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    xlsSheetEn.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        if (dt.Rows.Count > 0)
                        {

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rService + 1 + j);
                                    xlsSheetEn.Rows.Insert(rService + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rService + j;

                                string Service = Func.ParseString(row["Service"]);
                                string ServiceDateFrom = Func.ParseString(row["ServiceDateFrom"]);
                                string ServiceDateTo = Func.ParseString(row["ServiceDateTo"]);

                                string Mount = Func.ParseString(row["Mount"]);

                                xlsSheet[tmp, 1].Value = Service;
                                xlsSheet[tmp, 2].Value = Func.ParseString(row["Unit"]);
                                xlsSheet[tmp, 3].Value = ServiceDateFrom;
                                xlsSheet[tmp, 4].Value = ServiceDateTo;
                                xlsSheet[tmp, 5].Value = Mount;

                                xlsSheet[tmp, 6].Value = row["PriceUSD"];
                                xlsSheet[tmp, 7].Value = row["PriceVND"];

                                xlsSheet[tmp, 8].Value = row["SumUSD"];
                                xlsSheet[tmp, 9].Value = row["SumVND"];

                                xlsSheet[tmp, 10].Value = row["VatUSD"];
                                xlsSheet[tmp, 11].Value = row["VatVND"];

                                xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                                xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                                /////En
                                xlsSheetEn[tmp, 1].Value = Service;
                                xlsSheetEn[tmp, 2].Value = Func.ParseString(row["Unit"]);
                                xlsSheetEn[tmp, 3].Value = ServiceDateFrom;
                                xlsSheetEn[tmp, 4].Value = ServiceDateTo;
                                xlsSheetEn[tmp, 5].Value = Mount;

                                xlsSheetEn[tmp, 6].Value = row["PriceUSD"];
                                xlsSheetEn[tmp, 7].Value = row["PriceVND"];

                                xlsSheetEn[tmp, 8].Value = row["SumUSD"];
                                xlsSheetEn[tmp, 9].Value = row["SumVND"];

                                xlsSheetEn[tmp, 10].Value = row["VatUSD"];
                                xlsSheetEn[tmp, 11].Value = row["VatVND"];

                                xlsSheetEn[tmp, 12].Value = row["LastPriceUSD"];
                                xlsSheetEn[tmp, 13].Value = row["LastPriceVND"];
                                /////En

                                for (int col = 1; col <= 13; col++)
                                {
                                    xlsSheet[tmp, col].Style = xlstStyle;
                                    xlsSheetEn[tmp, col].Style = xlstStyle;
                                }
                                LastSumPriceVND[6] += Convert.ToDecimal(row["LastPriceVND"]);
                                LastSumPriceUSD[6] += Convert.ToDecimal(row["LastPriceUSD"]);
                            }
                            xlsSheet[rService + 1 + j, 12].Value = LastSumPriceUSD[6];
                            xlsSheet[rService + 1 + j, 13].Value = LastSumPriceVND[6];

                            xlsSheetEn[rService + 1 + j, 12].Value = LastSumPriceUSD[6];
                            xlsSheetEn[rService + 1 + j, 13].Value = LastSumPriceVND[6];

                            mCell = new XLCellRange(rService + 1 + j, rService + 1 + j, 1, 11);
                            xlsSheet.MergedCells.Add(mCell);
                            xlsSheetEn.MergedCells.Add(mCell);

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[rService + 1 + j, col].Style = xlstStyleSum;
                                xlsSheetEn[rService + 1 + j, col].Style = xlstStyleSum;
                            }
                            sumRow += dt.Rows.Count - 1;
                        }
                    }
                }

                //Paid
                sql = "Select  *";
                sql += " From    PaymentBillDetail";
                sql += " Where   BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";
                string strYearMonth = "";
                int lineTmp = rPaid - 2 + j;

                //Paid
                XLCellRange mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheet.MergedCells.Add(mCellTmp);

                /////En
                mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheetEn.MergedCells.Add(mCellTmp);
                /////En
                Hashtable rowNo = new Hashtable();
                decimal[] PaidSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] PaidSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                DataTable dtPaid = DbHelper.GetDataTable(sql);
                for (int i = 0; i < dtPaid.Rows.Count; i++)
                {
                    string PaymentType = Func.ParseString(dtPaid.Rows[i]["PaymentType"]);
                    string MoneyUSD = Func.ParseString(dtPaid.Rows[i]["MoneyUSD"]);
                    string MoneyVND = Func.ParseString(dtPaid.Rows[i]["MoneyVND"]);
                    string PaidUSD = Func.ParseString(dtPaid.Rows[i]["PaidUSD"]);
                    string PaidVND = Func.ParseString(dtPaid.Rows[i]["PaidVND"]);
                    string ExchangeType = Func.ParseString(dtPaid.Rows[i]["ExchangeType"]);
                    string UsdExchange = Func.ParseString(dtPaid.Rows[i]["UsdExchange"]);
                    string YearMonth = Func.ParseString(dtPaid.Rows[i]["YearMonth"]);

                    if (!rowNo.Contains(YearMonth))
                    {
                        if (rowNo.Count != 0)
                        {
                            xlsSheet.Rows.Insert(rPaid + j + 1);
                            xlsSheetEn.Rows.Insert(rPaid + j + 1);
                            j++;
                        }
                        rowNo.Add(YearMonth, j);
                    }
                    int m = Func.ParseInt(rowNo[YearMonth]);
                    strYearMonth = YearMonth;
                    decimal tmpUSD = Convert.ToDecimal(MoneyUSD) - Convert.ToDecimal(PaidUSD);
                    decimal tmpVND = Convert.ToDecimal(MoneyVND) - Convert.ToDecimal(PaidVND);

                    PaidPriceUSD += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                    PaidPriceVND += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                    xlsSheet[rPaid + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                    xlsSheetEn[rPaid + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                    switch (PaymentType)
                    {
                        case "1":
                            //Rent
                            xlsSheet[rPaid + m, 2].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + m, 3].Value = dtPaid.Rows[i]["PaidVND"];

                            xlsSheetEn[rPaid + m, 2].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheetEn[rPaid + m, 3].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[0] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[0] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                            break;
                        case "2":
                            //Manager
                            xlsSheet[rPaid + m, 4].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + m, 5].Value = dtPaid.Rows[i]["PaidVND"];

                            xlsSheetEn[rPaid + m, 4].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheetEn[rPaid + m, 5].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[1] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[1] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                            break;
                        case "3":
                            //Parking
                            xlsSheet[rPaid + m, 6].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + m, 7].Value = dtPaid.Rows[i]["PaidVND"];

                            xlsSheetEn[rPaid + m, 6].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheetEn[rPaid + m, 7].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[2] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[2] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                            break;
                        case "4":
                            //Extra
                            xlsSheet[rPaid + m, 8].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + m, 9].Value = dtPaid.Rows[i]["PaidVND"];

                            xlsSheetEn[rPaid + m, 8].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheetEn[rPaid + m, 9].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[3] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[3] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                            break;
                        case "5":
                            xlsSheet[rPaid + m, 10].Value = dtPaid.Rows[i]["PaidVND"];
                            xlsSheetEn[rPaid + m, 10].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[4] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[4] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                            break;
                        case "6":
                            xlsSheet[rPaid + m, 11].Value = dtPaid.Rows[i]["PaidVND"];
                            xlsSheetEn[rPaid + m, 11].Value = dtPaid.Rows[i]["PaidVND"];

                            PaidSumUSD[5] += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                            PaidSumVND[5] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                            break;
                        case "7":
                            xlsSheet[rPaid + m, 12].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + m, 13].Value = dtPaid.Rows[i]["PaidVND"];

                            xlsSheetEn[rPaid + m, 12].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheetEn[rPaid + m, 13].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        default:
                            break;
                    }
                    for (int row = rPaid + m; row <= rPaid + 1 + j; row++)
                    {
                        for (int col = 1; col <= 13; col++)
                        {
                            xlsSheet[row, col].Style = xlstStyle;
                        }
                    }
                }
                lineTmp = rPaid - 2 + j;

                xlsSheet[lineTmp + 3, 2].Value = PaidSumUSD[0];
                xlsSheet[lineTmp + 3, 3].Value = PaidSumVND[0];
                xlsSheet[lineTmp + 3, 4].Value = PaidSumUSD[1];
                xlsSheet[lineTmp + 3, 5].Value = PaidSumVND[1];
                xlsSheet[lineTmp + 3, 6].Value = PaidSumUSD[2];
                xlsSheet[lineTmp + 3, 7].Value = PaidSumVND[2];
                xlsSheet[lineTmp + 3, 8].Value = PaidSumUSD[3];
                xlsSheet[lineTmp + 3, 9].Value = PaidSumVND[3];
                xlsSheet[lineTmp + 3, 10].Value = PaidSumVND[4];
                xlsSheet[lineTmp + 3, 11].Value = PaidSumVND[5];
                xlsSheet[lineTmp + 3, 12].Value = PaidSumUSD[6];
                xlsSheet[lineTmp + 3, 13].Value = PaidSumVND[6];

                /////En
                xlsSheetEn[lineTmp + 3, 2].Value = PaidSumUSD[0];
                xlsSheetEn[lineTmp + 3, 3].Value = PaidSumVND[0];
                xlsSheetEn[lineTmp + 3, 4].Value = PaidSumUSD[1];
                xlsSheetEn[lineTmp + 3, 5].Value = PaidSumVND[1];
                xlsSheetEn[lineTmp + 3, 6].Value = PaidSumUSD[2];
                xlsSheetEn[lineTmp + 3, 7].Value = PaidSumVND[2];
                xlsSheetEn[lineTmp + 3, 8].Value = PaidSumUSD[3];
                xlsSheetEn[lineTmp + 3, 9].Value = PaidSumVND[3];
                xlsSheetEn[lineTmp + 3, 10].Value = PaidSumVND[4];
                xlsSheetEn[lineTmp + 3, 11].Value = PaidSumVND[5];
                xlsSheetEn[lineTmp + 3, 12].Value = PaidSumUSD[6];
                xlsSheetEn[lineTmp + 3, 13].Value = PaidSumVND[6];
                /////En

                for (int col = 1; col <= 13; col++)
                {
                    xlsSheet[lineTmp + 3, col].Style = xlstStyleSum;
                    xlsSheetEn[lineTmp + 3, col].Style = xlstStyleSum;
                }

                ///////////////DEPT
                sql = "  Select *";
                sql += " From   v_DeptBill";
                sql += " Where  BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth not in (" + lsYearmonth + ")";
                sql += " And    (DeptUsd <> 0 or DeptVnd <> 0)";
                strYearMonth = "";
                lineTmp = rDept - 2 + j;

                //Paid
                mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheet.MergedCells.Add(mCellTmp);

                //////En
                mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheetEn.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheetEn.MergedCells.Add(mCellTmp);
                //////En
                rowNo = new Hashtable();
                decimal DeptPriceVND = 0;
                decimal DeptPriceUSD = 0;

                decimal[] DeptSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] DeptSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                DataTable dtDept = DbHelper.GetDataTable(sql);
                for (int i = 0; i < dtDept.Rows.Count; i++)
                {
                    string PaymentType = Func.ParseString(dtDept.Rows[i]["PaymentType"]);
                    string DeptUSD = Func.ParseString(dtDept.Rows[i]["DeptUSD"]);
                    string DeptVND = Func.ParseString(dtDept.Rows[i]["DeptVND"]);
                    string YearMonth = Func.ParseString(dtDept.Rows[i]["YearMonth"]);

                    if (!rowNo.Contains(YearMonth))
                    {
                        if (rowNo.Count != 0)
                        {
                            xlsSheet.Rows.Insert(rDept + j + 1);
                            xlsSheetEn.Rows.Insert(rDept + j + 1);
                            j++;
                        }
                        rowNo.Add(YearMonth, j);
                    }
                    int m = Func.ParseInt(rowNo[YearMonth]);
                    strYearMonth = YearMonth;

                    DeptPriceUSD += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                    DeptPriceVND += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                    xlsSheet[rDept + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                    xlsSheetEn[rDept + m, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);

                    xlsSheetEn[rDept + m, 2].Value = 0;
                    xlsSheetEn[rDept + m, 3].Value = 0;
                    xlsSheetEn[rDept + m, 4].Value = 0;
                    xlsSheetEn[rDept + m, 5].Value = 0;
                    xlsSheetEn[rDept + m, 6].Value = 0;
                    xlsSheetEn[rDept + m, 7].Value = 0;
                    xlsSheetEn[rDept + m, 8].Value = 0;
                    xlsSheetEn[rDept + m, 9].Value = 0;
                    xlsSheetEn[rDept + m, 10].Value = 0;
                    xlsSheetEn[rDept + m, 11].Value = 0;
                    xlsSheetEn[rDept + m, 12].Value = 0;
                    xlsSheetEn[rDept + m, 13].Value = 0;

                    xlsSheet[rDept + m, 2].Value = 0;
                    xlsSheet[rDept + m, 3].Value = 0;
                    xlsSheet[rDept + m, 4].Value = 0;
                    xlsSheet[rDept + m, 5].Value = 0;
                    xlsSheet[rDept + m, 6].Value = 0;
                    xlsSheet[rDept + m, 7].Value = 0;
                    xlsSheet[rDept + m, 8].Value = 0;
                    xlsSheet[rDept + m, 9].Value = 0;
                    xlsSheet[rDept + m, 10].Value = 0;
                    xlsSheet[rDept + m, 11].Value = 0;
                    xlsSheet[rDept + m, 12].Value = 0;
                    xlsSheet[rDept + m, 13].Value = 0;

                    switch (PaymentType)
                    {
                        case "1":
                            //Rent
                            xlsSheet[rDept + m, 2].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheet[rDept + m, 3].Value = dtDept.Rows[i]["DeptVND"];

                            xlsSheetEn[rDept + m, 2].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheetEn[rDept + m, 3].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[0] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[0] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                            break;
                        case "2":
                            //Manager
                            xlsSheet[rDept + m, 4].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheet[rDept + m, 5].Value = dtDept.Rows[i]["DeptVND"];

                            xlsSheetEn[rDept + m, 4].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheetEn[rDept + m, 5].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[1] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[1] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                            break;
                        case "3":
                            //Parking
                            xlsSheet[rDept + m, 6].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheet[rDept + m, 7].Value = dtDept.Rows[i]["DeptVND"];

                            xlsSheetEn[rDept + m, 6].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheetEn[rDept + m, 7].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[2] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[2] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                            break;
                        case "4":
                            //Extra
                            xlsSheet[rDept + m, 8].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheet[rDept + m, 9].Value = dtDept.Rows[i]["DeptVND"];

                            xlsSheetEn[rDept + m, 8].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheetEn[rDept + m, 9].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[3] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[3] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                            break;
                        case "5":
                            xlsSheet[rDept + m, 10].Value = dtDept.Rows[i]["DeptVND"];
                            xlsSheetEn[rDept + m, 10].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[4] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[4] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                            break;
                        case "6":
                            xlsSheet[rDept + m, 11].Value = dtDept.Rows[i]["DeptVND"];
                            xlsSheetEn[rDept + m, 11].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[5] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[5] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                            break;
                        case "7":
                            xlsSheet[rDept + m, 12].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheet[rDept + m, 13].Value = dtDept.Rows[i]["DeptVND"];

                            xlsSheetEn[rDept + m, 12].Value = dtDept.Rows[i]["DeptUSD"];
                            xlsSheetEn[rDept + m, 13].Value = dtDept.Rows[i]["DeptVND"];

                            DeptSumUSD[6] += Convert.ToDecimal(dtDept.Rows[i]["DeptUSD"]);
                            DeptSumVND[6] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                            break;
                        default:
                            break;
                    }
                    for (int row = rDept + m; row <= rDept + 1 + j; row++)
                    {
                        for (int col = 1; col <= 13; col++)
                        {
                            xlsSheet[row, col].Style = xlstStyle;
                            xlsSheetEn[row, col].Style = xlstStyle;
                        }
                    }
                }
                lineTmp = rDept - 2 + j;

                xlsSheet[lineTmp + 3, 2].Value = DeptSumUSD[0];
                xlsSheet[lineTmp + 3, 3].Value = DeptSumVND[0];
                xlsSheet[lineTmp + 3, 4].Value = DeptSumUSD[1];
                xlsSheet[lineTmp + 3, 5].Value = DeptSumVND[1];
                xlsSheet[lineTmp + 3, 6].Value = DeptSumUSD[2];
                xlsSheet[lineTmp + 3, 7].Value = DeptSumVND[2];
                xlsSheet[lineTmp + 3, 8].Value = DeptSumUSD[3];
                xlsSheet[lineTmp + 3, 9].Value = DeptSumVND[3];
                xlsSheet[lineTmp + 3, 10].Value = DeptSumVND[4];
                xlsSheet[lineTmp + 3, 11].Value = DeptSumVND[5];
                xlsSheet[lineTmp + 3, 12].Value = DeptSumUSD[6];
                xlsSheet[lineTmp + 3, 13].Value = DeptSumVND[6];

                //////En
                xlsSheetEn[lineTmp + 3, 2].Value = DeptSumUSD[0];
                xlsSheetEn[lineTmp + 3, 3].Value = DeptSumVND[0];
                xlsSheetEn[lineTmp + 3, 4].Value = DeptSumUSD[1];
                xlsSheetEn[lineTmp + 3, 5].Value = DeptSumVND[1];
                xlsSheetEn[lineTmp + 3, 6].Value = DeptSumUSD[2];
                xlsSheetEn[lineTmp + 3, 7].Value = DeptSumVND[2];
                xlsSheetEn[lineTmp + 3, 8].Value = DeptSumUSD[3];
                xlsSheetEn[lineTmp + 3, 9].Value = DeptSumVND[3];
                xlsSheetEn[lineTmp + 3, 10].Value = DeptSumVND[4];
                xlsSheetEn[lineTmp + 3, 11].Value = DeptSumVND[5];
                xlsSheetEn[lineTmp + 3, 12].Value = DeptSumUSD[6];
                xlsSheetEn[lineTmp + 3, 13].Value = DeptSumVND[6];
                //////En
                for (int col = 1; col <= 13; col++)
                {
                    xlsSheet[lineTmp + 3, col].Style = xlstStyleSum;
                    xlsSheetEn[lineTmp + 3, col].Style = xlstStyleSum;
                }

                xlsSheet[lineTmp + 3, 1].Style = xlstStyleSum;
                xlsSheetEn[lineTmp + 3, 1].Style = xlstStyleSum;

                decimal AllSumVND = 0;
                decimal AllSumUSD = 0;
                for (int i = 0; i < 7; i++)
                {
                    AllSumVND += LastSumPriceVND[i];
                    AllSumUSD += LastSumPriceUSD[i];
                }

                AllSumVND -= PaidPriceVND;
                AllSumUSD -= PaidPriceUSD;

                AllSumVND += DeptPriceVND;
                AllSumUSD += DeptPriceUSD;

                xlsSheet[rSumVND + j, cSumVND].Value = Func.FormatNumber_New(AllSumUSD);
                xlsSheet[rSumVND + j, cSumVND].Value += "(USD)";
                xlsSheet[rSumVND + j, cSumVND + 1].Value = Func.FormatNumber_New(AllSumVND);
                xlsSheet[rSumVND + j, cSumVND + 1].Value += "(VND)";

                xlsSheetEn[rSumVND + j, cSumVND].Value = Func.FormatNumber_New(AllSumUSD);
                xlsSheetEn[rSumVND + j, cSumVND].Value += "(USD)";
                xlsSheetEn[rSumVND + j, cSumVND + 1].Value = Func.FormatNumber_New(AllSumVND);
                xlsSheetEn[rSumVND + j, cSumVND + 1].Value += "(VND)";

                AllSumVND += Convert.ToDecimal(AllSumUSD * Convert.ToDecimal(txtUsdExchange.Text));

                string strMoney = Func.docso(Convert.ToInt32(AllSumVND));
                string strMoneyEn = Func.DocSo_En(Convert.ToInt32(AllSumVND));

                xlsSheet[rContract, cContract].Value = xlsSheet[rContract, cContract].Value.ToString().Replace("{%HOP_DONG%}", contract.Substring(1));
                xlsSheet[rSum + j, cSum].Value = Convert.ToInt32(AllSumVND);

                mCellTmp = new XLCellRange(rSum + j, rSum + j, cSum, cSum + 1);
                xlsSheet.MergedCells.Add(mCellTmp);
                xlsSheet[rSum + j, cSum].Style = xlstStyleSum;
                xlsSheet[rSum + j, cSum + 1].Style = xlstStyleSum;
                xlsSheet[rSumRead + j, cSumRead].Value = xlsSheet[rSumRead + j, cSumRead].Value.ToString().Replace("{%TONG_CHU%}", strMoney.ToUpper());

                xlsSheetEn[rContract, cContract].Value = xlsSheetEn[rContract, cContract].Value.ToString().Replace("{%HOP_DONG%}", contract.Substring(1));
                xlsSheetEn[rSum + j, cSum].Value = Convert.ToInt32(AllSumVND);

                mCellTmp = new XLCellRange(rSum + j, rSum + j, cSum, cSum + 1);
                xlsSheetEn.MergedCells.Add(mCellTmp);
                xlsSheetEn[rSum + j, cSum].Style = xlstStyleSum;
                xlsSheetEn[rSum + j, cSum + 1].Style = xlstStyleSum;
                xlsSheetEn[rSumRead + j, cSumRead].Value = xlsSheetEn[rSumRead + j, cSumRead].Value.ToString().Replace("{%TONG_CHU%}", strMoneyEn.ToUpper());

                xlbBook.Save(fileNameDes);
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
            }
        }
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExport_Click(object sender, EventArgs e)
        {
            string[] dateOfWeekVN = { "T2", "T3", "T4", "T5", "T6", "T7", "CN" };
            string[] dateOfWeekEN = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sartuday", "Sunday" };

            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("monday", "T2");
            dictionary.Add("tuesday", "T3");
            dictionary.Add("wednesday", "T4");
            dictionary.Add("thursday", "T5");
            dictionary.Add("friday", "T6");
            dictionary.Add("saturday", "T7");
            dictionary.Add("sunday", "CN");

            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM BD_Staff";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1 and jobtypeid = '"+ hidJobType.Value +"'";
            sql += " Order By Name";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        mvMessage.SetCompleteMessage("File CSV đã xuất thành công.");

                        C1XLBook xlbBook = new C1XLBook();
                        XLSheet xlsSheet = xlbBook.Sheets[0];
                        xlsSheet.Name = drpMonth.SelectedValue + "_" + drpYear.SelectedValue;

                        int i = 0;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.Font = new Font("", 12, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        xlsSheet[i, 0].Value = "Tháng " + drpMonth.SelectedValue + "/" + drpYear.SelectedValue;
                        xlsSheet[i, 0].Style = xlstStyle;

                        xlsSheet[i + 1, 0].Value = "STT";
                        xlsSheet[i + 1, 1].Value = "Mã Nhân Viên";
                        xlsSheet[i + 1, 2].Value = "Họ và Tên";

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.Font = new Font("", 10, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        for (int j = 1; j <= 31; j++)
                        {
                            xlsSheet[i, 2 + j].Value = j;
                            DateTime date = new DateTime(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue), j);
                            xlsSheet[i + 1, 2 + j].Value = dictionary[date.DayOfWeek.ToString().ToLower()];

                            xlsSheet[i, 2 + j].Style = xlstStyle01;
                            xlsSheet[i + 1, 2 + j].Style = xlstStyle01;
                            if (j == DateTime.DaysInMonth(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue)))
                            {
                                break;
                            }
                        }

                        i++;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            int No = i;
                            i++;
                            string StaffId = rowType["StaffId"].ToString();
                            string Name = rowType["Name"].ToString();

                            xlsSheet[i, 0].Value = No;
                            xlsSheet[i, 1].Value = StaffId;
                            xlsSheet[i, 2].Value = Name;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle01;
                            xlsSheet[i, 2].Style = xlstStyle01;

                        }

                        //ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('/CSV/DownloadZipFile.aspx'," + PopupWidth + "," + PopupHeight + ",'EditFlat', true);", true);

                        //xlsSheet[i++, 0].Value = "Ghi chú:";
                        DataSet ds1 = new DataSet();
                        sql = string.Empty;

                        sql = " SELECT *";
                        sql += " FROM BD_WorkingHour";
                        sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1 and jobtypeid = '"+ hidJobType.Value +"'";
                        sql += " Order By Name";

                        using (SqlCommand cm1 = db.CreateCommand(sql))
                        {
                            SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                            da1.Fill(ds1);
                            db.Close();

                            if (ds != null)
                            {

                                xlsSheet[i++ + 1, 0].Value = "Ghi chú:";
                                DataTable dt1 = ds1.Tables[0];
                                foreach (DataRow rowType in dt1.Rows)
                                {
                                    i++;
                                    string Ma = rowType["WorkingHourId"].ToString();
                                    string Name = rowType["Name"].ToString();
                                    xlsSheet[i, 0].Value = Ma + ":";
                                    xlsSheet[i, 1].Value = Name;
                                }
                                xlsSheet[i + 1, 0].Value = "OF:";
                                xlsSheet[i + 1, 1].Value = "OF: nghỉ";
                            }
                        }
                        string dataPath = HttpContext.Current.Server.MapPath(@"\Building\Staff\DataTmp");
                        string tmpFolder = dataPath;
                        if (!Directory.Exists(tmpFolder))
                        {
                            Directory.CreateDirectory(tmpFolder);
                        }
                        string name ="KhaiBaoLichLamViec_"+ DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
                        string fileName = Path.Combine(tmpFolder, name);
                        xlbBook.Save(fileName);
                        //Session["ZipFilePath"] = null;
                        //Session["ZipFilePath"] = fileName;

                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../Staff/DataTmp/" + name + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            string yearmonth = drpYear.SelectedValue;
            string building = Func.ParseString(Session["__BUILDINGID__"]);

            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM BD_BudgetSchedule ";
            sql += " WHERE BuildingId = '" + building + "' ";
            sql += " and YearMonth = '" + yearmonth + "' ";
            sql += drpBudgetExport.SelectedValue.Equals("") ? "" : " and id ='" + drpBudgetExport.SelectedValue + "'";
            sql += " and DelFlag = 0 Order by id";

            using (SqlDatabase db = new SqlDatabase())
            {
                C1XLBook xlbBook = new C1XLBook();

                string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\NganSach.xlsx");
                if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                }

                string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\NganSach" + strDT + ".xlsx";
                string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/NganSach" + strDT + ".xlsx";

                string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
                File.Copy(fileName, fileNameDes);

                xlbBook.Load(fileNameDes);

                string sheet = "NganSach";

                XLSheet xlsSheet = xlbBook.Sheets[sheet];

                string IDs = "";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        xlsSheet[0, 2].Value = xlsSheet[0, 2].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + building + "'"));
                        xlsSheet[0, 2].Value = xlsSheet[0, 2].Value.ToString().Replace("{%NAM_THANG%}", "NĂM " + yearmonth);

                        int j = 7;
                        DataTable dtReport = ds.Tables[0];

                        foreach (DataRow rowType in dtReport.Rows)
                        {
                            string Budget = rowType["Budget"].ToString();
                            string id = rowType["id"].ToString();

                            IDs += ",'" + id + "'";
                            xlsSheet[2, j].Value = id;
                            xlsSheet[3, j].Value = Budget;
                            j++;
                        }
                        for (int i = j; i < j * 12; i++)
                        {
                            XLColumn col = new XLColumn();
                            col = xlsSheet.Columns[j];
                            xlsSheet.Columns.Remove(col);
                        }

                    }
                }
                if (String.IsNullOrEmpty(IDs))
                {
                    mvMessage.AddError("Hiện tại chưa có Kỳ ngân sách nào được tạo");
                    return;
                }

                string buildingId = Func.ParseString(Session["__BUILDINGID__"]);
                string sessionId = Session.SessionID;
                DbHelper.ExecuteNonQuery("Delete From BD_BudgetScheduleDetailReport where SessionId = '" + sessionId + "'");

                string[] idList = IDs.Substring(1).Split(',');
                for (int m = 0; m < idList.Length; m++)
                {
                    string sqlTmp = "Select * from BD_BudgetScheduleDetail where BuggetScheduleId in (" + idList[m] + ") and delFlag = 0 Order by Id";
                    DataTable dtTable = new DataTable();
                    dtTable.Columns.Add("SessionId", Type.GetType("System.String"));
                    dtTable.Columns.Add("BuggetScheduleId", Type.GetType("System.Int32"));
                    dtTable.Columns.Add("PaymentType", Type.GetType("System.String"));
                    dtTable.Columns.Add("PaymentId", Type.GetType("System.Int32"));
                    dtTable.Columns.Add("ParentId", Type.GetType("System.Int32"));
                    dtTable.Columns.Add("InVND", Type.GetType("System.Double"));
                    dtTable.Columns.Add("InUSD", Type.GetType("System.Decimal"));
                    dtTable.Columns.Add("OutVND", Type.GetType("System.Double"));
                    dtTable.Columns.Add("OutUSD", Type.GetType("System.Decimal"));
                    dtTable.Columns.Add("ItemLevel", Type.GetType("System.String"));

                    DataTable dt = DbHelper.GetDataTable(sqlTmp);
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["ParentId"].ToString() == "0")
                        {
                            int j = 1;
                            int BuggetScheduleId = Func.ParseInt(dr["BuggetScheduleId"]);
                            string PaymentType = dr["PaymentType"].ToString();
                            int PaymentId = Func.ParseInt(dr["PaymentId"]);
                            int ParentId = Func.ParseInt(dr["ParentId"]);
                            double InVND = Func.ParseDouble(dr["InVND"]);
                            decimal InUSD = Func.ParseInt(dr["InUSD"]);
                            double OutVND = Func.ParseDouble(dr["OutVND"]);
                            decimal OutUSD = Func.ParseInt(dr["OutUSD"]);
                            string itemLevel = Func.ParseString(dr["itemLevel"]);

                            dtTable.Rows.Add(sessionId, BuggetScheduleId, PaymentType, PaymentId, ParentId, InVND, InUSD, OutVND, OutUSD, itemLevel);

                            GetChildItems(Func.ParseString(PaymentId), dt, dtTable, j);
                        }
                    }
                    using (SqlBulkCopy copy = new SqlBulkCopy(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
                    {
                        copy.DestinationTableName = "BD_BudgetScheduleDetailReport";
                        copy.BatchSize = 3000;
                        copy.BulkCopyTimeout = 99999;

                        copy.ColumnMappings.Add(0, "SessionId");
                        copy.ColumnMappings.Add(1, "BuggetScheduleId");
                        copy.ColumnMappings.Add(2, "PaymentType");
                        copy.ColumnMappings.Add(3, "PaymentId");
                        copy.ColumnMappings.Add(4, "ParentId");
                        copy.ColumnMappings.Add(5, "InVND");
                        copy.ColumnMappings.Add(6, "InUSD");
                        copy.ColumnMappings.Add(7, "OutVND");
                        copy.ColumnMappings.Add(8, "OutUSD");
                        copy.ColumnMappings.Add(9, "ItemLevel");

                        copy.WriteToServer(dtTable);
                    }
                }
                ds = new DataSet();
                sql = "Select * from BD_BudgetScheduleDetailReport where SessionId = '" + sessionId + "' Order by BuggetScheduleId,Id";
                int k = 5;
                int colData = 6;
                string bsId = "";
                string[] alpha = "A. B. C. D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. Z.".Split(' ');
                string[] alphaLevel2 = "I. II. III. IV. V. VI. VII. VIII. IX. X. XI. XII. XII. XIV.".Split(' ');
                string[] alphaLevel3 = "1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.".Split(' ');
                string[] alphaLevel4 = "a. b. c. d. e. f. g. h. i. j. k. l. m. n. o. p. q. r. s. t. u. v. w.".Split(' ');
                int level1 = -1;
                int level2 = -1;
                int level3 = -1;
                int level4 = -1;
                xlsSheet.Columns[1].Width = 300;
                xlsSheet.Columns[2].Width = 300;
                xlsSheet.Columns[3].Width = 300;
                xlsSheet.Columns[4].Width = 300;
                xlsSheet.Columns[5].Width = 300;
                int lastrow = 0;
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        double inSumVND = 0;
                        double outSumVND = 0;
                        DataTable dtReport = ds.Tables[0];
                        foreach (DataRow rowType in dtReport.Rows)
                        {
                            XLStyle xlstStyleAll = new XLStyle(xlbBook);
                            //xlstStyleAll.AlignHorz = XLAlignHorzEnum.Left;
                            xlstStyleAll.WordWrap = false;
                            xlstStyleAll.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleAll.SetBorderColor(Color.Black);
                            xlstStyleAll.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderRight = XLLineStyleEnum.Thin;

                            XLStyle xlstStyleLeft = new XLStyle(xlbBook);
                            //xlstStyleLeft.AlignHorz = XLAlignHorzEnum.Left;
                            xlstStyleLeft.WordWrap = false;
                            xlstStyleLeft.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleLeft.SetBorderColor(Color.Black);
                            xlstStyleLeft.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleLeft.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleLeft.BorderLeft = XLLineStyleEnum.Thin;

                            XLStyle xlstStyleRight = new XLStyle(xlbBook);
                            //xlstStyleRight.AlignHorz = XLAlignHorzEnum.Left;
                            xlstStyleRight.WordWrap = false;
                            xlstStyleRight.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleRight.SetBorderColor(Color.Black);
                            xlstStyleRight.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleRight.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleRight.BorderRight = XLLineStyleEnum.Thin;

                            XLStyle xlstStyleMiddle = new XLStyle(xlbBook);
                            //xlstStyleMiddle.AlignHorz = XLAlignHorzEnum.Left;
                            xlstStyleMiddle.WordWrap = false;
                            xlstStyleMiddle.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleMiddle.SetBorderColor(Color.Black);
                            xlstStyleMiddle.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleMiddle.BorderTop = XLLineStyleEnum.Thin;

                            xlsSheet[k, 2].Style = xlstStyleLeft;
                            xlsSheet[k, 3].Style = xlstStyleMiddle;
                            xlsSheet[k, 4].Style = xlstStyleMiddle;
                            xlsSheet[k, 5].Style = xlstStyleMiddle;
                            xlsSheet[k, 6].Style = xlstStyleRight;

                            string PaymentType = rowType["PaymentType"].ToString();
                            string InVND = rowType["InVND"].ToString();
                            string InUSD = rowType["InUSD"].ToString();
                            string OutVND = rowType["OutVND"].ToString();
                            string OutUSD = rowType["OutUSD"].ToString();
                            string PaymentId = rowType["PaymentId"].ToString();
                            int colNo = Func.ParseInt(rowType["colNo"].ToString());
                            string id = rowType["BuggetScheduleId"].ToString();
                            string ParentId = rowType["ParentId"].ToString();
                            string itemLevel = rowType["ItemLevel"].ToString();

                            if (itemLevel.Equals("0"))
                            {
                                xlstStyleAll.BackColor = Color.Orange;
                                xlstStyleLeft.BackColor = Color.Orange;
                                xlstStyleRight.BackColor = Color.Orange;
                                xlstStyleMiddle.BackColor = Color.Orange;
                            }
                            else
                            {
                                xlstStyleAll.BackColor = Color.White;
                                xlstStyleLeft.BackColor = Color.White;
                                xlstStyleRight.BackColor = Color.White;
                                xlstStyleMiddle.BackColor = Color.White;
                            }

                            if (itemLevel.Equals("0") || itemLevel.Equals("1") || itemLevel.Equals("2"))
                            {
                                xlstStyleAll.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleLeft.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleRight.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleMiddle.Font = new Font("", 8, FontStyle.Bold);
                            }
                            xlsSheet[k, colData].Style = xlstStyleAll;

                            //j += 2;
                            if (!bsId.Equals(id))
                            {
                                if (k > 5)
                                {
                                    lastrow = k;
                                    xlsSheet[k, 2].Value = alpha[level1+1];
                                    xlsSheet[k, 3].Value = "CÂN ĐỐI THU - CHI (Phần Lãi)";
                                    //xlsSheet[k, colData + 1].Value = Func.ParseDouble(InUSD);
                                    xlsSheet[k, colData].Value = Func.ParseDouble(inSumVND - outSumVND);
                                }
                                k = 5;
                                colData++;
                                bsId = id;
                                level1 = -1;
                            }
                            int col = Func.ParseInt(itemLevel) + 3;

                            if (itemLevel.Equals("0"))
                            {
                                level1++;
                                xlsSheet[k, col - 1].Value = alpha[level1];

                                level2 = -1;
                            }
                            else if (itemLevel.Equals("1"))
                            {
                                level2++;
                                xlsSheet[k, col - 1].Value = alphaLevel2[level2];

                                level3 = -1;
                            }
                            else if (itemLevel.Equals("2"))
                            {
                                level3++;
                                xlsSheet[k, col - 1].Value = alphaLevel3[level3];

                                level4 = -1;
                            }
                            else if (itemLevel.Equals("3"))
                            {
                                level4++;
                                xlsSheet[k, col - 1].Value = alphaLevel4[level4];
                            }
                            xlsSheet[k, col].Value = PaymentType;
                            //xlsSheet[k, colData + 1].Value = Func.ParseDouble(InUSD);
                            xlsSheet[k, colData].Value = Func.ParseDouble(InVND);
                            ////xlsSheet[k, colData + 3].Value = Func.ParseDouble(OutUSD);
                            ////xlsSheet[k, colData + 4].Value = Func.ParseDouble(OutVND);
                            xlsSheet[k, 0].Value = PaymentId;

                            if (PaymentId.Equals("9"))
                            {
                                inSumVND = Func.ParseDouble(InVND);
                            }
                            else if (PaymentId.Equals("10"))
                            {
                                outSumVND = Func.ParseDouble(InVND);
                            }

                            //XLStyle xlstStyleAll = new XLStyle(xlbBook);
                            //xlstStyleAll.AlignHorz = XLAlignHorzEnum.Left;
                            //xlstStyleAll.WordWrap = false;
                            //xlstStyleAll.Font = new Font("", 8, FontStyle.Regular);
                            //xlstStyleAll.SetBorderColor(Color.Black);
                            //xlstStyleAll.BorderBottom = XLLineStyleEnum.Thin;
                            //xlstStyleAll.BorderTop = XLLineStyleEnum.Thin;
                            //xlstStyleAll.BorderLeft = XLLineStyleEnum.Thin;
                            //xlstStyleAll.BorderRight = XLLineStyleEnum.Thin;

                            //XLStyle xlstStyleLeft = new XLStyle(xlbBook);
                            //xlstStyleLeft.AlignHorz = XLAlignHorzEnum.Left;
                            //xlstStyleLeft.WordWrap = false;
                            //xlstStyleLeft.Font = new Font("", 8, FontStyle.Regular);
                            //xlstStyleLeft.SetBorderColor(Color.Black);
                            //xlstStyleLeft.BorderBottom = XLLineStyleEnum.Thin;
                            //xlstStyleLeft.BorderTop = XLLineStyleEnum.Thin;
                            //xlstStyleLeft.BorderLeft = XLLineStyleEnum.Thin;

                            //XLStyle xlstStyleRight = new XLStyle(xlbBook);
                            //xlstStyleRight.AlignHorz = XLAlignHorzEnum.Left;
                            //xlstStyleRight.WordWrap = false;
                            //xlstStyleRight.Font = new Font("", 8, FontStyle.Regular);
                            //xlstStyleRight.SetBorderColor(Color.Black);
                            //xlstStyleRight.BorderBottom = XLLineStyleEnum.Thin;
                            //xlstStyleRight.BorderTop = XLLineStyleEnum.Thin;
                            //xlstStyleRight.BorderRight = XLLineStyleEnum.Thin;

                            //XLStyle xlstStyleMiddle = new XLStyle(xlbBook);
                            //xlstStyleMiddle.AlignHorz = XLAlignHorzEnum.Left;
                            //xlstStyleMiddle.WordWrap = false;
                            //xlstStyleMiddle.Font = new Font("", 8, FontStyle.Regular);
                            //xlstStyleMiddle.SetBorderColor(Color.Black);
                            //xlstStyleMiddle.BorderBottom = XLLineStyleEnum.Thin;
                            //xlstStyleMiddle.BorderTop = XLLineStyleEnum.Thin;

                            //xlsSheet[k, 2].Style = xlstStyleLeft;
                            //xlsSheet[k, 3].Style = xlstStyleMiddle;
                            //xlsSheet[k, 4].Style = xlstStyleMiddle;
                            //xlsSheet[k, 5].Style = xlstStyleMiddle;
                            //xlsSheet[k, 6].Style = xlstStyleRight;

                            //if (itemLevel.Equals("0"))
                            //{
                            //    xlstStyleAll.BackColor = Color.Orange;
                            //    xlstStyleLeft.BackColor = Color.Orange;
                            //    xlstStyleRight.BackColor = Color.Orange;
                            //    xlstStyleMiddle.BackColor = Color.Orange;
                            //}
                            //else
                            //{
                            //    xlstStyleAll.BackColor = Color.White;
                            //    xlstStyleLeft.BackColor = Color.White;
                            //    xlstStyleRight.BackColor = Color.White;
                            //    xlstStyleMiddle.BackColor = Color.White;
                            //}

                            //if (itemLevel.Equals("0") || itemLevel.Equals("1") || itemLevel.Equals("2"))
                            //{
                            //    xlstStyleAll.Font = new Font("", 8, FontStyle.Bold);
                            //    xlstStyleLeft.Font = new Font("", 8, FontStyle.Bold);
                            //    xlstStyleRight.Font = new Font("", 8, FontStyle.Bold);
                            //    xlstStyleMiddle.Font = new Font("", 8, FontStyle.Bold);
                            //}
                            xlsSheet[k, colData].Style = xlstStyleAll;
                            k++;

                            if (k == lastrow)
                            {
                                XLStyle xlstStyleLast = new XLStyle(xlbBook);
                                xlstStyleLast.WordWrap = false;
                                xlstStyleLast.Font = new Font("", 8, FontStyle.Regular);
                                xlstStyleLast.SetBorderColor(Color.Black);
                                xlstStyleLast.BorderBottom = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderTop = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderLeft = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderRight = XLLineStyleEnum.Thin;
                                xlstStyleLast.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleLast.BackColor = Color.Orange;

                                xlsSheet[k, colData].Value = Func.ParseDouble(inSumVND - outSumVND);
                                xlsSheet[k, colData].Style = xlstStyleLast;
                            }

                        }
                    }
                }

                //ds = new DataSet();
                //sql = string.Empty;

                //sql = " SELECT *";
                //sql += " FROM BD_PaymentReportMonth ";
                //sql += " WHERE BuildingId = '" + building + "' ";
                //sql += " and YearMonth = '" + yearmonth + "' order by id";

                //using (db = new SqlDatabase())
                //{
                //    using (SqlCommand cm = db.CreateCommand(sql))
                //    {
                //        SqlDataAdapter da = new SqlDataAdapter(cm);
                //        da.Fill(ds);
                //        if (ds != null)
                //        {
                //            xlbBook = new C1XLBook();

                //            fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BaoCaoThuChiThang.xlsx");
                //            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                //            {
                //                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                //            }

                //            strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                //            strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoThuChiThang" + strDT + ".xlsx";
                //            strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/BaoCaoThuChiThang" + strDT + ".xlsx";

                //            fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                //            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
                //            File.Copy(fileName, fileNameDes);

                //            xlbBook.Load(fileNameDes);

                //            sheet = "BaoCao";

                //            xlsSheet = xlbBook.Sheets[sheet];
                //            int i = 5;

                //            xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + building + "'"));
                //            xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%NAM_THANG%}", "THÁNG" + yearmonth.Substring(4, 2) + "/" + yearmonth.Substring(0, 4));

                //            DataTable dtReport = ds.Tables[0];
                //            foreach (DataRow rowType in dtReport.Rows)
                //            {
                //                int colNo = Func.ParseInt(rowType["colNo"]);
                //                string PaymentType = rowType["PaymentType"].ToString();
                //                string InVND = rowType["InVND"].ToString();
                //                string InUSD = rowType["InUSD"].ToString();
                //                string OutVND = rowType["OutVND"].ToString();
                //                string OutUSD = rowType["OutUSD"].ToString();
                //                bool bold = rowType["bold"].ToString().Equals("1") ? true : false;

                //                XLCellRange mrCell = new XLCellRange(i, i, 0, 3);
                //                xlsSheet.MergedCells.Add(mrCell);

                //                xlsSheet[i, 0].Value = "." + " ".PadLeft(colNo * 3, ' ') + PaymentType;
                //                xlsSheet[i, 4].Value = Func.ParseDouble(InUSD);
                //                xlsSheet[i, 5].Value = Func.ParseDouble(InVND);
                //                xlsSheet[i, 6].Value = Func.ParseDouble(OutUSD);
                //                xlsSheet[i, 7].Value = Func.ParseDouble(OutVND);

                //                XLStyle xlstStyle = new XLStyle(xlbBook);
                //                xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
                //                xlstStyle.WordWrap = false;
                //                xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                //                xlstStyle.SetBorderColor(Color.Black);
                //                xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                //                xlsSheet[i, 0].Style = xlstStyle;
                //                xlsSheet[i, 1].Style = xlstStyle;
                //                xlsSheet[i, 2].Style = xlstStyle;
                //                xlsSheet[i, 3].Style = xlstStyle;

                //                xlstStyle = new XLStyle(xlbBook);
                //                xlstStyle.WordWrap = false;
                //                xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                //                xlstStyle.SetBorderColor(Color.Black);
                //                xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                //                xlstStyle.BorderRight = XLLineStyleEnum.Thin;
                //                xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                //                xlsSheet[i, 4].Style = xlstStyle;
                //                xlsSheet[i, 5].Style = xlstStyle;
                //                xlsSheet[i, 6].Style = xlstStyle;
                //                xlsSheet[i, 7].Style = xlstStyle;

                //                i++;
                //            }

                //            xlbBook.Save(fileNameDes);
                //            ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
                //        }
                //    }
                //}

                xlbBook.Save(fileNameDes);
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

            }
        }
        protected void btnImport_Click(object sender, EventArgs e)
        {
            try
            {
                if (File.Exists(Server.MapPath("./") + File1.PostedFile.FileName))
                {
                    File.Delete(Server.MapPath("./") + File1.PostedFile.FileName);
                }
                C1XLBook xlbBook = new C1XLBook();

                string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Import\NganSach" + strDT + ".xlsx");
                File1.PostedFile.SaveAs(fileName);

                if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                }

                string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\NganSach" + strDT + ".xlsx";
                string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/NganSach" + strDT + ".xlsx";
                xlbBook.Load(fileName);

                string sheet = "NganSach";

                XLSheet xlsSheet = xlbBook.Sheets[sheet];

                for (int i = 7; i < 31; i++)
                {
                    if (String.IsNullOrEmpty(Func.ParseString(xlsSheet[2, i].Value)))
                    {
                        break;
                    }
                    string BuggetScheduleId = Func.ParseString(xlsSheet[2, i].Value);
                    for (int j = 5; j < 250; j++)
                    {
                        if (String.IsNullOrEmpty(Func.ParseString(xlsSheet[j, 0].Value)))
                        {
                            break;
                        }

                        string PaymentId = Func.ParseString(xlsSheet[j, 0].Value);
                        string inVND = Func.ParseString(xlsSheet[j, i].Value);

                        DbHelper.ExecuteNonQuery("Update BD_BudgetScheduleDetail Set inVND = '" + inVND.Replace(",", ".") + "' Where BuggetScheduleId ='" + BuggetScheduleId + "' and PaymentId = '" + PaymentId + "'");
                    }
                }
                mvMessage.SetCompleteMessage("Đã import thành công");
            }
            catch (Exception ex)
            {

            }
        }
Example #16
0
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExport2_Click(object sender, EventArgs e)
        {
            string buildingId = Func.ParseString(Session["__BUILDINGID__"]);
            string sql = "Select CustomerId, Name From Customer Where BuildingId = '" + buildingId + "' and DelFlag = 0 order by CustomerId";
            Hashtable CusList = new Hashtable();
            DataTable dtCus = DbHelper.GetDataTable(sql);
            foreach (DataRow drCus in dtCus.Rows)
            {
                if (!CusList.Contains(drCus["CustomerId"].ToString()))
                {
                    CusList.Add(drCus["CustomerId"].ToString(), drCus["Name"].ToString());
                }
            }

            Hashtable PaymentList = new Hashtable();
            sql = "Select * from v_PaymentBillDetailGeneral Where BuildingId = '" + buildingId + "' order by CustomerId";

            DataTable dt = DbHelper.GetDataTable(sql);
            foreach (DataRow dr in dt.Rows)
            {
                string CustomerId = dr["CustomerId"].ToString();
                string key = CustomerId;
                DeptInfo tmp;

                if (!PaymentList.Contains(key))
                {
                    tmp = new DeptInfo();
                    tmp.CustomerId = CustomerId;
                    tmp.Customer = Func.ParseString(CusList[CustomerId]);
                    PaymentList.Add(key, tmp);
                }
                string PaymentType = dr["PaymentType"].ToString();

                decimal MoneyUSD = Convert.ToDecimal(dr["MoneyUSD"]);
                decimal MoneyVND = Convert.ToDecimal(dr["MoneyVND"]);
                decimal PaidUSD = Convert.ToDecimal(dr["PaidUSD"]);
                decimal PaidVND = Convert.ToDecimal(dr["PaidVND"]);

                tmp = (DeptInfo)PaymentList[key];
                switch (PaymentType)
                {
                    case "1":
                        tmp.RentUSD = MoneyUSD;
                        tmp.RentVND = MoneyVND;
                        tmp.RentPaidUSD = PaidUSD;
                        tmp.RentPaidVND = PaidVND;
                        break;
                    case "2":
                        tmp.ManagerUSD = MoneyUSD;
                        tmp.ManagerVND = MoneyVND;
                        tmp.ManagerPaidUSD = PaidUSD;
                        tmp.ManagerPaidVND = PaidVND;
                        break;
                    case "3":
                        tmp.ParkingUSD = MoneyUSD;
                        tmp.ParkingVND = MoneyVND;
                        tmp.ParkingPaidUSD = PaidUSD;
                        tmp.ParkingPaidVND = PaidVND;
                        break;
                    case "4":
                        tmp.ExtraUSD = MoneyUSD;
                        tmp.ExtraVND = MoneyVND;
                        tmp.ExtraPaidUSD = PaidUSD;
                        tmp.ExtraPaidVND = PaidVND;
                        break;
                    case "5":
                        tmp.ElecUSD = MoneyUSD;
                        tmp.ElecVND = MoneyVND;
                        tmp.ElecPaidUSD = PaidUSD;
                        tmp.ElecPaidVND = PaidVND;
                        break;
                    case "6":
                        tmp.WaterUSD = MoneyUSD;
                        tmp.WaterVND = MoneyVND;
                        tmp.WaterPaidUSD = PaidUSD;
                        tmp.WaterPaidVND = PaidVND;
                        break;
                    case "7":
                        tmp.ServiceUSD = MoneyUSD;
                        tmp.ServiceVND = MoneyVND;
                        tmp.ServicePaidUSD = PaidUSD;
                        tmp.ServicePaidVND = PaidVND;
                        break;
                    case "8":
                        tmp.BookingUSD = MoneyUSD;
                        tmp.BookingVND = MoneyVND;
                        tmp.BookingPaidUSD = PaidUSD;
                        tmp.BookingPaidVND = PaidVND;
                        break;
                    default:
                        break;
                }
            }

            C1XLBook xlbBook = new C1XLBook();

            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BaoCaoCongNo_TongQuat.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoCongNo"))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoCongNo"));
            }

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoCongNo\BaoCaoCongNo_TongQuat" + strDT + ".xlsx";
            string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/BaoCaoCongNo/BaoCaoCongNo_TongQuat" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);

            XLStyle xlstStyle2 = new XLStyle(xlbBook);
            xlstStyle2.AlignVert = XLAlignVertEnum.Center;
            xlstStyle2.WordWrap = false;
            xlstStyle2.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle2.SetBorderColor(Color.Black);
            xlstStyle2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyle1 = new XLStyle(xlbBook);
            xlstStyle1.AlignVert = XLAlignVertEnum.Center;
            xlstStyle1.WordWrap = false;
            xlstStyle1.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle1.SetBorderColor(Color.Black);
            xlstStyle1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle1.Format = "#,##0.0_);(#,##0.0)";

            XLStyle xlstStyle0 = new XLStyle(xlbBook);
            xlstStyle0.AlignVert = XLAlignVertEnum.Center;
            xlstStyle0.WordWrap = false;
            xlstStyle0.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle0.SetBorderColor(Color.Black);
            xlstStyle0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle0.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyleB2 = new XLStyle(xlbBook);
            xlstStyleB2.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleB2.AlignVert = XLAlignVertEnum.Center;
            xlstStyleB2.WordWrap = false;
            xlstStyleB2.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleB2.SetBorderColor(Color.Black);
            xlstStyleB2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleB2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleB2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleB2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleB2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleB1 = new XLStyle(xlbBook);
            xlstStyleB1.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleB1.AlignVert = XLAlignVertEnum.Center;
            xlstStyleB1.WordWrap = false;
            xlstStyleB1.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleB1.SetBorderColor(Color.Black);
            xlstStyleB1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleB1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleB1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleB1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleB1.Format = "#,##0.0_);(#,##0.0)";

            XLStyle xlstStyleB0 = new XLStyle(xlbBook);
            xlstStyleB0.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleB0.AlignVert = XLAlignVertEnum.Center;
            xlstStyleB0.WordWrap = false;
            xlstStyleB0.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleB0.SetBorderColor(Color.Black);
            xlstStyleB0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleB0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleB0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleB0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleB0.Format = "#,##0_);(#,##0)";

            decimal[] AllSumUsd = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            decimal[] AllSumVnd = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };

            string sheet = "BaoCao";

            XLSheet xlsSheet = xlbBook.Sheets[sheet];
            int i = 5;

            xlsSheet[0, 1].Value = xlsSheet[0, 1].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + buildingId + "'"));
            int j = 1;
            foreach (DictionaryEntry tmp in PaymentList)
            {
                string key = (string)tmp.Key;
                DeptInfo dept = (DeptInfo)tmp.Value;

                xlsSheet[i, 0 + j].Value = Func.ParseString(i - 4);
                xlsSheet[i, 1 + j].Value = dept.CustomerId;
                xlsSheet[i, 2 + j].Value = dept.Customer;

                xlsSheet[i, 3 + j].Value = dept.RentUSD;
                xlsSheet[i, 4 + j].Value = dept.RentVND;

                xlsSheet[i, 5 + j].Value = dept.ManagerUSD;
                xlsSheet[i, 6 + j].Value = dept.ManagerVND;

                xlsSheet[i, 7 + j].Value = dept.ParkingUSD;
                xlsSheet[i, 8 + j].Value = dept.ParkingVND;

                xlsSheet[i, 9 + j].Value = dept.ExtraUSD;
                xlsSheet[i, 10 + j].Value = dept.ExtraVND;

                //xlsSheet[i, 11 + j].Value = dept.ElecUSD;
                xlsSheet[i, 11 + j].Value = dept.ElecVND;

                //xlsSheet[i, 13 + j].Value = dept.WaterUSD;
                xlsSheet[i, 12 + j].Value = dept.WaterVND;

                xlsSheet[i, 13 + j].Value = dept.ServiceUSD;
                xlsSheet[i, 14 + j].Value = dept.ServiceVND;

                xlsSheet[i, 15 + j].Value = dept.BookingUSD;
                xlsSheet[i, 16 + j].Value = dept.BookingVND;

                xlsSheet[i, 17 + j].Value = dept.SumUSD();
                xlsSheet[i, 18 + j].Value = dept.SumVND();

                //-----------------------
                xlsSheet[i, j + 19].Value = dept.RentPaidUSD;
                xlsSheet[i, j + 20].Value = dept.RentPaidVND;

                xlsSheet[i, j + 21].Value = dept.ManagerPaidUSD;
                xlsSheet[i, j + 22].Value = dept.ManagerPaidVND;

                xlsSheet[i, j + 23].Value = dept.ParkingPaidUSD;
                xlsSheet[i, j + 24].Value = dept.ParkingPaidVND;

                xlsSheet[i, j + 25].Value = dept.ExtraPaidUSD;
                xlsSheet[i, j + 26].Value = dept.ExtraPaidVND;

                //xlsSheet[i, 11 + j + 18].Value = dept.ElecPaidUSD;
                xlsSheet[i, j + 27].Value = dept.ElecPaidVND;

                //xlsSheet[i, 13 + j + 18].Value = dept.WaterPaidUSD;
                xlsSheet[i, j + 28].Value = dept.WaterPaidVND;

                xlsSheet[i, j + 29].Value = dept.ServicePaidUSD;
                xlsSheet[i, j + 30].Value = dept.ServicePaidVND;

                xlsSheet[i, j + 31].Value = dept.BookingPaidUSD;
                xlsSheet[i, j + 32].Value = dept.BookingPaidVND;

                xlsSheet[i, j + 33].Value = dept.SumPaidUSD();
                xlsSheet[i, j + 34].Value = dept.SumPaidVND();

                xlsSheet[i, j + 35].Value = dept.SumUSD() - dept.SumPaidUSD();
                xlsSheet[i, j + 36].Value = dept.SumVND() - dept.SumPaidVND();

                /////////////////
                AllSumUsd[0] += dept.RentUSD;
                AllSumVnd[0] += dept.RentVND;

                AllSumUsd[1] += dept.ManagerUSD;
                AllSumVnd[1] += dept.ManagerVND;

                AllSumUsd[2] += dept.ParkingUSD;
                AllSumVnd[2] += dept.ParkingVND;

                AllSumUsd[3] += dept.ExtraUSD;
                AllSumVnd[3] += dept.ExtraVND;

                AllSumUsd[4] += dept.ElecUSD;
                AllSumVnd[4] += dept.ElecVND;

                AllSumUsd[5] += dept.WaterUSD;
                AllSumVnd[5] += dept.WaterVND;

                AllSumUsd[6] += dept.ServiceUSD;
                AllSumVnd[6] += dept.ServiceVND;

                AllSumUsd[7] += dept.BookingUSD;
                AllSumVnd[7] += dept.BookingVND;

                AllSumUsd[8] += dept.SumUSD();
                AllSumVnd[8] += dept.SumVND();

                //-----------------------
                AllSumUsd[9] += dept.RentPaidUSD;
                AllSumVnd[9] += dept.RentPaidVND;

                AllSumUsd[10] += dept.ManagerPaidUSD;
                AllSumVnd[10] += dept.ManagerPaidVND;

                AllSumUsd[11] += dept.ParkingPaidUSD;
                AllSumVnd[11] += dept.ParkingPaidVND;

                AllSumUsd[12] += dept.ExtraPaidUSD;
                AllSumVnd[12] += dept.ExtraPaidVND;

                AllSumUsd[13] += dept.ElecPaidUSD;
                AllSumVnd[13] += dept.ElecPaidVND;

                AllSumUsd[14] += dept.WaterPaidUSD;
                AllSumVnd[14] += dept.WaterPaidVND;

                AllSumUsd[15] += dept.ServicePaidUSD;
                AllSumVnd[15] += dept.ServicePaidVND;

                AllSumUsd[16] += dept.BookingPaidUSD;
                AllSumVnd[16] += dept.BookingPaidVND;

                AllSumUsd[17] += dept.SumPaidUSD();
                AllSumVnd[17] += dept.SumPaidVND();

                AllSumUsd[18] += dept.SumUSD() - dept.SumPaidUSD();
                AllSumVnd[18] += dept.SumVND() - dept.SumPaidVND();

                for (int m = 0; m < 37; m++)
                {
                    xlsSheet[i, m + j].Style = xlstStyle1;
                }
                ////////////////////////////////////////////
                xlsSheet[i, 4 + j].Style = xlstStyle0;
                xlsSheet[i, 6 + j].Style = xlstStyle0;
                xlsSheet[i, 8 + j].Style = xlstStyle0;
                xlsSheet[i, 10 + j].Style = xlstStyle0;
                xlsSheet[i, 11 + j].Style = xlstStyle0;
                xlsSheet[i, 12 + j].Style = xlstStyle0;
                xlsSheet[i, 14 + j].Style = xlstStyle0;
                xlsSheet[i, 16 + j].Style = xlstStyle0;
                xlsSheet[i, 18 + j].Style = xlstStyle0;
                xlsSheet[i, j + 20].Style = xlstStyle0;
                xlsSheet[i, j + 22].Style = xlstStyle0;
                xlsSheet[i, j + 24].Style = xlstStyle0;
                xlsSheet[i, j + 26].Style = xlstStyle0;
                xlsSheet[i, j + 27].Style = xlstStyle0;
                xlsSheet[i, j + 28].Style = xlstStyle0;
                xlsSheet[i, j + 30].Style = xlstStyle0;
                xlsSheet[i, j + 32].Style = xlstStyle0;
                xlsSheet[i, j + 34].Style = xlstStyle0;
                xlsSheet[i, j + 36].Style = xlstStyle0;

                i++;
            }
            xlsSheet[i, 3 + j].Value = AllSumUsd[0];
            xlsSheet[i, 4 + j].Value = AllSumVnd[0];

            xlsSheet[i, 5 + j].Value = AllSumUsd[1];
            xlsSheet[i, 6 + j].Value = AllSumVnd[1];

            xlsSheet[i, 7 + j].Value = AllSumUsd[2];
            xlsSheet[i, 8 + j].Value = AllSumVnd[2];

            xlsSheet[i, 9 + j].Value = AllSumUsd[3];
            xlsSheet[i, 10 + j].Value = AllSumVnd[3];

            xlsSheet[i, 11 + j].Value = AllSumVnd[4];

            xlsSheet[i, 12 + j].Value = AllSumVnd[5];

            xlsSheet[i, 13 + j].Value = AllSumUsd[6];
            xlsSheet[i, 14 + j].Value = AllSumVnd[6];

            xlsSheet[i, 15 + j].Value = AllSumUsd[7];
            xlsSheet[i, 16 + j].Value = AllSumVnd[7];

            xlsSheet[i, 17 + j].Value = AllSumUsd[8];
            xlsSheet[i, 18 + j].Value = AllSumVnd[8];

            //-----------------------							                //-----------------------
            xlsSheet[i, j + 19].Value = AllSumUsd[9];
            xlsSheet[i, j + 20].Value = AllSumVnd[9];

            xlsSheet[i, j + 21].Value = AllSumUsd[10];
            xlsSheet[i, j + 22].Value = AllSumVnd[10];

            xlsSheet[i, j + 23].Value = AllSumUsd[11];
            xlsSheet[i, j + 24].Value = AllSumVnd[11];

            xlsSheet[i, j + 25].Value = AllSumUsd[12];
            xlsSheet[i, j + 26].Value = AllSumVnd[12];

            xlsSheet[i, j + 27].Value = AllSumVnd[13];

            xlsSheet[i, j + 28].Value = AllSumVnd[14];

            xlsSheet[i, j + 29].Value = AllSumUsd[15];
            xlsSheet[i, j + 30].Value = AllSumVnd[15];

            xlsSheet[i, j + 31].Value = AllSumUsd[16];
            xlsSheet[i, j + 32].Value = AllSumVnd[16];

            xlsSheet[i, j + 33].Value = AllSumUsd[17];
            xlsSheet[i, j + 34].Value = AllSumVnd[17];

            xlsSheet[i, j + 35].Value = AllSumUsd[18];
            xlsSheet[i, j + 36].Value = AllSumVnd[18];

            XLCellRange mrCell = new XLCellRange(i, i, 1, 3);
            xlsSheet.MergedCells.Add(mrCell);
            xlsSheet[i, 1].Value = "Tổng Cộng";

            for (int m = 0; m < 37; m++)
            {
                xlsSheet[i, m + j].Style = xlstStyleB1;
            }

            /////////////////////////////////////////
            xlsSheet[i, 4 + j].Style = xlstStyleB0;
            xlsSheet[i, 6 + j].Style = xlstStyleB0;
            xlsSheet[i, 8 + j].Style = xlstStyleB0;
            xlsSheet[i, 10 + j].Style = xlstStyleB0;
            xlsSheet[i, 11 + j].Style = xlstStyleB0;
            xlsSheet[i, 12 + j].Style = xlstStyleB0;
            xlsSheet[i, 14 + j].Style = xlstStyleB0;
            xlsSheet[i, 16 + j].Style = xlstStyleB0;
            xlsSheet[i, 18 + j].Style = xlstStyleB0;
            xlsSheet[i, j + 20].Style = xlstStyleB0;
            xlsSheet[i, j + 22].Style = xlstStyleB0;
            xlsSheet[i, j + 24].Style = xlstStyleB0;
            xlsSheet[i, j + 26].Style = xlstStyleB0;
            xlsSheet[i, j + 27].Style = xlstStyleB0;
            xlsSheet[i, j + 28].Style = xlstStyleB0;
            xlsSheet[i, j + 30].Style = xlstStyleB0;
            xlsSheet[i, j + 32].Style = xlstStyleB0;
            xlsSheet[i, j + 34].Style = xlstStyleB0;
            xlsSheet[i, j + 36].Style = xlstStyleB0;
            /////////////////////////////////////////
            XLSheet source = xlbBook.Sheets["tpl"];

            for (int row = 2; row <= 4; row++)
            {
                for (int col = 1; col <= 17; col++)
                {
                    xlsSheet[row, col].Style = source[row, col].Style;
                    xlsSheet[row, col].Value = source[row, col].Value;
                }
            }

            for (int row = 6; row <= 8; row++)
            {
                for (int col = 4; col <= 23; col++)
                {
                    xlsSheet[row - 4, col + 14].Style = source[row, col].Style;
                    xlsSheet[row - 4, col + 14].Value = source[row, col].Value;
                }
            }

            mrCell = new XLCellRange(2, 4, 1, 1);
            xlsSheet.MergedCells.Add(mrCell);

            mrCell = new XLCellRange(2, 4, 2, 2);
            xlsSheet.MergedCells.Add(mrCell);

            mrCell = new XLCellRange(2, 4, 3, 3);
            xlsSheet.MergedCells.Add(mrCell);

            mrCell = new XLCellRange(2, 2, 4, 17);
            xlsSheet.MergedCells.Add(mrCell);

            mrCell = new XLCellRange(2, 2, 20, 33);
            xlsSheet.MergedCells.Add(mrCell);

            for (int m = 0; m < 17; m++)
            {
                mrCell = new XLCellRange(3, 3, 4 + m, 5 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(3, 3, 6 + m, 7 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(3, 3, 8 + m, 9 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(3, 3, 10 + m, 11 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(3, 3, 14 + m, 15 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(3, 3, 16 + m, 17 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(2, 3, 18 + m, 19 + m);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(2, 3, 20 + m, 21 + m);
                xlsSheet.MergedCells.Add(mrCell);

                m += 15;
            }

            xlbBook.Save(fileNameDes);
            ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;
            C1XLBook xlbBook = new C1XLBook();
            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\GuixeThang.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\GuixeThang"))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\GuixeThang"));
            }

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\GuixeThang\GuiXeThang" + strDT + ".xlsx";
            string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/GuixeThang/GuiXeThang" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);

            sql = " SELECT *";
            sql += " FROM v_GuiXeThang";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            sql += " AND substring(NgayGui,1,6) <= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "' AND ((NgayKetThuc is null) OR ";
            sql += "      (NgayKetThuc is not null and rtrim(LTRIM(NgayKetThuc)) <> '' and substring(NgayKetThuc,1,6) >= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "')) Order by CustomerId";

            string[] sheetName = { "Oto", "XeMay", "XeDap", "Oto_HetHD", "XeMay_HetHD", "XeDap_HetHD" };
            int[] lines = { 4, 4, 4, 4, 4, 4 };

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        int i = 4;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        //xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyle.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;
                        xlstStyle.Format = "#,##0.00_);(#,##0.00)";

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle01.WordWrap = true;
                        xlstStyle01.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle01.SetBorderColor(Color.Black);
                        xlstStyle01.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderRight = XLLineStyleEnum.Thin;

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            XLSheet xlsSheet = xlbBook.Sheets[sheetName[Func.ParseInt(rowType[10]) - 1]];

                            string col01 = rowType[0].ToString();
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();
                            string col07 = Func.FormatDMY(rowType[6].ToString());
                            string col08 = Func.FormatDMY(rowType[7].ToString());
                            string col09 = rowType[8].ToString();

                            i = lines[Func.ParseInt(rowType[10]) - 1];

                            xlsSheet[i, 0].Value = i - 3;
                            xlsSheet[i, 1].Value = col03;
                            xlsSheet[i, 2].Value = col04;
                            xlsSheet[i, 3].Value = col05;
                            xlsSheet[i, 4].Value = col06;
                            xlsSheet[i, 5].Value = col07;
                            xlsSheet[i, 6].Value = col08;
                            xlsSheet[i, 7].Value = col09;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle;
                            xlsSheet[i, 2].Style = xlstStyle;
                            xlsSheet[i, 3].Style = xlstStyle01;
                            xlsSheet[i, 4].Style = xlstStyle;
                            xlsSheet[i, 5].Style = xlstStyle01;
                            xlsSheet[i, 6].Style = xlstStyle01;
                            xlsSheet[i, 7].Style = xlstStyle;
                            //++i;
                            lines[Func.ParseInt(rowType[10]) - 1]++;
                        }
                    }

                }
            }
            ///////////////////////////////////////
            sql = " SELECT *";
            sql += " FROM v_GuiXeThang";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            sql += " AND ((substring(NgayGui,1,6) > '" + drpYear.SelectedValue + drpMonth.SelectedValue + "') OR ";
            sql += "      (NgayKetThuc is not null and rtrim(LTRIM(NgayKetThuc)) <> '' and substring(NgayKetThuc,1,6) < '" + drpYear.SelectedValue + drpMonth.SelectedValue + "')) Order by CustomerId";

            ds = new DataSet();
            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        int i = 4;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        //xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        //xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyle.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;
                        xlstStyle.Format = "#,##0.00_);(#,##0.00)";

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle01.WordWrap = true;
                        xlstStyle01.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle01.SetBorderColor(Color.Black);
                        xlstStyle01.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderRight = XLLineStyleEnum.Thin;

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            XLSheet xlsSheet = xlbBook.Sheets[sheetName[Func.ParseInt(rowType[10]) + 2]];

                            string col01 = rowType[0].ToString();
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();
                            string col07 = Func.FormatDMY(rowType[6].ToString());
                            string col08 = Func.FormatDMY(rowType[7].ToString());
                            string col09 = rowType[8].ToString();

                            i = lines[Func.ParseInt(rowType[10]) + 2];

                            xlsSheet[i, 0].Value = i - 3;
                            xlsSheet[i, 1].Value = col03;
                            xlsSheet[i, 2].Value = col04;
                            xlsSheet[i, 3].Value = col05;
                            xlsSheet[i, 4].Value = col06;
                            xlsSheet[i, 5].Value = col07;
                            xlsSheet[i, 6].Value = col08;
                            xlsSheet[i, 7].Value = col09;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle;
                            xlsSheet[i, 2].Style = xlstStyle;
                            xlsSheet[i, 3].Style = xlstStyle01;
                            xlsSheet[i, 4].Style = xlstStyle;
                            xlsSheet[i, 5].Style = xlstStyle01;
                            xlsSheet[i, 6].Style = xlstStyle01;
                            xlsSheet[i, 7].Style = xlstStyle;
                            lines[Func.ParseInt(rowType[10]) + 2]++;
                        }
                    }

                }
            }
            ///////////////////////////////////////

            XLSheet sheet = xlbBook.Sheets["OTo"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["OTo"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["OTo"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["OTo"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["OTo"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["XeMay"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["XeDap"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["OTo_HetHD"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["XeMay_HetHD"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            sheet = xlbBook.Sheets["XeDap_HetHD"];
            sheet[1, 0].Value = sheet[1, 0].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
            sheet[0, 0].Value = sheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);
            xlbBook.Save(fileNameDes);
            ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
        }
Example #18
0
        protected void btnExport_Click(object sender, EventArgs e)
        {
            C1XLBook xlbBook = new C1XLBook();
            XLStyle xlstStyle = new XLStyle(xlbBook);
            xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
            xlstStyle.WordWrap = true;
            xlstStyle.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle.SetBorderColor(Color.Black);
            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle.BorderRight = XLLineStyleEnum.Thin;
            //xlstStyle.Format = "#,##0.00_);(#,##0.00)";
            xlstStyle.AlignVert = XLAlignVertEnum.Top;

            XLStyle xlstStyleN = new XLStyle(xlbBook);
            xlstStyleN.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleN.WordWrap = true;
            xlstStyleN.Font = new Font("", 8, FontStyle.Regular);
            xlstStyleN.SetBorderColor(Color.Black);
            xlstStyleN.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleN.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleN.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleN.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleN.Format = "#,##0.00_);(#,##0.00)";
            xlstStyleN.AlignVert = XLAlignVertEnum.Top;

            XLStyle xlstStyleS = new XLStyle(xlbBook);
            xlstStyleS.AlignHorz = XLAlignHorzEnum.Left;
            xlstStyleS.WordWrap = true;
            xlstStyleS.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleS.SetBorderColor(Color.Black);
            xlstStyleS.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleS.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleS.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleS.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleS.Format = "#,##0.00_);(#,##0.00)";
            xlstStyleS.AlignVert = XLAlignVertEnum.Top;

            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\MayMocThietBi.xls");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\MayMocThietBi"))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\MayMocThietBi"));
            }

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\MayMocThietBi\MayMocThietBi" + strDT + ".xls";
            string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/MayMocThietBi/MayMocThietBi" + strDT + ".xls";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);

            DataSet ds = new DataSet();
            string sql = string.Empty;

            //sql = " SELECT *";
            //sql += " FROM Report_BuildingInfo where delflag = '0'";
            ////sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
            ////sql += " AND ((NgayKetThuc is null) OR ";
            ////sql += "      (NgayKetThuc is not null and substring(NgayKetThuc,1,6) >= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'))";

            //using (SqlDatabase db = new SqlDatabase())
            //{
            //    using (SqlCommand cm = db.CreateCommand(sql))
            //    {
            //        SqlDataAdapter da = new SqlDataAdapter(cm);
            //        da.Fill(ds);
            //        if (ds != null)
            //        {
            //            XLSheet xlsSheetMenu = xlbBook.Sheets["Menu"];
            //            xlsSheetMenu[2, 1].Value = xlsSheetMenu[2, 1].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            //            DataTable dt = ds.Tables[0];
            //            foreach (DataRow rowType in dt.Rows)
            //            {
            //                int stt = 0;
            //                string id = rowType["id"].ToString();
            //                string sheet = rowType["Sheet"].ToString();
            //                int NumOfCol = Func.ParseInt(rowType["NoOfColumn"].ToString());
            //                string SqlSelect = rowType["SqlSelect"].ToString().Replace("{%NAM_THANG%}", drpYear.SelectedValue + drpMonth.SelectedValue);
            //                SqlSelect = SqlSelect.Replace("{%TOA_NHA%}", Func.ParseString(Session["__BUILDINGID__"]));
            //                int CellY = Func.ParseInt(rowType["CellBeginY"].ToString());
            //                int CellX = Func.ParseInt(rowType["CellBeginX"].ToString());
            //                string[] Col = rowType["SumCol"].ToString().Split(',');

            //                decimal[] SumCol = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
            //                using (SqlCommand cmSheet = db.CreateCommand(SqlSelect))
            //                {
            //                    DataSet dsSheet = new DataSet();
            //                    SqlDataAdapter daSheet = new SqlDataAdapter(cmSheet);
            //                    daSheet.Fill(dsSheet);
            //                    if (dsSheet != null)
            //                    {
            //                        XLSheet xlsSheet = xlbBook.Sheets[sheet];

            //                        DataTable dtSheet = dsSheet.Tables[0];
            //                        foreach (DataRow rowSheet in dtSheet.Rows)
            //                        {
            //                            xlsSheet[CellY + stt, CellX].Style = xlstStyle;
            //                            xlsSheet[CellY + stt, CellX].Value = Func.ParseString(++stt);

            //                            for (int k = 0; k < NumOfCol; k++)
            //                            {
            //                                string tmp = rowSheet[k].ToString();

            //                                xlsSheet[CellY + stt - 1, CellX + k + 1].Value = rowSheet[k];
            //                                xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyle;

            //                                switch (rowSheet[k].GetType().Name)
            //                                {
            //                                    case "Decimal":
            //                                        //xlsSheet[CellY + stt - 1, CellX + k + 1].Value = Func.ParseDouble(tmp);
            //                                        //break;
            //                                        SumCol[k] += Convert.ToDecimal(rowSheet[k]);
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyleN;

            //                                        break;
            //                                    case "Double":
            //                                        //xlsSheet[CellY + stt - 1, CellX + k + 1].Value = Func.ParseDouble(tmp);
            //                                        SumCol[k] += Convert.ToDecimal(rowSheet[k]);
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyleN;

            //                                        break;
            //                                    //break;
            //                                    case "Int32":
            //                                        //xlsSheet[CellY + stt - 1, CellX + k + 1].Value = Func.ParseInt(tmp);
            //                                        SumCol[k] += Convert.ToDecimal(rowSheet[k]);
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyleN;

            //                                        break;
            //                                    //break;
            //                                    case "Single":
            //                                        SumCol[k] += Convert.ToDecimal(rowSheet[k]);
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyleN;

            //                                        break;

            //                                    //xlsSheet[CellY + stt - 1, CellX + k + 1].Value = rowSheet[k];// Func.ParseInt(tmp);
            //                                    //xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyleN;
            //                                    default:
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Value = tmp;
            //                                        xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyle;
            //                                        break;
            //                                }
            //                                //xlsSheet[CellY + stt - 1, CellX + k + 1].Value = tmp;
            //                                //xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyle;
            //                            }
            //                        }
            //                        if (!String.IsNullOrEmpty(Col[0]))
            //                        {
            //                            for (int m = 0; m < NumOfCol + 1; m++)
            //                            {
            //                                xlsSheet[CellY + stt, m].Style = xlstStyleS;
            //                            }
            //                        }
            //                        if (!String.IsNullOrEmpty(Col[0]))
            //                        {
            //                            xlsSheet[CellY + stt, 0].Value = "Tổng cộng";
            //                            XLCellRange mrCell = new XLCellRange(CellY + stt, CellY + stt, 0, Func.ParseInt(Col[0]));
            //                            xlsSheet.MergedCells.Add(mrCell);
            //                            for (int m = 0; m <= Func.ParseInt(Col[0]); m++)
            //                            {
            //                                xlsSheet[CellY + stt, m].Style = xlstStyleS;
            //                            }
            //                        }
            //                        for (int m = 0; m < Col.Length; m++)
            //                        {
            //                            if (!String.IsNullOrEmpty(Col[m]))
            //                            {
            //                                xlsSheet[CellY + stt, CellX + Func.ParseInt(Col[m]) + 1].Value = SumCol[Func.ParseInt(Col[m])];
            //                                xlsSheet[CellY + stt, CellX + Func.ParseInt(Col[m]) + 1].Style = xlstStyleS;
            //                            }
            //                        }
            //                    }
            //                }
            //            }
            //        }
            //    }
            //}
            ds = new DataSet();
            sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM Report_BuildingInfo where id = 54 and delflag = '2'";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            int stt = 0;
                            string id = rowType["id"].ToString();
                            string sheet = "BaoCao";
                            int NumOfCol = Func.ParseInt(rowType["NoOfColumn"].ToString());
                            string SqlSelect = rowType["SqlSelect"].ToString().Replace("{%NAM_THANG%}", drpYear.SelectedValue + drpMonth.SelectedValue);
                            SqlSelect = SqlSelect.Replace("{%TOA_NHA%}", Func.ParseString(Session["__BUILDINGID__"]));
                            int CellY = Func.ParseInt(rowType["CellBeginY"].ToString());
                            int CellX = Func.ParseInt(rowType["CellBeginX"].ToString());
                            string[] Col = rowType["SumCol"].ToString().Split(',');

                            decimal[] SumCol = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
                            XLCellRange mrCell = new XLCellRange(0, 0, 0, 0);

                            string group = "";
                            int i = 0;
                            using (SqlCommand cmSheet = db.CreateCommand(SqlSelect))
                            {
                                DataSet dsSheet = new DataSet();
                                SqlDataAdapter daSheet = new SqlDataAdapter(cmSheet);
                                daSheet.Fill(dsSheet);
                                if (dsSheet != null)
                                {
                                    XLSheet xlsSheet = xlbBook.Sheets[sheet];
                                    xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);
                                    xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%TOA_NHA%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

                                    DataTable dtSheet = dsSheet.Tables[0];
                                    foreach (DataRow rowSheet in dtSheet.Rows)
                                    {
                                        string col11 = rowSheet[NumOfCol].ToString();

                                        if (!group.Equals(col11))
                                        {
                                            xlsSheet[CellY + i, CellX].Value = col11;
                                            group = col11;

                                            for (int k = 0; k <= NumOfCol; k++)
                                            {
                                                xlsSheet[CellY + i, CellX + k].Style = xlstStyleS;
                                            }
                                            mrCell = new XLCellRange(CellY + i, CellY + i, 0, NumOfCol);
                                            xlsSheet.MergedCells.Add(mrCell);

                                            xlsSheet[CellY + i, CellX].Style = xlstStyleS;
                                            i++;
                                        }
                                        xlsSheet[CellY + i, CellX + 0].Value = ++stt;
                                        xlsSheet[CellY + i, CellX + 0].Style = xlstStyle;

                                        for (int m = 1; m <= NumOfCol; m++)
                                        {
                                            xlsSheet[CellY + i, CellX + m].Value = rowSheet[m - 1];
                                            xlsSheet[CellY + i, CellX + m].Style = xlstStyle;
                                        }
                                        ++i;
                                    }
                                }
                            }
                        }
                    }
                }
            }
            xlbBook.Save(fileNameDes);
            ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
        }
        protected void btnView_Click(object sender, EventArgs e)
        {
            int rBillNo = 0;
            int cBillNo = 1;

            int rBillDate = 0;
            int cBillDate = 10;

            int rBillMonth = 2;
            int cBillMonth = 0;

            int rContact = 5;
            int cContact = 3;

            int rCustomer = 5;
            int cCustomer = 9;

            int rContract = 7;
            int cContract = 1;

            int rRate = 11;
            int cRate = 9;

            int rRateDate = 11;
            int cRateDate = 12;

            int rRent = 15;

            int rManager = 23;

            int rParking = 31;

            int rExtra = 39;

            int rElec = 47;

            int rWater = 55;

            int rService = 63;

            int rPaid = 70;

            int rDept = 77;

            int rOffice = 88;
            int cOffice = 3;

            int rPhone = 89;
            int cPhone = 3;

            int rBank = 89;
            int cBank = 7;

            int rAccountName = 91;
            int cAccountName = 7;

            int rAccount = 92;
            int cAccount = 7;

            int rSum = 81;
            int cSum = 11;

            int rSumRead = 82;
            int cSumRead = 13;

            int check = DbHelper.GetCount("Select count(*) from PaymentBillInfo Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + lblCustomerId.Text + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'");
            if (check == 0)
            {
                mvMessage.AddError("Xin vui lòng tạo hóa đơn trước khi xem");
                return;
            }
            mvMessage.CheckRequired(txtBillDate, "Ngày xuất Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtBillNo, "Số Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchange, "Tỉ giá USD-VN là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchangeDate, "Ngày tỉ giá là danh mục bắt buộc");
            //ShowData(drpYear.SelectedValue + drpMonth.SelectedValue);
            C1XLBook xlbBook = new C1XLBook();
            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BillTongQuat.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
            }

            XLStyle xlstStyle = new XLStyle(xlbBook);
            xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyle.AlignVert = XLAlignVertEnum.Center;
            xlstStyle.WordWrap = true;
            xlstStyle.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle.SetBorderColor(Color.Black);
            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleH = new XLStyle(xlbBook);
            xlstStyleH.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleH.AlignVert = XLAlignVertEnum.Center;
            xlstStyleH.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleH.SetBorderColor(Color.Black);
            xlstStyleH.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleH.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleH.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleH.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleH.WordWrap = true;

            XLStyle xlstStyleSum = new XLStyle(xlbBook);
            xlstStyleSum.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleSum.AlignVert = XLAlignVertEnum.Center;
            xlstStyleSum.Font = new Font("", 8, FontStyle.Bold);
            xlstStyleSum.SetBorderColor(Color.Black);
            xlstStyleSum.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleSum.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleSum.WordWrap = true;

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BillTongQuat" + strDT + ".xlsx";
            string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/BillTongQuat" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);
            XLSheet xlsSheet = xlbBook.Sheets["TongHop"];

            //Bill No
            xlsSheet[rBillNo, cBillNo].Value = xlsSheet[rBillNo, cBillNo].Value.ToString().Replace("{%BILL_NO%}", txtBillNo.Text);

            //Ngay Thang Nam
            DateTime dtime = DateTime.Today;

            string strTmp = xlsSheet[rBillDate, cBillDate].Value.ToString().Replace("{%NGAY%}", dtime.ToString("dd"));
            strTmp = strTmp.Replace("{%THANG%}", dtime.ToString("MM"));
            xlsSheet[rBillDate, cBillDate].Value = strTmp.Replace("{%NAM%}", dtime.ToString("yyyy"));

            //Nam
            xlsSheet[rBillMonth, cBillMonth].Value = xlsSheet[rBillMonth, cBillMonth].Value.ToString().Replace("{%NAM_THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            using (SqlDatabase db = new SqlDatabase())
            {
                DataSet ds = new DataSet();
                string sql = string.Empty;

                sql = " SELECT Name, ContactName";
                sql += " FROM Customer";
                sql += " WHERE CustomerId = '" + lblCustomerId.Text + "' ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Name = rowType[0].ToString();
                            string ContactName = rowType[1].ToString();

                            //Customer
                            xlsSheet[rCustomer, cCustomer].Value = xlsSheet[rCustomer, cCustomer].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            //Contact
                            xlsSheet[rContact, cContact].Value = xlsSheet[rContact, cContact].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);
                        }
                    }
                }
                Hashtable contractIdLst = new Hashtable();
                string contract = "";
                ds = new DataSet();
                sql = " SELECT Bank,Account,AccountName,Office,OfficeAddress,OfficePhone";
                sql += " FROM Mst_Building";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Bank = rowType["Bank"].ToString();
                            string Account = rowType["Account"].ToString();
                            string AccountName = rowType["AccountName"].ToString();
                            string Office = rowType["Office"].ToString();
                            string OfficeAddress = rowType["OfficeAddress"].ToString();
                            string OfficePhone = rowType["OfficePhone"].ToString();

                            xlsSheet[rOffice, cOffice].Value = xlsSheet[rOffice, cOffice].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheet[rPhone, cPhone].Value = xlsSheet[rPhone, cPhone].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheet[rBank, cBank].Value = xlsSheet[rBank, cBank].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheet[rAccountName, cAccountName].Value = xlsSheet[rAccountName, cAccountName].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheet[rAccount, cAccount].Value = xlsSheet[rAccount, cAccount].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);
                        }
                    }
                }

                xlsSheet[rRate, cRate].Value = xlsSheet[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", txtUsdExchange.Text);
                xlsSheet[rRateDate, cRateDate].Value = xlsSheet[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", txtUsdExchangeDate.Text);

                //Thue phong
                ds = new DataSet();
                sql = " Select *";
                sql += " FROM PaymentRoom";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";

                int sumRow = 0;
                int j = 0;
                decimal[] LastSumPriceVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] LastSumPriceUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                decimal PaidPriceVND = 0;
                decimal PaidPriceUSD = 0;

                int line = 0;
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rRent - 3 + j;

                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rRent + j);
                                j++;

                            }
                            count++;

                            int tmp = rRent + j;

                            string ContractId = Func.ParseString(rowType["ContractId"]);
                            string YearMonth = Func.ParseString(rowType["YearMonth"]);
                            string Area = Func.ParseString(rowType["Area"]);
                            string Name = Func.ParseString(rowType["Name"]);
                            string Regional = Func.ParseString(rowType["Regional"]);
                            string Floor = Func.ParseString(rowType["Floor"]);

                            string BeginContract = Func.ParseString(rowType["BeginContract"]);

                            if (!contractIdLst.ContainsKey(ContractId + "(" + BeginContract.Substring(0, 10) + ")"))
                            {
                                contractIdLst.Add(ContractId + "(" + BeginContract.Substring(0, 10) + ")", ContractId + "(" + BeginContract.Substring(0, 10) + ")");
                                contract += ";" + ContractId + "(" + BeginContract.Substring(0, 10) + ")";
                            }

                            xlsSheet[tmp, 1].Value = Name;
                            xlsSheet[tmp, 4].Value = rowType["Area"];
                            xlsSheet[tmp, 6].Value = rowType["MonthRentPriceUSD"];
                            xlsSheet[tmp, 7].Value = rowType["MonthRentPriceVND"];

                            xlsSheet[tmp, 8].Value = rowType["MonthRentSumUSD"];
                            xlsSheet[tmp, 9].Value = rowType["MonthRentSumVND"];

                            xlsSheet[tmp, 10].Value = rowType["VatRentPriceUSD"];
                            xlsSheet[tmp, 11].Value = rowType["VatRentPriceVND"];

                            xlsSheet[tmp, 12].Value = rowType["LastRentSumUSD"];
                            xlsSheet[tmp, 13].Value = rowType["LastRentSumVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            LastSumPriceVND[0] += Convert.ToDecimal(rowType["LastRentSumVND"]);
                            LastSumPriceUSD[0] += Convert.ToDecimal(rowType["LastRentSumUSD"]);

                        }
                        mCell = new XLCellRange(rRent + 1 + j, rRent + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        xlsSheet[rRent + 1 + j, 12].Value = LastSumPriceUSD[0];
                        xlsSheet[rRent + 1 + j, 13].Value = LastSumPriceVND[0];

                        for (int row = rRent + sumRow - 2; row <= rRent + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }
                        sumRow += dt.Rows.Count - 1;

                        ////////////////////////
                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rRent + 1 + j, col].Style = xlstStyleSum;
                        }
                        line = rManager - 3 + j;

                        mCell = new XLCellRange(line, line + 2, 1, 3);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 6, 7);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 8, 9);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 10, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line, line, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        count = 0;
                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rManager + j);
                                j++;

                            }
                            count++;
                            int tmp = rManager;

                            string YearMonth = Func.ParseString(row["YearMonth"]);
                            string Area = Func.ParseString(row["Area"]);
                            string Name = Func.ParseString(row["Name"]);

                            xlsSheet[tmp, 1].Value = Name;
                            xlsSheet[tmp, 4].Value = row["Area"];
                            xlsSheet[tmp, 6].Value = row["MonthManagerPriceUSD"];
                            xlsSheet[tmp, 7].Value = row["MonthManagerPriceVND"];

                            xlsSheet[tmp, 8].Value = row["MonthManagerSumUSD"];
                            xlsSheet[tmp, 9].Value = row["MonthManagerSumVND"];

                            xlsSheet[tmp, 19].Value = row["VatManagerPriceUSD"];
                            xlsSheet[tmp, 11].Value = row["VatManagerPriceVND"];

                            xlsSheet[tmp, 12].Value = row["LastManagerSumUSD"];
                            xlsSheet[tmp, 13].Value = row["LastManagerSumVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            LastSumPriceVND[1] += Convert.ToDecimal(row["LastManagerSumVND"]);
                            LastSumPriceUSD[1] += Convert.ToDecimal(row["LastManagerSumUSD"]);
                        }
                        mCell = new XLCellRange(rManager + 1 + j, rManager + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        xlsSheet[rManager + 1 + j, 12].Value = LastSumPriceUSD[1];
                        xlsSheet[rManager + 1 + j, 13].Value = LastSumPriceVND[1];

                        for (int row = rManager + sumRow - 2; row <= rManager + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rManager + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;

                    }
                }

                ds = new DataSet();
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT COUNT(*) AS Num, YearMonth, TariffsParkingName, PriceVND, PriceUSD, SUM(VatVND) AS VatVND,SUM(VatUSD) AS VatUSD, SUM(SumVND) AS SumVND, SUM(SumUSD) AS SumUSD, SUM(LastPriceVND) AS LastPriceVND";
                sql += "        , SUM(LastPriceUSD) AS LastPriceUSD";
                sql += " FROM         dbo.PaymentParking";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                sql += " GROUP BY YearMonth, TariffsParkingName, PriceVND, PriceUSD, Vat";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rParking - 3 + j;
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);
                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rParking + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rParking + j;

                            string Num = Func.ParseString(row["Num"]);
                            string TariffsParkingName = Func.ParseString(row["TariffsParkingName"]);

                            xlsSheet[tmp, 1].Value = TariffsParkingName;
                            xlsSheet[tmp, 4].Value = Num;
                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                            xlsSheet[tmp, 9].Value = row["SumVND"];

                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                            xlsSheet[tmp, 11].Value = row["VatVND"];

                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            LastSumPriceVND[2] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[2] += Convert.ToDecimal(row["LastPriceUSD"]);
                        }
                        xlsSheet[rParking + 1 + j, 12].Value = LastSumPriceUSD[2];
                        xlsSheet[rParking + 1 + j, 13].Value = LastSumPriceVND[2];

                        mCell = new XLCellRange(rParking + 1 + j, rParking + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        for (int row = rParking + sumRow - 2; row <= rParking + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rParking + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                //Lam ngoai gio
                ds = new DataSet();
                sql = " SELECT ExtraHour, dbo.fnDateTime(WorkingDate) WorkingDate, PriceVND,PriceUSD,VatUSD,VatVND,SumVND,SumUSD,LastPriceVND,LastPriceUSD  ";
                sql += " FROM   PaymentExtraTime";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rExtra - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 2, line + 2, 4, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rExtra + 1 + j);
                                j++;
                            }
                            count++;
                            int tmp = rExtra + j;

                            //string id = Func.ParseString(row["id"]);
                            string ExtraHour = Func.ParseString(row["ExtraHour"]);
                            string WorkingDate = Func.ParseString(row["WorkingDate"]);

                            xlsSheet[tmp, 1].Value = WorkingDate;
                            xlsSheet[tmp, 4].Value = ExtraHour;

                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                            xlsSheet[tmp, 9].Value = row["SumVND"];

                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                            xlsSheet[tmp, 11].Value = row["VatVND"];

                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                            XLCellRange mrCell = new XLCellRange(tmp, tmp, 1, 3);
                            xlsSheet.MergedCells.Add(mrCell);

                            mrCell = new XLCellRange(tmp, tmp, 4, 5);
                            xlsSheet.MergedCells.Add(mrCell);

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                            LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[3] += Convert.ToDecimal(row["LastPriceUSD"]);
                        }
                        mCell = new XLCellRange(rExtra + 1 + j, rExtra + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        xlsSheet[rExtra + 1 + j, 12].Value = LastSumPriceUSD[3];
                        xlsSheet[rExtra + 1 + j, 13].Value = LastSumPriceVND[3];

                        for (int row = rExtra + sumRow - 2; row <= rExtra + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 12; col++)
                        {
                            xlsSheet[rExtra + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                //Dien
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD, B.LastPriceVND, B.LastPriceUSD, B.Name ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfWaterId = 0  and A.YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                sql += " Order by A.DateFrom, B.FromIndex";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rElec - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 9, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rElec + 1 + j);
                                j++;

                            }
                            count++;
                            int tmp = rElec + j;

                            string DateFrom = Func.ParseString(row["DateFrom"]);
                            string DateTo = Func.ParseString(row["DateTo"]);

                            string FromIndex = Func.ParseString(row["FromIndex"]);
                            string ToIndex = Func.ParseString(row["ToIndex"]);
                            string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                            string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                            string Mount = Func.ParseString(row["Mount"]);

                            xlsSheet[tmp, 1].Value = DateFrom;
                            xlsSheet[tmp, 2].Value = DateTo;
                            xlsSheet[tmp, 3].Value = FromIndex;
                            xlsSheet[tmp, 4].Value = ToIndex;
                            xlsSheet[tmp, 5].Value = OtherFee01;
                            xlsSheet[tmp, 6].Value = Mount;
                            xlsSheet[tmp, 7].Value = row["PriceVND"];
                            xlsSheet[tmp, 8].Value = row["VatVND"];

                            xlsSheet[tmp, 9].Value = row["SumVND"];
                            xlsSheet[tmp, 11].Value = row["OtherFee02"];
                            xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                            mCell = new XLCellRange(tmp, tmp, 9, 10);
                            xlsSheet.MergedCells.Add(mCell);

                            mCell = new XLCellRange(tmp, tmp, 12, 13);
                            xlsSheet.MergedCells.Add(mCell);

                            for (int col = 1; col <= 12; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                            LastSumPriceVND[4] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[4] += Convert.ToDecimal(row["LastPriceUSD"]);
                        }
                        xlsSheet[rElec + 1 + j, 12].Value = LastSumPriceVND[4];
                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(rElec + 1 + j, rElec + 1 + j, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        for (int row = rElec + sumRow - 2; row <= rElec + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rElec + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                //Nuoc
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD, B.LastPriceVND, B.LastPriceUSD, B.Name ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfElecId = 0 and A.YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                sql += " Order by A.DateFrom, B.FromIndex";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rWater - 3 + j;
                    //Phi dien
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 1);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 2, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 6, 6);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 7, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 8, 8);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 9, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 9, 10);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 11, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rWater + 1 + j);
                                j++;

                            }
                            count++;
                            int tmp = rWater + j;

                            string DateFrom = Func.ParseString(row["DateFrom"]);
                            string DateTo = Func.ParseString(row["DateTo"]);

                            string FromIndex = Func.ParseString(row["FromIndex"]);
                            string ToIndex = Func.ParseString(row["ToIndex"]);
                            string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                            string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                            string Mount = Func.ParseString(row["Mount"]);

                            xlsSheet[tmp, 1].Value = DateFrom;
                            xlsSheet[tmp, 2].Value = DateTo;
                            xlsSheet[tmp, 3].Value = FromIndex;
                            xlsSheet[tmp, 4].Value = ToIndex;
                            xlsSheet[tmp, 5].Value = Mount;
                            xlsSheet[tmp, 6].Value = row["PriceVND"];
                            xlsSheet[tmp, 7].Value = row["OtherFee01"];
                            xlsSheet[tmp, 8].Value = row["VatVND"];

                            xlsSheet[tmp, 9].Value = row["SumVND"];
                            xlsSheet[tmp, 11].Value = row["OtherFee02"];
                            xlsSheet[tmp, 12].Value = row["LastPriceVND"];

                            for (int col = 1; col <= 12; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                            LastSumPriceVND[5] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[5] += Convert.ToDecimal(row["LastPriceUSD"]);

                            mCell = new XLCellRange(tmp, tmp, 9, 10);
                            xlsSheet.MergedCells.Add(mCell);

                            mCell = new XLCellRange(tmp, tmp, 12, 13);
                            xlsSheet.MergedCells.Add(mCell);
                        }
                        xlsSheet[rWater + 1 + j, 12].Value = LastSumPriceVND[5];
                        mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(rWater + 1 + j, rWater + 1 + j, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        for (int row = rWater + sumRow - 2; row <= rWater + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }
                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rWater + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;
                    }
                }

                //Service
                ds = new DataSet();

                sql = string.Empty;
                sql = " SELECT Service,dbo.fnDateTime(ServiceDateFrom) ServiceDateFrom,dbo.fnDateTime(ServiceDateTo) ServiceDateTo,PriceVND,PriceUSD,VatUSD,VatVND,Mount,SumVND,SumUSD,LastPriceVND,LastPriceUSD ";
                sql += " FROM   PaymentService";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                sql += " Order By ServiceDate ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rService - 3 + j;
                    //Phi khác
                    XLCellRange mCell = new XLCellRange(line, line + 2, 1, 2);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 3, 3);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line + 2, 4, 4);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 2, 5, 5);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 6, 7);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 8, 9);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 10, 11);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line, line, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    mCell = new XLCellRange(line + 1, line + 1, 12, 13);
                    xlsSheet.MergedCells.Add(mCell);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        foreach (DataRow row in dt.Rows)
                        {
                            if (count >= 1)
                            {
                                xlsSheet.Rows.Insert(rService + j);
                                j++;

                            }
                            count++;
                            int tmp = rService + j;

                            string Service = Func.ParseString(row["Service"]);
                            string ServiceDateFrom = Func.ParseString(row["ServiceDateFrom"]);
                            string ServiceDateTo = Func.ParseString(row["ServiceDateTo"]);

                            string Mount = Func.ParseString(row["Mount"]);

                            xlsSheet[tmp, 1].Value = Service;
                            xlsSheet[tmp, 3].Value = ServiceDateFrom;
                            xlsSheet[tmp, 4].Value = ServiceDateTo;
                            xlsSheet[tmp, 5].Value = Mount;

                            xlsSheet[tmp, 6].Value = row["PriceUSD"];
                            xlsSheet[tmp, 7].Value = row["PriceVND"];

                            xlsSheet[tmp, 8].Value = row["SumUSD"];
                            xlsSheet[tmp, 9].Value = row["SumVND"];

                            xlsSheet[tmp, 10].Value = row["VatUSD"];
                            xlsSheet[tmp, 11].Value = row["VatVND"];

                            xlsSheet[tmp, 12].Value = row["LastPriceUSD"];
                            xlsSheet[tmp, 13].Value = row["LastPriceVND"];

                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                            LastSumPriceVND[6] += Convert.ToDecimal(row["LastPriceVND"]);
                            LastSumPriceUSD[6] += Convert.ToDecimal(row["LastPriceUSD"]);
                        }
                        xlsSheet[rService + 1 + j, 12].Value = LastSumPriceUSD[6];
                        xlsSheet[rService + 1 + j, 13].Value = LastSumPriceVND[6];

                        mCell = new XLCellRange(rService + 1 + j, rService + 1 + j, 1, 11);
                        xlsSheet.MergedCells.Add(mCell);

                        mCell = new XLCellRange(rService + 1 + j, rService + 1 + j, 12, 13);
                        xlsSheet.MergedCells.Add(mCell);

                        for (int row = rService + sumRow - 2; row <= rService + sumRow + dt.Rows.Count; row++)
                        {
                            for (int col = 1; col <= 13; col++)
                            {
                                xlsSheet[row, col].Style = xlstStyle;
                            }
                        }

                        for (int col = 1; col <= 11; col++)
                        {
                            xlsSheet[rService + 1 + j, col].Style = xlstStyleSum;
                        }
                        sumRow += dt.Rows.Count - 1;

                    }
                }

                //Paid
                sql = "Select  *";
                sql += " From    PaymentBillDetail";
                sql += " Where   BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                DataTable dtPaid = DbHelper.GetDataTable(sql);
                for (int i = 0; i < dtPaid.Rows.Count; i++)
                {
                    string PaymentType = Func.ParseString(dtPaid.Rows[i]["PaymentType"]);
                    string MoneyUSD = Func.ParseString(dtPaid.Rows[i]["MoneyUSD"]);
                    string MoneyVND = Func.ParseString(dtPaid.Rows[i]["MoneyVND"]);
                    string PaidUSD = Func.ParseString(dtPaid.Rows[i]["PaidUSD"]);
                    string PaidVND = Func.ParseString(dtPaid.Rows[i]["PaidVND"]);
                    string ExchangeType = Func.ParseString(dtPaid.Rows[i]["ExchangeType"]);
                    string UsdExchange = Func.ParseString(dtPaid.Rows[i]["UsdExchange"]);
                    string YearMonth = Func.ParseString(dtPaid.Rows[i]["YearMonth"]);

                    decimal tmpUSD = Convert.ToDecimal(MoneyUSD) - Convert.ToDecimal(PaidUSD);
                    decimal tmpVND = Convert.ToDecimal(MoneyVND) - Convert.ToDecimal(PaidVND);

                    PaidPriceUSD += Convert.ToDecimal(dtPaid.Rows[i]["PaidUSD"]);
                    PaidPriceVND += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                    xlsSheet[rPaid + j, 1].Value = YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4);
                    switch (PaymentType)
                    {
                        case "1":
                            //Rent
                            xlsSheet[rPaid + 1 + j, 2].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + 1 + j, 3].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "2":
                            //Manager
                            xlsSheet[rPaid + 1 + j, 4].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + 1 + j, 5].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "3":
                            //Parking
                            xlsSheet[rPaid + 1 + j, 6].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + 1 + j, 7].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "4":
                            //Extra
                            xlsSheet[rPaid + 1 + j, 8].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + 1 + j, 9].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "5":
                            xlsSheet[rPaid + 1 + j, 10].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "6":
                            xlsSheet[rPaid + 1 + j, 11].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        case "7":
                            xlsSheet[rPaid + 1 + j, 12].Value = dtPaid.Rows[i]["PaidUSD"];
                            xlsSheet[rPaid + 1 + j, 13].Value = dtPaid.Rows[i]["PaidVND"];
                            break;
                        default:
                            break;
                    }
                }
                int lineTmp = rPaid - 2 + j;
                //Phi khác
                XLCellRange mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheet.MergedCells.Add(mCellTmp);
                for (int row = lineTmp; row <= rPaid + 1 + j; row++)
                {
                    for (int col = 1; col <= 13; col++)
                    {
                        xlsSheet[row, col].Style = xlstStyle;
                    }
                }

                xlsSheet[lineTmp + 3, 1].Style = xlstStyleSum;

                lineTmp = rDept - 2 + j;
                //Dept
                mCellTmp = new XLCellRange(lineTmp, lineTmp + 1, 1, 1);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 2, 3);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 4, 5);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 6, 7);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 8, 9);
                xlsSheet.MergedCells.Add(mCellTmp);

                mCellTmp = new XLCellRange(lineTmp, lineTmp, 12, 13);
                xlsSheet.MergedCells.Add(mCellTmp);

                for (int row = lineTmp; row <= rDept + 1 + j; row++)
                {
                    for (int col = 1; col <= 13; col++)
                    {
                        xlsSheet[row, col].Style = xlstStyle;
                    }
                }
                xlsSheet[lineTmp + 3, 1].Style = xlstStyleSum;

                decimal AllSumVND = 0;
                decimal AllSumUSD = 0;
                for (int i = 0; i < 7; i++)
                {
                    AllSumVND += LastSumPriceVND[i];
                    AllSumUSD += LastSumPriceUSD[i];
                }

                AllSumVND -= PaidPriceVND;
                AllSumUSD -= PaidPriceUSD;
                AllSumVND += Convert.ToDecimal(AllSumUSD * Convert.ToDecimal(txtUsdExchange.Text));

                string strMoney = Func.docso(Convert.ToInt32(AllSumVND));

                xlsSheet[rContract, cContract].Value = xlsSheet[rContract, cContract].Value.ToString().Replace("{%HOP_DONG%}", contract.Substring(1));
                xlsSheet[rSum + j, cSum].Value = Convert.ToInt32(AllSumVND);
                xlsSheet[rSumRead + j, cSumRead].Value = xlsSheet[rSumRead + j, cSumRead].Value.ToString().Replace("{%TONG_CHU%}", strMoney.ToUpper());

                xlbBook.Save(fileNameDes);
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
            }
        }
        protected void btnView_Click(object sender, EventArgs e)
        {
            C1XLBook xlbBook = new C1XLBook();
            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BillPhongHop.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
            }

            decimal LastSumPriceVND = 0;
            decimal LastSumPriceUSD = 0;

            XLStyle xlstStyle = new XLStyle(xlbBook);
            xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyle.WordWrap = true;
            xlstStyle.Font = new Font("", 8, FontStyle.Regular);
            xlstStyle.SetBorderColor(Color.Black);
            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle.BorderRight = XLLineStyleEnum.Thin;

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BillPhongHop" + strDT + ".xlsx";
            string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/BillPhongHop" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx");
            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);
            XLSheet xlsSheet = xlbBook.Sheets["HoaDon"];

            int k = 2;
            xlsSheet[1, 6 + k].Value = xlsSheet[1, 6 + k].Value.ToString().Replace("{%NGAY%}", DateTime.Today.ToString("dd"));
            xlsSheet[1, 6 + k].Value = xlsSheet[1, 6 + k].Value.ToString().Replace("{%THANG%}", DateTime.Today.ToString("MM"));
            xlsSheet[1, 6 + k].Value = xlsSheet[1, 6 + k].Value.ToString().Replace("{%NAM%}", DateTime.Today.ToString("yyyy"));

            using (SqlDatabase db = new SqlDatabase())
            {
                DataSet ds = new DataSet();
                string sql = string.Empty;

                sql = " SELECT Name, ContactName";
                sql += " FROM Customer";
                sql += " WHERE CustomerId = '" + lnbCustomerId.Text + "' ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Name = rowType[0].ToString();
                            string ContactName = rowType[1].ToString();

                            xlsSheet[6, 0].Value = xlsSheet[6, 0].Value.ToString().Replace("{%TEN_CONG_TY%}", Name);
                            xlsSheet[7, 0].Value = xlsSheet[7, 0].Value.ToString().Replace("{%NGUOI_DAI_DIEN%}", ContactName);

                            xlsSheet[9, 0].Value = xlsSheet[9, 0].Value.ToString().Replace("{%NGAY_HOP_DONG%}", lblBookingDate.Text);

                            xlsSheet[11, 0].Value = xlsSheet[11, 0].Value.ToString().Replace("{%GIO_TU%}", drpHourFrom.SelectedValue);
                            xlsSheet[11, 0].Value = xlsSheet[11, 0].Value.ToString().Replace("{%PHUT_TU%}", drpMinuteFrom.Value);
                            xlsSheet[11, 0].Value = xlsSheet[11, 0].Value.ToString().Replace("{%GIO_DEN%}", drpHourTo.SelectedValue);
                            xlsSheet[11, 0].Value = xlsSheet[11, 0].Value.ToString().Replace("{%PHUT_DEN%}", drpMinuteTo.Value);
                            xlsSheet[11, 0].Value = xlsSheet[11, 0].Value.ToString().Replace("{%NGAY_THUE%}", lblBookingDate.Text);
                        }
                    }
                }

                ds = new DataSet();
                sql = " SELECT Bank,Account,AccountName,Office,OfficeAddress,OfficePhone";
                sql += " FROM Mst_Building";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        int tmp = 2;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Bank = rowType["Bank"].ToString();
                            string Account = rowType["Account"].ToString();
                            string AccountName = rowType["AccountName"].ToString();
                            string Office = rowType["Office"].ToString();
                            string OfficeAddress = rowType["OfficeAddress"].ToString();
                            string OfficePhone = rowType["OfficePhone"].ToString();

                            xlsSheet[30 + tmp, 0].Value = xlsSheet[30 + tmp, 0].Value.ToString().Replace("{%VAN_PHONG%}", Office);
                            xlsSheet[31 + tmp, 0].Value = xlsSheet[31 + tmp, 0].Value.ToString().Replace("{%DIEN_THOAI%}", OfficePhone);

                            xlsSheet[33 + tmp, 0].Value = xlsSheet[33 + tmp, 0].Value.ToString().Replace("{%NGAN_HANG%}", Bank);
                            xlsSheet[34 + tmp, 0].Value = xlsSheet[34 + tmp, 0].Value.ToString().Replace("{%TEN_TAI_KHOAN%}", AccountName);
                            xlsSheet[35 + tmp, 0].Value = xlsSheet[35 + tmp, 0].Value.ToString().Replace("{%SO_TAI_KHOAN%}", Account);
                        }
                    }
                }

                xlsSheet[27, 3].Value = Convert.ToDecimal(txtRate.Text);
                xlsSheet[27, 7].Value = txtRateDate.Text.Substring(0, 10);

                ds = new DataSet();
                sql = " SELECT *";
                sql += " FROM v_BookingRoomInfo";
                sql += " WHERE BookingId = '" + hidId.Value + "' ";

                int j = 0;

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            if (j >= 1)
                            {
                                xlsSheet.Rows.Insert(18);
                            }

                            int tmp = 18 + j++;
                            string Name = rowType["Name"].ToString();
                            string Regional = rowType["Regional"].ToString();
                            string Floor = rowType["Floor"].ToString();
                            string Area = rowType["Area"].ToString();
                            string PriceUSD = rowType["PriceUSD"].ToString();
                            string PriceVND = rowType["PriceVND"].ToString();
                            string SumUSD = rowType["SumUSD"].ToString();
                            string SumVND = rowType["SumVND"].ToString();
                            string VatUSD = rowType["VatUSD"].ToString();
                            string VatVND = rowType["VatVND"].ToString();
                            string LastPriceUSD = rowType["LastPriceUSD"].ToString();
                            string LastPriceVND = rowType["LastPriceVND"].ToString();
                            string BookingId = rowType["BookingId"].ToString();

                            xlsSheet[tmp, 1].Value = Name;
                            xlsSheet[tmp, 2].Value = Regional;
                            xlsSheet[tmp, 3].Value = Floor;
                            xlsSheet[tmp, 4].Value = rowType["Area"];
                            xlsSheet[tmp, 5].Value = rowType["PriceUSD"];
                            xlsSheet[tmp, 6].Value = rowType["PriceVND"];
                            xlsSheet[tmp, 7].Value = rowType["SumUSD"];
                            xlsSheet[tmp, 8].Value = rowType["SumVND"];
                            xlsSheet[tmp, 9].Value = rowType["VatUSD"];
                            xlsSheet[tmp, 10].Value = rowType["VatVND"];
                            xlsSheet[tmp, 11].Value = rowType["LastPriceUSD"];
                            xlsSheet[tmp, 12].Value = rowType["LastPriceVND"];

                            LastSumPriceVND += Convert.ToDecimal(rowType["LastPriceVND"]);
                            LastSumPriceUSD += Convert.ToDecimal(rowType["LastPriceUSD"]);

                            for (int col = 1; col <= 12; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                        }

                    }
                }
                j--;
                XLSheet source = xlbBook.Sheets["tpl"];

                for (int row = 22; row <= 26; row++)
                {
                    for (int col = 1; col <= 12; col++)
                    {
                        xlsSheet[row + j, col].Style = source[row, col].Style;
                        xlsSheet[row + j, col].Value = source[row, col].Value;
                    }
                }

                XLCellRange mrCell = new XLCellRange(22 + j, 23 + j, 1, 1);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 23 + j, 2, 2);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 23 + j, 3, 4);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 22 + j, 5, 6);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 22 + j, 7, 8);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 22 + j, 9, 10);
                xlsSheet.MergedCells.Add(mrCell);

                mrCell = new XLCellRange(22 + j, 22 + j, 11, 12);
                xlsSheet.MergedCells.Add(mrCell);

                ds = new DataSet();
                sql = " SELECT  Service, Mount, PriceUSD, PriceVND, SumUSD, SumVND, VatUSD, VatVND, LastPriceUSD, LastPriceVND, Unit";
                sql += " FROM    PaymentBookingService";
                sql += " WHERE BookingId = '" + hidId.Value + "' ";

                j = 0;
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            if (j >= 1)
                            {
                                xlsSheet.Rows.Insert(19);
                            }
                            int tmp = 24 + j++;

                            string Service = rowType["Service"].ToString();
                            string Mount = rowType["Mount"].ToString();
                            string Unit = rowType["Unit"].ToString();
                            string PriceUSD = rowType["PriceUSD"].ToString();
                            string PriceVND = rowType["PriceVND"].ToString();
                            string SumUSD = rowType["SumUSD"].ToString();
                            string SumVND = rowType["SumVND"].ToString();
                            string VatUSD = rowType["VatUSD"].ToString();
                            string VatVND = rowType["VatVND"].ToString();
                            string LastPriceUSD = rowType["LastPriceUSD"].ToString();
                            string LastPriceVND = rowType["LastPriceVND"].ToString();

                            xlsSheet[tmp, 1].Value = Service;
                            xlsSheet[tmp, 2].Value = rowType["Mount"];
                            xlsSheet[tmp, 3].Value = Unit;

                            xlsSheet[tmp, 5].Value = rowType["PriceUSD"];
                            xlsSheet[tmp, 6].Value = rowType["PriceVND"];
                            xlsSheet[tmp, 7].Value = rowType["SumUSD"];
                            xlsSheet[tmp, 8].Value = rowType["SumVND"];
                            xlsSheet[tmp, 9].Value = rowType["VatUSD"];
                            xlsSheet[tmp, 10].Value = rowType["VatVND"];
                            xlsSheet[tmp, 11].Value = rowType["LastPriceUSD"];
                            xlsSheet[tmp, 12].Value = rowType["LastPriceVND"];

                            LastSumPriceVND += Convert.ToDecimal(rowType["LastPriceVND"]);
                            LastSumPriceUSD += Convert.ToDecimal(rowType["LastPriceUSD"]);

                            for (int col = 1; col <= 12; col++)
                            {
                                xlsSheet[tmp, col].Style = xlstStyle;
                            }
                        }

                    }
                }
                xlsSheet[28 + j - 1, 2].Value = LastSumPriceVND;
                xlsSheet[29 + j - 1, 2].Value = Func.docso(Convert.ToInt32(LastSumPriceVND));

                xlbBook.Save(fileNameDes);
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
            }
        }
Example #21
0
        protected void btnExport_Click(object sender, EventArgs e)
        {
            string building = Func.ParseString(Session["__BUILDINGID__"]);

            DbHelper.ExecuteNonQuery("Delete from BD_PaymentReportMonth Where BuildingId = '" + building + "' and substring(yearmonth,1,4) = '" + DateTime.Now.Year.ToString() + "'");

            DataTable dtTable = new DataTable();
            dtTable.Columns.Add("YearMonth", Type.GetType("System.String"));
            dtTable.Columns.Add("BuildingId", Type.GetType("System.String"));
            dtTable.Columns.Add("PaymentType", Type.GetType("System.String"));
            dtTable.Columns.Add("PaymentId", Type.GetType("System.String"));
            dtTable.Columns.Add("colNo", Type.GetType("System.String"));
            dtTable.Columns.Add("ItemLevel", Type.GetType("System.String"));
            dtTable.Columns.Add("ParentId", Type.GetType("System.String"));

            string buildingId = Func.ParseString(Session["__BUILDINGID__"]);
            string sqlTmp = "Select Name,id,ParentId,ItemLevel from BD_PaymentType Where delflag = '0' and BuildingId = '" + buildingId + "' ";
            sqlTmp += "Union ";
            sqlTmp += "Select Name,id,ParentId,ItemLevel from Mst_PaymentType";

            DataTable dt = DbHelper.GetDataTable("Select * from (" + sqlTmp + ") A order by id");
            foreach (DataRow dr in dt.Rows)
            {
                if (dr["ParentId"].ToString() == "")
                {
                    int j = 1;
                    ListItem item = new ListItem();
                    item.Text = dr["Name"].ToString();
                    item.Value = dr["Id"].ToString();

                    for (int k = 0; k < 13; k++)
                    {
                        string month = Func.ParseString(k).PadLeft(2, '0');
                        string yearmonthTmp = DateTime.Now.Year.ToString() + month;
                        dtTable.Rows.Add(yearmonthTmp, building, item.Text, item.Value, k, dr["ItemLevel"].ToString(), dr["ParentId"].ToString());
                    }

                    GetChildItems(dr["Id"].ToString(), dt, dtTable, j);
                }
            }
            using (SqlBulkCopy copy = new SqlBulkCopy(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
            {
                copy.DestinationTableName = "BD_PaymentReportMonth";
                copy.BatchSize = 3000;
                copy.BulkCopyTimeout = 99999;
                copy.ColumnMappings.Add(0, "YearMonth");
                copy.ColumnMappings.Add(1, "BuildingId");
                copy.ColumnMappings.Add(2, "PaymentType");
                copy.ColumnMappings.Add(3, "PaymentId");
                copy.ColumnMappings.Add(4, "colNo");
                copy.ColumnMappings.Add(5, "ItemLevel");
                copy.ColumnMappings.Add(6, "ParentId");

                copy.WriteToServer(dtTable);
            }
            using (SqlConnection con = new SqlConnection(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
            {
                con.Open();
                using (SqlCommand cm = new SqlCommand("sp_PaymentMonthReport", con))
                {
                    try
                    {
                        cm.CommandType = CommandType.StoredProcedure;
                        cm.Parameters.AddWithValue("@BuildingId", building);
                        cm.Parameters.AddWithValue("@Year", drpYear.SelectedValue);

                        cm.Parameters.AddWithValue("@Created", DateTime.Now.ToString("yyyyMMddHHmmss"));
                        cm.Parameters.AddWithValue("@CreatedBy", Page.User.Identity.Name);
                        cm.Parameters.AddWithValue("@Modified", DateTime.Now.ToString("yyyyMMddHHmmss"));
                        cm.Parameters.AddWithValue("@ModifiedBy", Page.User.Identity.Name);

                        cm.CommandTimeout = 9999;

                        int ret = cm.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
                        ApplicationLog.WriteError(ex);
                    }
                    finally
                    {
                        con.Close();
                    }
                }
            }
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT id,YearMonth,BuildingId,PaymentType,isnull(InVND,0) InVND,isnull(InUSD,0) InUSD,isnull(OutVND,0) OutVND,isnull(OutUSD,0) OutUSD,Created,CreatedBy,Modified,ModifiedBy,PaymentId,colNo,bold,ItemLevel,ParentId";
            sql += " FROM BD_PaymentReportMonth ";
            sql += " WHERE BuildingId = '" + building + "' ";
            sql += " order by yearmonth, id";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();

                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\BaoCaoThuChiThang.xlsx");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoThuChiThang"))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoThuChiThang"));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\BaoCaoThuChiThang\BaoCaoThuChiThang" + strDT + ".xlsx";
                        string strFilePathExport = "Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/BaoCaoThuChiThang/BaoCaoThuChiThang" + strDT + ".xlsx";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);

                        string sheet = "BaoCao";

                        XLSheet xlsSheet = xlbBook.Sheets[sheet];

                        xlsSheet[0, 2].Value = xlsSheet[0, 2].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + building + "'"));
                        xlsSheet[0, 2].Value = xlsSheet[0, 2].Value.ToString().Replace("{%NAM_THANG%}", "NĂM " + drpYear.SelectedValue);

                        int k = 5;
                        int colData = 6;
                        string bsId = "";
                        string[] alpha = "A. B. C. D. E. F. G. H. I. J. K. L. M. N. O. P. Q. R. S. T. U. V. W. X. Y. Z.".Split(' ');
                        string[] alphaLevel2 = "I. II. III. IV. V. VI. VII. VIII. IX. X. XI. XII. XII. XIV.".Split(' ');
                        string[] alphaLevel3 = "1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.".Split(' ');
                        string[] alphaLevel4 = "a. b. c. d. e. f. g. h. i. j. k. l. m. n. o. p. q. r. s. t. u. v. w.".Split(' ');
                        int level1 = -1;
                        int level2 = -1;
                        int level3 = -1;
                        int level4 = -1;
                        xlsSheet.Columns[1].Width = 300;
                        xlsSheet.Columns[2].Width = 300;
                        xlsSheet.Columns[3].Width = 300;
                        xlsSheet.Columns[4].Width = 300;
                        xlsSheet.Columns[5].Width = 300;

                        int lastrow = 0;
                        decimal inSumVND = 0;
                        decimal outSumVND = 0;

                        DataTable dtReport = ds.Tables[0];
                        foreach (DataRow rowType in dtReport.Rows)
                        {
                            string PaymentType = rowType["PaymentType"].ToString();
                            //string InVND = rowType["InVND"].ToString();
                            //string InUSD = rowType["InUSD"].ToString();
                            //string OutVND = rowType["OutVND"].ToString();
                            //string OutUSD = rowType["OutUSD"].ToString();
                            string PaymentId = rowType["PaymentId"].ToString();
                            int colNo = Func.ParseInt(rowType["colNo"].ToString());
                            string id = rowType["yearmonth"].ToString();
                            string ParentId = rowType["ParentId"].ToString();
                            string itemLevel = rowType["ItemLevel"].ToString();
                            //string PaymentId = rowType["PaymentId"].ToString();
                            //xlsSheet[2, j].Value = id;
                            //xlsSheet[3, j].Value = Budget;
                            //j += 2;
                            XLStyle xlstStyleAll = new XLStyle(xlbBook);
                            xlstStyleAll.WordWrap = false;
                            xlstStyleAll.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleAll.SetBorderColor(Color.Black);
                            xlstStyleAll.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyleAll.BorderRight = XLLineStyleEnum.Thin;
                            xlstStyleAll.Format = "#,##0.00_);(#,##0.00)";

                            XLStyle xlstStyleLeft = new XLStyle(xlbBook);
                            xlstStyleLeft.WordWrap = false;
                            xlstStyleLeft.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleLeft.SetBorderColor(Color.Black);
                            xlstStyleLeft.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleLeft.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleLeft.BorderLeft = XLLineStyleEnum.Thin;
                            xlstStyleLeft.Format = "#,##0.00_);(#,##0.00)";

                            XLStyle xlstStyleRight = new XLStyle(xlbBook);
                            xlstStyleRight.WordWrap = false;
                            xlstStyleRight.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleRight.SetBorderColor(Color.Black);
                            xlstStyleRight.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleRight.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleRight.BorderRight = XLLineStyleEnum.Thin;
                            xlstStyleRight.Format = "#,##0.00_);(#,##0.00)";

                            XLStyle xlstStyleMiddle = new XLStyle(xlbBook);
                            xlstStyleMiddle.WordWrap = false;
                            xlstStyleMiddle.Font = new Font("", 8, FontStyle.Regular);
                            xlstStyleMiddle.SetBorderColor(Color.Black);
                            xlstStyleMiddle.BorderBottom = XLLineStyleEnum.Thin;
                            xlstStyleMiddle.BorderTop = XLLineStyleEnum.Thin;
                            xlstStyleMiddle.Format = "#,##0.00_);(#,##0.00)";

                            xlsSheet[k, 2].Style = xlstStyleLeft;
                            xlsSheet[k, 3].Style = xlstStyleMiddle;
                            xlsSheet[k, 4].Style = xlstStyleMiddle;
                            xlsSheet[k, 5].Style = xlstStyleMiddle;
                            xlsSheet[k, 6].Style = xlstStyleRight;

                            if (itemLevel.Equals("0"))
                            {
                                xlstStyleAll.BackColor = Color.Orange;
                                xlstStyleLeft.BackColor = Color.Orange;
                                xlstStyleRight.BackColor = Color.Orange;
                                xlstStyleMiddle.BackColor = Color.Orange;
                            }
                            else
                            {
                                xlstStyleAll.BackColor = Color.White;
                                xlstStyleLeft.BackColor = Color.White;
                                xlstStyleRight.BackColor = Color.White;
                                xlstStyleMiddle.BackColor = Color.White;
                            }

                            if (itemLevel.Equals("0") || itemLevel.Equals("1") || itemLevel.Equals("2"))
                            {
                                xlstStyleAll.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleLeft.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleRight.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleMiddle.Font = new Font("", 8, FontStyle.Bold);
                            }
                            xlsSheet[k, colData].Style = xlstStyleAll;

                            if (!bsId.Equals(id))
                            {
                                if (k > 5)
                                {
                                    lastrow = k;
                                    xlsSheet[k, 2].Value = alpha[level1 + 1];
                                    xlsSheet[k, 3].Value = "CÂN ĐỐI THU - CHI (Phần Lãi)";
                                    xlsSheet[k, colData].Value = Func.ParseDouble(inSumVND - outSumVND);
                                }

                                k = 5;
                                colData++;
                                bsId = id;
                                level1 = -1;
                            }
                            int col = Func.ParseInt(itemLevel) + 3;

                            if (itemLevel.Equals("0"))
                            {
                                level1++;
                                xlsSheet[k, col - 1].Value = alpha[level1];

                                level2 = -1;
                            }
                            else if (itemLevel.Equals("1"))
                            {
                                level2++;
                                xlsSheet[k, col - 1].Value = alphaLevel2[level2];

                                level3 = -1;
                            }
                            else if (itemLevel.Equals("2"))
                            {
                                level3++;
                                xlsSheet[k, col - 1].Value = alphaLevel3[level3];

                                level4 = -1;
                            }
                            else if (itemLevel.Equals("3"))
                            {
                                level4++;
                                xlsSheet[k, col - 1].Value = alphaLevel4[level4];
                            }
                            xlsSheet[k, col].Value = PaymentType;
                            xlsSheet[k, colData].Value = rowType["InVND"];
                            xlsSheet[k, 0].Value = PaymentId;

                            if (PaymentId.Equals("9"))
                            {
                                inSumVND = Convert.ToDecimal(rowType["InVND"]);
                            }
                            else if (PaymentId.Equals("10"))
                            {
                                outSumVND = Convert.ToDecimal(rowType["InVND"]);
                            }

                            xlsSheet[k, colData].Style = xlstStyleAll;
                            k++;

                            if (k == lastrow)
                            {
                                XLStyle xlstStyleLast = new XLStyle(xlbBook);
                                xlstStyleLast.WordWrap = false;
                                xlstStyleLast.Font = new Font("", 8, FontStyle.Regular);
                                xlstStyleLast.SetBorderColor(Color.Black);
                                xlstStyleLast.BorderBottom = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderTop = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderLeft = XLLineStyleEnum.Thin;
                                xlstStyleLast.BorderRight = XLLineStyleEnum.Thin;
                                xlstStyleLast.Font = new Font("", 8, FontStyle.Bold);
                                xlstStyleLast.BackColor = Color.Orange;
                                xlstStyleLast.Format = "#,##0.00_);(#,##0.00)";

                                xlsSheet[k, colData].Value = inSumVND - outSumVND;
                                xlsSheet[k, colData].Style = xlstStyleLast;
                            }
                        }
                        xlbBook.Save(fileNameDes);
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
                    }
                }
            }
        }
Example #22
0
        protected void btnImport_Click(object sender, EventArgs e)
        {
            if (!(drpYear.SelectedValue + drpMonth.SelectedValue).Equals(DateTime.Now.AddMonths(-1).ToString("yyyyMM")))
            {
                //mvMessage.AddError("Chỉ lưu Phí khác cho " + DateTime.Now.AddMonths(-1).ToString("MM/yyyy"));
                //return;
            }

            //CsvReader csvRead = null;

            try
            {
                DbHelper.ExecuteNonQuery("Update [BD_WorkingWorkedInfo] Set DelFlag = 1 Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "' and JobTypeId = '" + hidJobType.Value + "'");
                if (File.Exists(Server.MapPath("./") + File1.PostedFile.FileName))
                {
                    File.Delete(Server.MapPath("./") + File1.PostedFile.FileName);
                }
                C1XLBook xlbBook = new C1XLBook();

                string buildingId = Func.ParseString(Session["__BUILDINGID__"]);
                string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Import\"+buildingId+"LichLamViec" + strDT + "import.xls");
                File1.PostedFile.SaveAs(fileName);

                if (!Directory.Exists(@"~\Report\Building\" + buildingId))
                {
                    Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                }

                //string strFilePath = @"~\Report\Building\" + buildingId + @"\" + buildingId + "LichLamViec" + strDT + ".xls";
                //string strFilePathExport = @"../../Report/Building/" + buildingId + @"/" + buildingId + "LichLamViec" + strDT + ".xls";
                xlbBook.Load(fileName);

                string sheet = "LichLamViec";

                XLSheet xlsSheet = xlbBook.Sheets[sheet];

                DataTable staffSchedule = new DataTable();
                staffSchedule.Columns.Add("BuildingId", Type.GetType("System.String"));
                staffSchedule.Columns.Add("StaffId", Type.GetType("System.String"));
                //staffSchedule.Columns.Add("WorkingPlaceId", Type.GetType("System.String"));
                staffSchedule.Columns.Add("WorkingHourId", Type.GetType("System.String"));
                staffSchedule.Columns.Add("JobTypeId", Type.GetType("System.String"));
                staffSchedule.Columns.Add("WorkingDate", Type.GetType("System.String"));
                staffSchedule.Columns.Add("YearMonth", Type.GetType("System.String"));
                //staffSchedule.Columns.Add("Comment", Type.GetType("System.String"));
                staffSchedule.Columns.Add("Created", Type.GetType("System.String"));
                staffSchedule.Columns.Add("CreatedBy", Type.GetType("System.String"));
                staffSchedule.Columns.Add("Modified", Type.GetType("System.String"));
                staffSchedule.Columns.Add("ModifiedBy", Type.GetType("System.String"));
                staffSchedule.Columns.Add("DelFlag", Type.GetType("System.String"));

                for (int i = 2; i < 200; i++)
                {
                    if (String.IsNullOrEmpty(Func.ParseString(xlsSheet[i, 0].Value)))
                    {
                        break;
                    }
                    string StaffId = Func.ParseString(xlsSheet[i, 0].Value);
                    for (int j = 3; j < 34; j++)
                    {
                        if (String.IsNullOrEmpty(Func.ParseString(xlsSheet[0, j].Value)))
                        {
                            break;
                        }
                        string WorkingDate = drpYear.SelectedValue + drpMonth.SelectedValue + (j - 2).ToString().PadLeft(2, '0');
                        string WorkingHourId = Func.ParseString(xlsSheet[i, j].Value);
                        if (WorkingHourId.ToLower().Equals("off"))
                        {
                            WorkingHourId = "OFF";
                        }
                        DataRow newRow = staffSchedule.NewRow();
                        newRow["BuildingId"] = Func.ParseString(Session["__BUILDINGID__"]);
                        newRow["StaffId"] = StaffId;
                        newRow["WorkingHourId"] = WorkingHourId;
                        newRow["WorkingDate"] = WorkingDate;
                        newRow["JobTypeId"] = hidJobType.Value;
                        newRow["YearMonth"] = drpYear.SelectedValue + drpMonth.SelectedValue;
                        newRow["Created"] = DateTime.Now.ToString("yyyyMMddHHmmss");
                        newRow["CreatedBy"] = Page.User.Identity.Name;
                        newRow["Modified"] = DateTime.Now.ToString("yyyyMMddHHmmss");
                        newRow["ModifiedBy"] = Page.User.Identity.Name;
                        newRow["DelFlag"] = "0";

                        staffSchedule.Rows.Add(newRow);
                    }
                }

                using (SqlBulkCopy copy = new SqlBulkCopy(Gnt.Configuration.ApplicationConfiguration.ConnectionString))
                {
                    copy.DestinationTableName = "dbo.BD_WorkingWorkedInfo";
                    copy.BatchSize = 3000;
                    copy.BulkCopyTimeout = 99999;

                    copy.ColumnMappings.Add(0, "BuildingId");
                    copy.ColumnMappings.Add(1, "StaffId");
                    copy.ColumnMappings.Add(2, "WorkingHourId");
                    copy.ColumnMappings.Add(3, "JobTypeId");
                    copy.ColumnMappings.Add(4, "WorkingDate");
                    copy.ColumnMappings.Add(5, "YearMonth");
                    copy.ColumnMappings.Add(6, "Created");
                    copy.ColumnMappings.Add(7, "CreatedBy");
                    copy.ColumnMappings.Add(8, "Modified");
                    copy.ColumnMappings.Add(9, "ModifiedBy");
                    copy.ColumnMappings.Add(10, "DelFlag");

                    copy.WriteToServer(staffSchedule);
                }
                string sql = "update ";
                sql += " BD_WorkingWorkedInfo ";
                sql += " Set ";
                sql += " WorkingPlaceId = B.WorkingPlaceId , ";
                sql += " JobContent = B.JobContent ";
                sql += " FROM  ";
                sql += " BD_WorkingWorkedInfo A, ";
                sql += " BD_Staff B ";
                sql += " Where A.StaffId = B.id and A.YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "' ";

                DbHelper.ExecuteNonQuery(sql);
                ShowData();
            }
            catch (Exception ex)
            {
                mvMessage.AddError("Lỗi phát sinh: " + ex.Message);
            }
            finally
            {
            }
        }
Example #23
0
        public void FullNewViewMultiBoth(string lsYearmonth)
        {
            string[] strTmpYearMonth = lsYearmonth.Split(',');
            string maxYearMonth = "";
            for (int l = 0; l < strTmpYearMonth.Length; l++)
            {
                string tmp = strTmpYearMonth[l];
                if (maxYearMonth == "")
                    maxYearMonth = tmp;
                if (maxYearMonth.CompareTo(tmp) < 0)
                    maxYearMonth = tmp;
            }

            if (String.IsNullOrEmpty(lsYearmonth))
            {
                mvMessage.AddError("Phải chọn ít nhất 1 tháng");
                return;
            }

            int rBillNo = 0;
            int cBillNo = 1;

            int rBillDate = 0;
            int cBillDate = 10;

            int rBillMonth = 2;
            int cBillMonth = 0;

            int rContact = 5;
            int cContact = 3;

            int rCustomer = 5;
            int cCustomer = 7;

            int rContract = 7;
            int cContract = 1;

            //int rRate = 11;
            //int cRate = 9;

            //int rRateDate = 11;
            //int cRateDate = 12;

            int rRent = 15;

            int rManager = 23;

            int rParking = 31;

            int rExtra = 39;

            int rElec = 47;

            int rWater = 55;

            int rService = 63;

            int rPaid = 70;

            int rDept = 77;

            int rOffice = 88;
            int cOffice = 1;

            int rPhone = 89;
            int cPhone = 1;

            int rBank = 88;
            int cBank = 7;

            int rAccountName = 89;
            int cAccountName = 7;

            int rAccount = 90;
            int cAccount = 7;

            int rSum = 81;
            int cSum = 12;

            int rSumVND = 80;
            int cSumVND = 12;

            int rSumRead = 82;

            ArrayList removeRow = new ArrayList();
            ArrayList hideRow = new ArrayList();

            int check = DbHelper.GetCount("Select count(*) from PaymentBillInfo Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + lblCustomerId.Text + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'");
            if (check == 0)
            {
                mvMessage.AddError("Xin vui lòng tạo hóa đơn trước khi xem");
                return;
            }
            mvMessage.CheckRequired(txtBillDate, "Ngày xuất Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtBillNo, "Số Hóa đơn là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchange, "Tỉ giá USD-VN là danh mục bắt buộc");
            mvMessage.CheckRequired(txtUsdExchangeDate, "Ngày tỉ giá là danh mục bắt buộc");

            xlbBook = new C1XLBook();

            string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\NewBillTongQuat.xlsx");
            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
            }

            XLStyle xlstStyleLeftCH = new XLStyle(xlbBook);
            xlstStyleLeftCH.AlignHorz = XLAlignHorzEnum.Left;
            xlstStyleLeftCH.AlignVert = XLAlignVertEnum.Center;
            xlstStyleLeftCH.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleLeftCH.SetBorderColor(Color.Black);
            xlstStyleLeftCH.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleLeftCH.WordWrap = false;

            XLStyle xlstStyleC = new XLStyle(xlbBook);
            xlstStyleC.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleC.AlignVert = XLAlignVertEnum.Center;
            xlstStyleC.WordWrap = true;
            xlstStyleC.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyleC.SetBorderColor(Color.Black);
            xlstStyleC.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleC.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleC.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleC.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleC.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleC2 = new XLStyle(xlbBook);
            xlstStyleC2.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleC2.AlignVert = XLAlignVertEnum.Center;
            xlstStyleC2.WordWrap = true;
            xlstStyleC2.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyleC2.SetBorderColor(Color.Black);
            xlstStyleC2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleC2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleC2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleC2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleC2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleC1 = new XLStyle(xlbBook);
            xlstStyleC1.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleC1.AlignVert = XLAlignVertEnum.Center;
            xlstStyleC1.WordWrap = true;
            xlstStyleC1.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyleC1.SetBorderColor(Color.Black);
            xlstStyleC1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleC1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleC1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleC1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleC1.Format = "#,##0.0_);(#,##0.0)";

            XLStyle xlstStyleC0 = new XLStyle(xlbBook);
            xlstStyleC0.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleC0.AlignVert = XLAlignVertEnum.Center;
            xlstStyleC0.WordWrap = true;
            xlstStyleC0.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyleC0.SetBorderColor(Color.Black);
            xlstStyleC0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleC0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleC0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleC0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleC0.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyleCH = new XLStyle(xlbBook);
            xlstStyleCH.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleCH.AlignVert = XLAlignVertEnum.Center;
            xlstStyleCH.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleCH.SetBorderColor(Color.Black);
            xlstStyleCH.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleCH.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleCH.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleCH.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleCH.WordWrap = true;

            XLStyle xlstStyleCSum2 = new XLStyle(xlbBook);
            xlstStyleCSum2.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleCSum2.AlignVert = XLAlignVertEnum.Center;
            xlstStyleCSum2.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleCSum2.SetBorderColor(Color.Black);
            xlstStyleCSum2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleCSum2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleCSum2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleCSum2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleCSum2.WordWrap = true;
            xlstStyleCSum2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleCSum1 = new XLStyle(xlbBook);
            xlstStyleCSum1.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleCSum1.AlignVert = XLAlignVertEnum.Center;
            xlstStyleCSum1.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleCSum1.SetBorderColor(Color.Black);
            xlstStyleCSum1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleCSum1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleCSum1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleCSum1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleCSum1.WordWrap = true;
            xlstStyleCSum1.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyleCSum0 = new XLStyle(xlbBook);
            xlstStyleCSum0.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleCSum0.AlignVert = XLAlignVertEnum.Center;
            xlstStyleCSum0.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleCSum0.SetBorderColor(Color.Black);
            xlstStyleCSum0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleCSum0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleCSum0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleCSum0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleCSum0.WordWrap = true;
            xlstStyleCSum0.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyle = new XLStyle(xlbBook);
            xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyle.AlignVert = XLAlignVertEnum.Center;
            xlstStyle.WordWrap = true;
            xlstStyle.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyle.SetBorderColor(Color.Black);
            xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyle2 = new XLStyle(xlbBook);
            xlstStyle2.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyle2.AlignVert = XLAlignVertEnum.Center;
            xlstStyle2.WordWrap = true;
            xlstStyle2.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyle2.SetBorderColor(Color.Black);
            xlstStyle2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyle1 = new XLStyle(xlbBook);
            xlstStyle1.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyle1.AlignVert = XLAlignVertEnum.Center;
            xlstStyle1.WordWrap = true;
            xlstStyle1.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyle1.SetBorderColor(Color.Black);
            xlstStyle1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle1.Format = "#,##0.0_);(#,##0.0)";

            XLStyle xlstStyle0 = new XLStyle(xlbBook);
            xlstStyle0.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyle0.AlignVert = XLAlignVertEnum.Center;
            xlstStyle0.WordWrap = true;
            xlstStyle0.Font = new Font("Times New Roman", 10, FontStyle.Regular);
            xlstStyle0.SetBorderColor(Color.Black);
            xlstStyle0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyle0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyle0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyle0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyle0.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyleH = new XLStyle(xlbBook);
            xlstStyleH.AlignHorz = XLAlignHorzEnum.Center;
            xlstStyleH.AlignVert = XLAlignVertEnum.Center;
            xlstStyleH.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleH.SetBorderColor(Color.Black);
            xlstStyleH.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleH.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleH.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleH.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleH.WordWrap = true;

            XLStyle xlstStyleSum2 = new XLStyle(xlbBook);
            xlstStyleSum2.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleSum2.AlignVert = XLAlignVertEnum.Center;
            xlstStyleSum2.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleSum2.SetBorderColor(Color.Black);
            xlstStyleSum2.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleSum2.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleSum2.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleSum2.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleSum2.WordWrap = true;
            xlstStyleSum2.Format = "#,##0.00_);(#,##0.00)";

            XLStyle xlstStyleSum1 = new XLStyle(xlbBook);
            xlstStyleSum1.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleSum1.AlignVert = XLAlignVertEnum.Center;
            xlstStyleSum1.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleSum1.SetBorderColor(Color.Black);
            xlstStyleSum1.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleSum1.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleSum1.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleSum1.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleSum1.WordWrap = true;
            xlstStyleSum1.Format = "#,##0_);(#,##0)";

            XLStyle xlstStyleSum0 = new XLStyle(xlbBook);
            xlstStyleSum0.AlignHorz = XLAlignHorzEnum.Right;
            xlstStyleSum0.AlignVert = XLAlignVertEnum.Center;
            xlstStyleSum0.Font = new Font("Times New Roman", 10, FontStyle.Bold);
            xlstStyleSum0.SetBorderColor(Color.Black);
            xlstStyleSum0.BorderBottom = XLLineStyleEnum.Thin;
            xlstStyleSum0.BorderTop = XLLineStyleEnum.Thin;
            xlstStyleSum0.BorderLeft = XLLineStyleEnum.Thin;
            xlstStyleSum0.BorderRight = XLLineStyleEnum.Thin;
            xlstStyleSum0.WordWrap = true;
            xlstStyleSum0.Format = "#,##0_);(#,##0)";

            if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\Bill"))
            {
                Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\Bill"));
            }

            string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
            string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\Bill\Bill_" + lblCustomerId.Text + "_" + strDT + ".xlsx";
            string strFilePathExport = @"../../Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + @"/Bill/Bill_" + lblCustomerId.Text + "_" + strDT + ".xlsx";

            string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

            File.Copy(fileName, fileNameDes);

            xlbBook.Load(fileNameDes);
            xlsSheet = xlbBook.Sheets["TongHop"];
            xlsSheetEn = xlbBook.Sheets["TongHop_En"];

            //Bill No
            setValReplace(rBillNo, cBillNo, "{%BILL_NO%}", txtBillNo.Text);
            //Ngay Thang Nam
            DateTime dtime = DateTime.Today;

            setValReplace(rBillDate, cBillDate, "{%NGAY%}", dtime.ToString("dd"));
            setValReplace(rBillDate, cBillDate, "{%THANG%}", dtime.ToString("MM"));
            setValReplace(rBillDate, cBillDate, "{%NAM%}", dtime.ToString("yyyy"));

            //Nam
            setValReplace(rBillMonth, cBillMonth, "{%NAM_THANG%}", drpMonth.SelectedValue + "/" + drpYear.SelectedValue);

            using (SqlDatabase db = new SqlDatabase())
            {
                DataSet ds = new DataSet();
                string sql = string.Empty;

                sql = " SELECT Name, ContactName";
                sql += " FROM Customer";
                sql += " WHERE CustomerId = '" + lblCustomerId.Text + "' ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Name = rowType[0].ToString();
                            string ContactName = rowType[1].ToString();

                            //Customer
                            setValReplace(rCustomer, cCustomer, "{%TEN_CONG_TY%}", Name);
                            //Contact
                            setValReplace(rContact, cContact, "{%NGUOI_DAI_DIEN%}", ContactName);
                        }
                    }
                }
                Hashtable contractIdLst = new Hashtable();
                string contract = "";
                ds = new DataSet();
                sql = " SELECT Bank,Account,AccountName,Office,OfficeAddress,OfficePhone";
                sql += " FROM Mst_Building";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string Bank = rowType["Bank"].ToString();
                            string Account = rowType["Account"].ToString();
                            string AccountName = rowType["AccountName"].ToString();
                            string Office = rowType["Office"].ToString();
                            string OfficeAddress = rowType["OfficeAddress"].ToString();
                            string OfficePhone = rowType["OfficePhone"].ToString();

                            setVal(rOffice, 2, Office);
                            setVal(rPhone, 2, OfficePhone);

                            setVal(rBank, 10, Bank);
                            setVal(rAccountName, 10, AccountName);
                            setVal(rAccount, 10, Account);

                        }
                    }
                }

                //setVal(rRate, cRate,  xlsSheet[rRate, cRate].Value.ToString().Replace("{%TI_GIA%}", Func.FormatNumber_New(txtUsdExchange.Text)));
                //setVal(rRateDate, cRateDate,  xlsSheet[rRateDate, cRateDate].Value.ToString().Replace("{%NGAY_AP_DUNG%}", txtUsdExchangeDate.Text));

                //Thue phong
                ds = new DataSet();
                sql = " Select A.*, B.ContractDate";
                sql += " FROM PaymentRoom A, RentContract B";
                sql += " WHERE A.ContractId = B.ContractId and A.BuildingId = B.BuildingId and A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and A.YearMonth in (" + lsYearmonth + ")";
                sql += " and A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and A.YearMonth in (" + lsYearmonth + ")";

                int sumRow = 0;
                int j = 0;
                decimal[] LastSumPriceVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] LastSumPriceUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                decimal PaidPriceVND = 0;
                decimal PaidPriceUSD = 0;

                int viewNumber = 1;
                string strSum = "";

                int line = 0;
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rRent - 3 + j;

                    removeRow.Add(line + 2);

                    mergeCell(line, line + 1, 1, 3);
                    mergeCell(line, line, 4, 5);
                    mergeCell(line + 1, line + 1, 4, 5);
                    mergeCell(line + 2, line + 2, 4, 5);
                    mergeCell(line, line, 6, 7);
                    mergeCell(line + 1, line + 1, 6, 7);
                    mergeCell(line, line, 8, 9);
                    mergeCell(line + 1, line + 1, 8, 9);
                    mergeCell(line, line, 10, 11);
                    mergeCell(line + 1, line + 1, 10, 11);
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        int k = 0;
                        if (dt.Rows.Count <= 0)
                        {
                            for (int rHideLine = 0; rHideLine < 13; rHideLine++)
                            {

                                //setHideRow(rHideLine + line - 1);
                            }
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow rowType in dt.Rows)
                            {
                                decimal tmp02 = Convert.ToDecimal(rowType["LastRentSumVND"]);

                                string ContractId = Func.ParseString(rowType["ContractId"]);
                                string ContractNo = Func.ParseString(rowType["ContractNo"]);
                                string YearMonth = Func.ParseString(rowType["YearMonth"]);
                                string Area = Func.ParseString(rowType["Area"]);
                                string Name = Func.ParseString(rowType["Name"]);
                                string Regional = Func.ParseString(rowType["Regional"]);
                                string Floor = Func.ParseString(rowType["Floor"]);
                                string BeginContract = Func.ParseString(rowType["ContractDate"]);

                                if (!contractIdLst.ContainsKey(ContractId + "(" + Func.FormatDMY(BeginContract) + ")"))
                                {
                                    contractIdLst.Add(ContractId + "(" + Func.FormatDMY(BeginContract) + ")", ContractNo + "(" + Func.FormatDMY(BeginContract) + ")");
                                    contract += ";" + ContractNo + "(" + Func.FormatDMY(BeginContract) + ")";
                                }
                                if (tmp02 > 0)
                                {

                                    if (count >= 1)
                                    {
                                        xlsSheet.Rows.Insert(rRent + 1 + j);
                                        xlsSheetEn.Rows.Insert(rRent + 1 + j);
                                        j++;
                                    }
                                    count++;
                                    int tmp = rRent + j;
                                    setVal(tmp, 1, YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4));
                                    setVal(tmp, 4, rowType["Area"]);
                                    setVal(tmp, 6, rowType["MonthRentPriceVND"]);
                                    setVal(tmp, 8, rowType["MonthRentSumVND"]);
                                    setVal(tmp, 10, rowType["VatRentPriceVND"]);
                                    setVal(tmp, 12, rowType["LastRentSumVND"]);

                                    mergeCell(tmp, tmp, 1, 3);
                                    mergeCell(tmp, tmp, 4, 5);
                                    mergeCell(tmp, tmp, 6, 7);
                                    mergeCell(tmp, tmp, 8, 9);
                                    mergeCell(tmp, tmp, 10, 11);
                                    mergeCell(tmp, tmp, 12, 13);

                                    mergeCell(tmp, tmp, 1, 3);
                                    mergeCell(tmp, tmp, 4, 5);

                                    for (int col = 1; col <= 13; col++)
                                    {
                                        setStyle(tmp, col, xlstStyle);

                                    }

                                    setStyle(tmp, 4, xlstStyleC1);
                                    setStyle(tmp, 6, xlstStyle0);
                                    setStyle(tmp, 8, xlstStyle0);
                                    setStyle(tmp, 10, xlstStyle0);
                                    setStyle(tmp, 12, xlstStyle0);

                                    LastSumPriceVND[0] += Convert.ToDecimal(rowType["LastRentSumVND"]);
                                }
                                else
                                {
                                    k++;
                                }
                            }
                            mergeCell(rRent + 1 + j, rRent + 1 + j, 1, 11);

                            setVal(rRent + 1 + j, 12, LastSumPriceVND[0]);

                            mergeCell(rRent + 1 + j, rRent + 1 + j, 12, 13);

                            //Format
                            setStyle(rRent + 1 + j, 12, xlstStyleSum1);
                            setStyle(rRent + 1 + j, 13, xlstStyleSum0);

                            sumRow += dt.Rows.Count - 1 - k;

                            //Phi quan ly
                            line = rManager - 3 + j;
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            removeRow.Add(line + 2);

                            mergeCell(line, line + 1, 1, 3);
                            mergeCell(line, line, 4, 5);
                            mergeCell(line + 1, line + 1, 4, 5);
                            mergeCell(line + 2, line + 2, 4, 5);
                            mergeCell(line, line, 6, 7);
                            mergeCell(line + 1, line + 1, 6, 7);
                            mergeCell(line, line, 8, 9);
                            mergeCell(line + 1, line + 1, 8, 9);

                            mergeCell(line, line, 10, 11);
                            mergeCell(line + 1, line + 1, 10, 11);
                            mergeCell(line, line, 12, 13);
                            mergeCell(line + 1, line + 1, 12, 13);

                            ////En
                            k = 0;
                            count = 0;
                            foreach (DataRow row in dt.Rows)
                            {
                                decimal tmp02 = Convert.ToDecimal(row["LastManagerSumVND"]);

                                if (tmp02 > 0)
                                {

                                    if (count >= 1)
                                    {
                                        xlsSheet.Rows.Insert(rManager + 1 + j);
                                        xlsSheetEn.Rows.Insert(rManager + 1 + j);
                                        j++;
                                    }
                                    count++;
                                    int tmp = rManager + j;

                                    string YearMonth = Func.ParseString(row["YearMonth"]);
                                    string Area = Func.ParseString(row["Area"]);
                                    string Name = Func.ParseString(row["Name"]);

                                    setVal(tmp, 1, YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4));
                                    setVal(tmp, 4, row["Area"]);
                                    setVal(tmp, 6, row["MonthManagerPriceVND"]);

                                    setVal(tmp, 8, row["MonthManagerSumVND"]);

                                    setVal(tmp, 10, row["VatManagerPriceVND"]);

                                    setVal(tmp, 12, row["LastManagerSumVND"]);

                                    mergeCell(tmp, tmp, 1, 3);
                                    mergeCell(tmp, tmp, 4, 5);

                                    for (int col = 1; col <= 13; col++)
                                    {
                                        setStyle(tmp, col, xlstStyle);
                                    }
                                    setStyle(tmp, 4, xlstStyleC1);
                                    setStyle(tmp, 6, xlstStyle0);
                                    setStyle(tmp, 8, xlstStyle0);
                                    setStyle(tmp, 10, xlstStyle0);
                                    setStyle(tmp, 12, xlstStyle0);

                                    mergeCell(tmp, tmp, 1, 3);
                                    mergeCell(tmp, tmp, 4, 5);
                                    mergeCell(tmp, tmp, 6, 7);
                                    mergeCell(tmp, tmp, 8, 9);
                                    mergeCell(tmp, tmp, 10, 11);
                                    mergeCell(tmp, tmp, 12, 13);

                                    LastSumPriceVND[1] += Convert.ToDecimal(row["LastManagerSumVND"]);
                                }
                                else { k++; }
                            }
                            mergeCell(rManager + 1 + j, rManager + 1 + j, 1, 11);

                            setVal(rManager + 1 + j, 12, LastSumPriceVND[1]);

                            mergeCell(rManager + 1 + j, rManager + 1 + j, 12, 13);

                            setStyle(rManager + 1 + j, 12, xlstStyleSum0);

                            sumRow += dt.Rows.Count - 1 - k;
                        }
                    }
                    else
                    {
                        setVal(line - 1, 0, viewNumber + ".");
                        strSum += viewNumber + " + ";

                        viewNumber++;
                        for (int rRentLine = 0; rRentLine < 15; rRentLine++)
                        {
                            //setHideRow(rRentLine + rRent - 4 + line);
                        }
                    }
                }

                ds = new DataSet();
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT COUNT(*) AS Num, YearMonth, TariffsParkingName, PriceVND, PriceUSD, SUM(VatVND) AS VatVND,SUM(VatUSD) AS VatUSD, SUM(SumVND) AS SumVND, SUM(SumUSD) AS SumUSD, SUM(LastPriceVND) AS LastPriceVND";
                sql += "        , SUM(LastPriceUSD) AS LastPriceUSD";
                sql += " FROM         dbo.PaymentParking";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";

                sql += " GROUP BY YearMonth, TariffsParkingName, PriceVND, PriceUSD, Vat, daysParking";
                sql += " HAVING (SUM(LastPriceVND) >0 or SUM(LastPriceUSD) >0)";
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rParking - 3 + j;
                    removeRow.Add(line + 2);

                    mergeCell(line, line + 1, 1, 3);
                    mergeCell(line, line, 4, 5);
                    mergeCell(line + 1, line + 1, 4, 5);
                    mergeCell(line + 2, line + 2, 4, 5);
                    mergeCell(line, line, 6, 7);
                    mergeCell(line + 1, line + 1, 6, 7);
                    mergeCell(line, line, 8, 9);
                    mergeCell(line + 1, line + 1, 8, 9);
                    mergeCell(line, line, 10, 11);
                    mergeCell(line + 1, line + 1, 10, 11);
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);
                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        if (dt.Rows.Count > 0)
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rParking + 1 + j);
                                    xlsSheetEn.Rows.Insert(rParking + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rParking + j;

                                string Num = Func.ParseString(row["Num"]);
                                string TariffsParkingName = Func.ParseString(row["TariffsParkingName"]);
                                // Phi gui xe
                                setVal(tmp, 1, TariffsParkingName);
                                setVal(tmp, 4, Num);
                                setVal(tmp, 6, row["PriceVND"]);
                                setVal(tmp, 8, row["SumVND"]);
                                setVal(tmp, 10, row["VatVND"]);
                                setVal(tmp, 12, row["LastPriceVND"]);

                                mergeCell(tmp, tmp, 1, 3);
                                mergeCell(tmp, tmp, 4, 5);

                                for (int col = 1; col <= 13; col++)
                                {
                                    setStyle(tmp, col, xlstStyle);
                                }
                                setStyle(tmp, 4, xlstStyleC1);
                                setStyle(tmp, 5, xlstStyleC1);
                                setStyle(tmp, 6, xlstStyle0);
                                setStyle(tmp, 8, xlstStyle0);
                                setStyle(tmp, 10, xlstStyle0);
                                setStyle(tmp, 12, xlstStyle0);

                                mergeCell(tmp, tmp, 1, 3);
                                mergeCell(tmp, tmp, 4, 5);
                                mergeCell(tmp, tmp, 6, 7);
                                mergeCell(tmp, tmp, 8, 9);
                                mergeCell(tmp, tmp, 10, 11);
                                mergeCell(tmp, tmp, 12, 13);

                                LastSumPriceVND[2] += Convert.ToDecimal(row["LastPriceVND"]);
                            }
                            setVal(rParking + 1 + j, 12, LastSumPriceVND[2]);

                            mergeCell(rParking + 1 + j, rParking + 1 + j, 1, 11);
                            mergeCell(rParking + 1 + j, rParking + 1 + j, 12, 13);

                            setStyle(rParking + 1 + j, 12, xlstStyleSum0);
                            mergeCell(rParking + 1 + j, rParking + 1 + j, 1, 11);

                            sumRow += dt.Rows.Count - 1;
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                            for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                            {
                                //setHideRow(rHideLine + line - 1);
                            }
                        }
                    }
                }

                ds = new DataSet();
                sql = "SELECT id";
                sql += " ,YearMonth,BuildingId,CustomerId,RoomId,ExtraHour,VAT,OtherFee01,OtherFee02";
                sql += " ,PriceUSD,PriceVND,VatUSD,VatVND,SumUSD,SumVND,IsNull(LastPriceUSD,0) LastPriceUSD      ,IsNull(LastPriceVND,0) LastPriceVND ";
                sql += " ,RentArea,dbo.fnDateTime(FromWD) BeginDate,dbo.fnDateTime(EndWD) EndDate,ExtratimeType";
                sql += " FROM PaymentExtraTimeMonth";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rExtra - 3 + j;
                    removeRow.Add(line + 2);

                    //Phi ngoai gio
                    mergeCell(line, line + 1, 1, 2);
                    mergeCell(line, line + 1, 4, 4);
                    mergeCell(line, line, 6, 7);
                    mergeCell(line + 1, line + 1, 6, 7);
                    mergeCell(line, line, 8, 9);
                    mergeCell(line + 1, line + 1, 8, 9);
                    mergeCell(line, line, 10, 11);
                    mergeCell(line + 1, line + 1, 10, 11);
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);
                    /////En
                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        if (dt.Rows.Count > 0)
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rExtra + 1 + j);
                                    xlsSheetEn.Rows.Insert(rExtra + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rExtra + j;

                                string ExtraHour = Func.ParseString(row["ExtraHour"]);
                                string BeginDate = Func.ParseString(row["BeginDate"]);
                                string EndDate = Func.ParseString(row["EndDate"]);

                                string ExtratimeType = Func.ParseString(row["ExtratimeType"]);

                                setVal(tmp, 1, BeginDate + "~" + EndDate);
                                setVal(tmp, 3, row["RentArea"]);
                                setVal(tmp, 5, ExtraHour);

                                setVal(tmp, 4, "Diện tích");
                                if ("0".Equals(ExtratimeType))
                                {
                                    setVal(tmp, 4, "m2*h");
                                }
                                setVal(tmp, 6, row["PriceVND"]);
                                setVal(tmp, 8, row["SumVND"]);
                                setVal(tmp, 10, row["VatVND"]);
                                setVal(tmp, 12, row["LastPriceVND"]);
                                LastSumPriceVND[3] += Convert.ToDecimal(row["LastPriceVND"]);

                                mergeCell(tmp, tmp, 1, 2);

                                for (int col = 1; col <= 13; col++)
                                {
                                    setStyle(tmp, col, xlstStyle);
                                }

                                /////////////////////
                                setStyle(tmp, 4, xlstStyleC1);
                                setStyle(tmp, 5, xlstStyleC1);
                                setStyle(tmp, 6, xlstStyle0);
                                setStyle(tmp, 7, xlstStyle0);
                                setStyle(tmp, 8, xlstStyle0);
                                setStyle(tmp, 9, xlstStyle0);
                                setStyle(tmp, 10, xlstStyle0);
                                setStyle(tmp, 11, xlstStyle0);
                                setStyle(tmp, 12, xlstStyle0);
                                setStyle(tmp, 13, xlstStyle0);

                                mergeCell(tmp, tmp, 1, 3);
                                mergeCell(tmp, tmp, 6, 7);
                                mergeCell(tmp, tmp, 8, 9);
                                mergeCell(tmp, tmp, 10, 11);
                                mergeCell(tmp, tmp, 12, 13);
                            }
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                            for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                            {
                                //setHideRow(rHideLine + line - 1);
                            }
                        }
                        mergeCell(rExtra + 1 + j, rExtra + 1 + j, 1, 11);

                        setVal(rExtra + 1 + j, 12, LastSumPriceVND[3]);
                        mergeCell(rExtra + 1 + j, rExtra + 1 + j, 12, 13);

                        setStyle(rExtra + 1 + j, 12, xlstStyleSum1);
                        setStyle(rExtra + 1 + j, 13, xlstStyleSum0);

                        sumRow += dt.Rows.Count - 1;
                    }
                }

                ds = new DataSet();
                //Dien
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, isnull(B.Mount,0) * isnull(B.PriceVND,0) as Sum, (isnull(B.Mount,0) * isnull(B.PriceVND,0))*isnull(A.Vat, 0)/100 as SumVAT ,B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD ,IsNull(B.LastPriceUSD,0) LastPriceUSD      ,IsNull(B.LastPriceVND,0) LastPriceVND , B.Name, B.WaterPricePercent,B.ElecPricePercent ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfWaterId = 0  and A.YearMonth in (" + lsYearmonth + ")  and B.DetailType = 1";
                sql += " Order by A.DateFrom, B.FromIndex";

                bool rElecVat = true;
                bool rWaterVat = true;

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);

                    line = rElec - 3 + j;
                    removeRow.Add(line + 2);

                    //Phi dien
                    mergeCell(line, line + 1, 1, 1);
                    mergeCell(line, line + 1, 2, 2);
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);
                    /////En

                    for (int col = 1; col < 13; col++)
                    {
                        setStyle(line, col, xlstStyleH);
                        setStyle(line + 1, col, xlstStyleH);
                        setStyle(line + 2, col, xlstStyleH);
                    }

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        if (dt.Rows.Count > 0)
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rElec + 1 + j);
                                    xlsSheetEn.Rows.Insert(rElec + 1 + j);
                                    j++;

                                }
                                count++;
                                int tmp = rElec + j;

                                string DateFrom = Func.ParseString(row["DateFrom"]);
                                string DateTo = Func.ParseString(row["DateTo"]);

                                string FromIndex = Func.ParseString(row["FromIndex"]);
                                string ToIndex = Func.ParseString(row["ToIndex"]);
                                string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                string Mount = Func.ParseString(row["Mount"]);
                                string ElecPricePercent = Func.ParseString(row["ElecPricePercent"]);
                                string vat = Func.ParseString(row["vat"]);

                                if (rElecVat)
                                {
                                    setValReplace(line, 9, "(%VAT)", "(" + vat.Replace(",00", "") + "%VAT)");
                                    rElecVat = false;
                                }
                                setVal(tmp, 1, DateFrom);
                                setVal(tmp, 2, DateTo);
                                setVal(tmp, 3, FromIndex);
                                setVal(tmp, 4, ToIndex);
                                setVal(tmp, 5, row["OtherFee01"]);
                                setVal(tmp, 6, Mount);
                                setVal(tmp, 7, row["PriceVND"]);
                                setVal(tmp, 8, row["Sum"]);

                                setVal(tmp, 9, row["SumVAT"]);
                                setVal(tmp, 10, row["OtherFee02"]);
                                setVal(tmp, 11, row["ElecPricePercent"]);
                                setVal(tmp, 12, row["LastPriceVND"]);

                                mergeCell(tmp, tmp, 12, 13);
                                for (int col = 1; col <= 13; col++)
                                {
                                    setStyle(tmp, col, xlstStyle);
                                }

                                /////////////////
                                setStyle(tmp, 3, xlstStyleC2);
                                setStyle(tmp, 4, xlstStyleC2);
                                setStyle(tmp, 5, xlstStyleC0);
                                setStyle(tmp, 6, xlstStyle2);
                                setStyle(tmp, 7, xlstStyle0);
                                setStyle(tmp, 8, xlstStyle0);
                                setStyle(tmp, 9, xlstStyle0);
                                setStyle(tmp, 10, xlstStyle0);
                                setStyle(tmp, 11, xlstStyle2);
                                setStyle(tmp, 12, xlstStyle0);
                            }
                            DataSet dsSum = new DataSet();
                            //Dien
                            //Xuất ra toàn bộ nội dung theo Trang
                            string sqlSum = " SELECT IsNull(A.LastPriceUSD,0) LastPriceUSD      ,IsNull(A.LastPriceVND,0) LastPriceVND  ";
                            sqlSum += " FROM   PaymentElecWater AS A ";
                            sqlSum += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfElecId > 0  and A.YearMonth in (" + lsYearmonth + ")  and A.DetailType = 1";
                            using (SqlCommand cmSum = db.CreateCommand(sqlSum))
                            {
                                SqlDataAdapter daSum = new SqlDataAdapter(cmSum);
                                daSum.Fill(dsSum);

                                if (daSum != null)
                                {
                                    DataTable dtSum = dsSum.Tables[0];
                                    if (dtSum.Rows.Count > 0)
                                    {
                                        foreach (DataRow row in dtSum.Rows)
                                        {
                                            LastSumPriceUSD[4] += Convert.ToDecimal(row["LastPriceUSD"]);
                                            LastSumPriceVND[4] += Convert.ToDecimal(row["LastPriceVND"]);
                                        }
                                    }
                                }
                            }

                            ///////////////////////////
                            setVal(rElec + 1 + j, 12, Decimal.Round(LastSumPriceVND[4], 0));
                            mergeCell(rElec + 1 + j, rElec + 1 + j, 1, 11);
                            mergeCell(rElec + 1 + j, rElec + 1 + j, 12, 13);
                            ////
                            setStyle(rElec + 1 + j, 12, xlstStyleSum0);
                            mergeCell(rElec + 1 + j, rElec + 1 + j, 1, 11);
                            mergeCell(rElec + 1 + j, rElec + 1 + j, 12, 13);

                            sumRow += dt.Rows.Count - 1;
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                            for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                            {
                                //setHideRow(rHideLine + line - 1);
                            }
                        }
                    }
                }

                ds = new DataSet();
                //Phi Nuoc
                //Xuất ra toàn bộ nội dung theo Trang
                sql = " SELECT dbo.fnDateTime(A.DateFrom) DateFrom, dbo.fnDateTime(A.DateTo) DateTo, A.Vat, B.id, B.UsedElecWaterId, B.FromIndex, B.ToIndex, B.OtherFee01, B.OtherFee02, B.Mount, B.PriceVND, isnull(B.Mount,0) * isnull(B.PriceVND,0) as Sum, (isnull(B.Mount,0) * isnull(B.PriceVND,0))*isnull(A.Vat, 0)/100 as SumVAT , B.PriceUSD, B.SumVND, B.SumUSD, ";
                sql += "        B.VatVND, B.VatUSD,IsNull(B.LastPriceUSD,0) LastPriceUSD,IsNull(B.LastPriceVND,0) LastPriceVND, B.Name, B.WaterPricePercent,B.ElecPricePercent  ";
                sql += " FROM   PaymentElecWater AS A INNER JOIN ";
                sql += "        PaymentElecWaterDetail AS B ON A.UsedElecWaterId = B.UsedElecWaterId";
                sql += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfElecId = 0 and A.YearMonth in (" + lsYearmonth + ")  and B.DetailType = 2";
                sql += " Order by A.DateFrom, B.FromIndex";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rWater - 3 + j;
                    removeRow.Add(line + 2);

                    //Phi nuoc
                    mergeCell(line, line + 1, 1, 1);
                    mergeCell(line, line + 1, 2, 2);
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);

                    for (int col = 1; col < 13; col++)
                    {
                        setStyle(line, col, xlstStyleH);
                        setStyle(line + 1, col, xlstStyleH);
                        setStyle(line + 2, col, xlstStyleH);

                    }

                    for (int col = 1; col < 13; col++)
                    {
                        setStyle(line, col, xlstStyleH);
                        setStyle(line + 1, col, xlstStyleH);
                        setStyle(line + 2, col, xlstStyleH);
                    }

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];
                        if (dt.Rows.Count > 0)
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rWater + 1 + j);
                                    xlsSheetEn.Rows.Insert(rWater + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rWater + j;

                                string DateFrom = Func.ParseString(row["DateFrom"]);
                                string DateTo = Func.ParseString(row["DateTo"]);

                                string FromIndex = Func.ParseString(row["FromIndex"]);
                                string ToIndex = Func.ParseString(row["ToIndex"]);
                                string OtherFee01 = Func.ParseString(row["OtherFee01"]);
                                string OtherFee02 = Func.ParseString(row["OtherFee02"]);
                                string Mount = Func.ParseString(row["Mount"]);
                                string vat = Func.ParseString(row["vat"]);
                                if (rWaterVat)
                                {
                                    setValReplace(line, 9, "(%VAT)", "(" + vat.Replace(",00", "") + "%VAT)");
                                    rWaterVat = false;
                                }
                                setVal(tmp, 1, DateFrom);
                                setVal(tmp, 2, DateTo);
                                setVal(tmp, 3, FromIndex);
                                setVal(tmp, 4, ToIndex);
                                setVal(tmp, 5, Mount);
                                setVal(tmp, 6, row["PriceVND"]);

                                setVal(tmp, 8, row["OtherFee01"]);
                                setVal(tmp, 7, row["Sum"]);

                                setVal(tmp, 9, row["SumVAT"]);
                                setVal(tmp, 10, row["OtherFee02"]);
                                setVal(tmp, 11, row["WaterPricePercent"]);
                                setVal(tmp, 12, row["LastPriceVND"]);
                                for (int col = 1; col <= 13; col++)
                                {
                                    setStyle(tmp, col, xlstStyle);
                                }

                                setStyle(tmp, 3, xlstStyleC2);
                                setStyle(tmp, 4, xlstStyleC2);
                                setStyle(tmp, 5, xlstStyleC2);
                                setStyle(tmp, 6, xlstStyle0);
                                setStyle(tmp, 7, xlstStyle0);
                                setStyle(tmp, 8, xlstStyle0);
                                setStyle(tmp, 9, xlstStyle0);
                                setStyle(tmp, 10, xlstStyle2);
                                setStyle(tmp, 11, xlstStyle2);
                                setStyle(tmp, 12, xlstStyle0);

                                mergeCell(tmp, tmp, 12, 13);
                            }

                            DataSet dsSum = new DataSet();
                            //Nuoc
                            //Xuất ra toàn bộ nội dung theo Trang
                            string sqlSum = " SELECT IsNull(A.LastPriceUSD,0) LastPriceUSD      ,IsNull(A.LastPriceVND,0) LastPriceVND  ";
                            sqlSum += " FROM   PaymentElecWater AS A ";
                            sqlSum += " WHERE A.BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and A.CustomerId = '" + hidId.Value + "' and TarrifsOfWaterId > 0  and A.YearMonth in (" + lsYearmonth + ")  and A.DetailType = 2";
                            using (SqlCommand cmSum = db.CreateCommand(sqlSum))
                            {
                                SqlDataAdapter daSum = new SqlDataAdapter(cmSum);
                                daSum.Fill(dsSum);
                                if (daSum != null)
                                {
                                    DataTable dtSum = dsSum.Tables[0];
                                    if (dtSum.Rows.Count > 0)
                                    {
                                        foreach (DataRow row in dtSum.Rows)
                                        {
                                            LastSumPriceVND[5] += Convert.ToDecimal(row["LastPriceVND"]);
                                        }
                                    }
                                }
                            }
                            setVal(rWater + 1 + j, 12, Decimal.Round(LastSumPriceVND[5], 0));
                            mergeCell(rWater + 1 + j, rWater + 1 + j, 1, 11);
                            mergeCell(rWater + 1 + j, rWater + 1 + j, 12, 13);

                            setStyle(rWater + 1 + j, 12, xlstStyleSum0);
                            sumRow += dt.Rows.Count - 1;
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                            for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                            {
                                //setHideRow(rHideLine + line - 1);
                            }
                        }
                    }
                }

                //Service
                ds = new DataSet();

                sql = string.Empty;
                sql = " SELECT Service,dbo.fnDateTime(ServiceDateFrom) ServiceDateFrom,dbo.fnDateTime(ServiceDateTo) ServiceDateTo,PriceVND,PriceUSD,VatUSD,VatVND,Mount,Unit,SumVND,SumUSD,isnull(LastPriceVND,0) LastPriceVND,isnull(LastPriceUSD,0) LastPriceUSD";
                sql += " FROM   PaymentService";
                sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ")";
                sql += " Order By ServiceDate ";

                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    line = rService - 3 + j;
                    removeRow.Add(line + 2);

                    //Phi khác
                    mergeCell(line, line + 1, 1, 1);
                    mergeCell(line, line + 1, 2, 2);
                    mergeCell(line, line + 1, 3, 3);
                    mergeCell(line, line + 1, 4, 4);

                    for (int col = 1; col < 13; col++)
                    {
                        setStyle(line, col, xlstStyleH);
                        setStyle(line + 1, col, xlstStyleH);
                        setStyle(line + 2, col, xlstStyleH);
                    }
                    mergeCell(line, line, 12, 13);
                    mergeCell(line + 1, line + 1, 12, 13);

                    if (ds != null)
                    {
                        int count = 0;
                        DataTable dt = ds.Tables[0];

                        if (dt.Rows.Count > 0)
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;

                            foreach (DataRow row in dt.Rows)
                            {
                                if (count >= 1)
                                {
                                    xlsSheet.Rows.Insert(rService + 1 + j);
                                    xlsSheetEn.Rows.Insert(rService + 1 + j);
                                    j++;
                                }
                                count++;
                                int tmp = rService + j;

                                string Service = Func.ParseString(row["Service"]);
                                string ServiceDateFrom = Func.ParseString(row["ServiceDateFrom"]);
                                string ServiceDateTo = Func.ParseString(row["ServiceDateTo"]);

                                string Mount = Func.ParseString(row["Mount"]);

                                setVal(tmp, 1, Service);
                                setVal(tmp, 2, Func.ParseString(row["Unit"]));
                                setVal(tmp, 3, ServiceDateFrom);
                                setVal(tmp, 4, ServiceDateTo);
                                setVal(tmp, 5, Mount);

                                setVal(tmp, 6, row["PriceVND"]);
                                setVal(tmp, 8, row["SumVND"]);
                                setVal(tmp, 10, row["VatVND"]);
                                setVal(tmp, 12, row["LastPriceVND"]);

                                mergeCell(tmp, tmp, 6, 7);
                                mergeCell(tmp, tmp, 8, 9);
                                mergeCell(tmp, tmp, 10, 11);
                                mergeCell(tmp, tmp, 12, 13);

                                for (int col = 1; col <= 13; col++)
                                {
                                    setStyle(tmp, col, xlstStyle);
                                }

                                setStyle(tmp, 5, xlstStyleC2);
                                setStyle(tmp, 6, xlstStyle0);
                                setStyle(tmp, 8, xlstStyle0);
                                setStyle(tmp, 10, xlstStyle0);
                                setStyle(tmp, 12, xlstStyle0);

                                LastSumPriceVND[6] += Convert.ToDecimal(row["LastPriceVND"]);
                            }
                            setVal(rService + 1 + j, 12, LastSumPriceVND[6]);

                            setStyle(rService + 1 + j, 12, xlstStyleSum0);
                            mergeCell(rService + 1 + j, rService + 1 + j, 1, 11);
                            mergeCell(rService + 1 + j, rService + 1 + j, 12, 13);

                            sumRow += dt.Rows.Count - 1;
                        }
                        else
                        {
                            setVal(line - 1, 0, viewNumber + ".");
                            strSum += viewNumber + " + ";

                            viewNumber++;
                            for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                            {
                                //setHideRow(rHideLine + line - 1);
                            }
                        }
                    }
                }

                //Paid
                sql = "Select  PaymentType,isnull(MoneyUSD,0) MoneyUSD,isnull(MoneyVND,0) MoneyVND,isnull(PaidUSD,0) PaidUSD,isnull(PaidVND,0) PaidVND,isnull(ExchangeType,0) ExchangeType,isnull(UsdExchange,0) UsdExchange,isnull(YearMonth,0) YearMonth";
                sql += " From    PaymentBillDetail";
                sql += " Where   BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth in (" + lsYearmonth + ") and YearMonth <= " + maxYearMonth + "";
                sql += " and isnull(PaidVND,0) > 0";
                string strYearMonth = "";
                int lineTmp = rPaid - 2 + j;
                removeRow.Add(lineTmp + 1);

                /////En
                mergeCell(lineTmp, lineTmp + 1, 1, 1);
                mergeCell(lineTmp, lineTmp, 2, 3);
                mergeCell(lineTmp, lineTmp, 4, 5);
                mergeCell(lineTmp, lineTmp, 6, 7);
                mergeCell(lineTmp, lineTmp, 8, 9);
                mergeCell(lineTmp, lineTmp, 12, 13);
                /////En
                Hashtable rowNo = new Hashtable();
                decimal[] PaidSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] PaidSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                int iPaidNo = 0;
                DataTable dtPaid = DbHelper.GetDataTable(sql);
                if (dtPaid.Rows.Count > 0)
                {
                    setVal(lineTmp - 1, 0, viewNumber + ".");
                    iPaidNo = viewNumber;
                    viewNumber++;

                    for (int i = 0; i < dtPaid.Rows.Count; i++)
                    {
                        string PaymentType = Func.ParseString(dtPaid.Rows[i]["PaymentType"]);
                        string MoneyVND = Func.ParseString(dtPaid.Rows[i]["MoneyVND"]);
                        string PaidVND = Func.ParseString(dtPaid.Rows[i]["PaidVND"]);
                        string ExchangeType = Func.ParseString(dtPaid.Rows[i]["ExchangeType"]);
                        string UsdExchange = Func.ParseString(dtPaid.Rows[i]["UsdExchange"]);
                        string YearMonth = Func.ParseString(dtPaid.Rows[i]["YearMonth"]);

                        if (!rowNo.Contains(YearMonth))
                        {
                            if (rowNo.Count != 0)
                            {
                                xlsSheet.Rows.Insert(rPaid + j + 1);
                                xlsSheetEn.Rows.Insert(rPaid + j + 1);
                                j++;
                            }
                            rowNo.Add(YearMonth, j);
                        }
                        int m = Func.ParseInt(rowNo[YearMonth]);
                        strYearMonth = YearMonth;
                        decimal tmpVND = Convert.ToDecimal(MoneyVND) - Convert.ToDecimal(PaidVND);
                        PaidPriceVND += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                        setVal(rPaid + m, 1, YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4));
                        switch (PaymentType)
                        {
                            case "1":
                                //Rent
                                setVal(rPaid + m, 2, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[0] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                                break;
                            case "2":
                                //Manager
                                setVal(rPaid + m, 4, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[1] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);

                                break;
                            case "3":
                                //Parking
                                setVal(rPaid + m, 6, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[2] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                break;
                            case "4":
                                //Extra
                                setVal(rPaid + m, 8, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[3] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                break;
                            case "5":
                                setVal(rPaid + m, 10, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[4] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                break;
                            case "6":
                                setVal(rPaid + m, 11, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[5] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                break;
                            case "7":
                                setVal(rPaid + m, 12, dtPaid.Rows[i]["PaidVND"]);
                                PaidSumVND[6] += Convert.ToDecimal(dtPaid.Rows[i]["PaidVND"]);
                                break;
                            default:
                                break;
                        }
                        /////////////////////////////////////////////////
                        for (int col = 1; col <= 13; col++)
                        {
                            setStyle(rPaid + m, col, xlstStyle);
                        }

                        //Rent
                        setStyle(rPaid + m, 2, xlstStyle0);
                        setStyle(rPaid + m, 3, xlstStyle0);

                        //Manager
                        setStyle(rPaid + m, 4, xlstStyle0);
                        setStyle(rPaid + m, 5, xlstStyle0);

                        //Parking
                        setStyle(rPaid + m, 6, xlstStyle0);
                        setStyle(rPaid + m, 7, xlstStyle0);

                        //Extra
                        setStyle(rPaid + m, 8, xlstStyle0);
                        setStyle(rPaid + m, 9, xlstStyle0);

                        setStyle(rPaid + m, 10, xlstStyle0);

                        setStyle(rPaid + m, 11, xlstStyle0);

                        setStyle(rPaid + m, 12, xlstStyle0);
                        setStyle(rPaid + m, 13, xlstStyle0);

                        mergeCell(rPaid + m, rPaid + m, 2, 3);
                        mergeCell(rPaid + m, rPaid + m, 4, 5);
                        mergeCell(rPaid + m, rPaid + m, 6, 7);
                        mergeCell(rPaid + m, rPaid + m, 8, 9);
                        mergeCell(rPaid + m, rPaid + m, 12, 13);
                    }
                }
                else
                {
                    setVal(lineTmp - 1, 0, viewNumber + ".");
                    iPaidNo = viewNumber;
                    viewNumber++;

                    for (int rHideLine = 0; rHideLine < 6; rHideLine++)
                    {
                        //setHideRow(rHideLine + lineTmp - 1);
                    }
                }

                lineTmp = rPaid - 2 + j;

                setVal(lineTmp + 3, 2, PaidSumVND[0]);
                setVal(lineTmp + 3, 4, PaidSumVND[1]);
                setVal(lineTmp + 3, 6, PaidSumVND[2]);
                setVal(lineTmp + 3, 8, PaidSumVND[3]);
                setVal(lineTmp + 3, 10, PaidSumVND[4]);
                setVal(lineTmp + 3, 11, PaidSumVND[5]);
                setVal(lineTmp + 3, 12, PaidSumVND[6]);

                mergeCell(lineTmp + 3, lineTmp + 3, 2, 3);
                mergeCell(lineTmp + 3, lineTmp + 3, 4, 5);
                mergeCell(lineTmp + 3, lineTmp + 3, 6, 7);
                mergeCell(lineTmp + 3, lineTmp + 3, 8, 9);
                mergeCell(lineTmp + 3, lineTmp + 3, 12, 13);

                ///////////////
                setStyle(lineTmp + 3, 2, xlstStyleSum1);
                setStyle(lineTmp + 3, 3, xlstStyleSum0);
                setStyle(lineTmp + 3, 4, xlstStyleSum0);
                setStyle(lineTmp + 3, 5, xlstStyleSum0);
                setStyle(lineTmp + 3, 6, xlstStyleSum0);
                setStyle(lineTmp + 3, 7, xlstStyleSum0);
                setStyle(lineTmp + 3, 8, xlstStyleSum0);
                setStyle(lineTmp + 3, 9, xlstStyleSum0);
                setStyle(lineTmp + 3, 10, xlstStyleSum0);
                setStyle(lineTmp + 3, 11, xlstStyleSum0);
                setStyle(lineTmp + 3, 12, xlstStyleSum0);
                setStyle(lineTmp + 3, 13, xlstStyleSum0);

                ///////////////DEPT
                sql = "  Select *";
                sql += " From   v_DeptBill";
                sql += " Where  BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and CustomerId = '" + hidId.Value + "' and YearMonth not in (" + lsYearmonth + ") and YearMonth < " + maxYearMonth + "";
                sql += " And    (DeptUsd <> 0 or DeptVnd <> 0)";
                strYearMonth = "";
                lineTmp = rDept - 2 + j;
                removeRow.Add(lineTmp + 1);

                //////En
                mergeCell(lineTmp, lineTmp + 1, 1, 1);
                mergeCell(lineTmp, lineTmp, 2, 3);
                mergeCell(lineTmp, lineTmp, 4, 5);
                mergeCell(lineTmp, lineTmp, 6, 7);
                mergeCell(lineTmp, lineTmp, 8, 9);
                mergeCell(lineTmp, lineTmp, 12, 13);
                //////En
                rowNo = new Hashtable();
                decimal DeptPriceVND = 0;
                decimal DeptPriceUSD = 0;

                decimal[] DeptSumVND = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };
                decimal[] DeptSumUSD = new decimal[7] { 0, 0, 0, 0, 0, 0, 0 };

                DataTable dtDept = DbHelper.GetDataTable(sql);
                if (dtDept.Rows.Count > 0)
                {
                    setVal(lineTmp - 1, 0, viewNumber + ".");

                    strSum += viewNumber + " + ";

                    viewNumber++;

                    for (int i = 0; i < dtDept.Rows.Count; i++)
                    {
                        string PaymentType = Func.ParseString(dtDept.Rows[i]["PaymentType"]);
                        string DeptVND = Func.ParseString(dtDept.Rows[i]["DeptVND"]);
                        string YearMonth = Func.ParseString(dtDept.Rows[i]["YearMonth"]);

                        if (!rowNo.Contains(YearMonth))
                        {
                            if (rowNo.Count != 0)
                            {
                                xlsSheet.Rows.Insert(rDept + j + 1);
                                xlsSheetEn.Rows.Insert(rDept + j + 1);
                                j++;
                            }
                            rowNo.Add(YearMonth, j);
                        }
                        int m = Func.ParseInt(rowNo[YearMonth]);
                        strYearMonth = YearMonth;

                        DeptPriceVND += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                        setVal(rDept + m, 1, YearMonth.Substring(4, 2) + "/" + YearMonth.Substring(0, 4));

                        switch (PaymentType)
                        {
                            case "1":
                                //Rent
                                setVal(rDept + m, 3, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[0] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                                break;
                            case "2":
                                //Manager
                                setVal(rDept + m, 5, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[1] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);

                                break;
                            case "3":
                                //Parking
                                setVal(rDept + m, 7, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[2] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                break;
                            case "4":
                                //Extra
                                setVal(rDept + m, 9, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[3] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                break;
                            case "5":
                                setVal(rDept + m, 10, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[4] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                break;
                            case "6":
                                setVal(rDept + m, 11, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[5] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                break;
                            case "7":
                                setVal(rDept + m, 13, dtDept.Rows[i]["DeptVND"]);
                                DeptSumVND[6] += Convert.ToDecimal(dtDept.Rows[i]["DeptVND"]);
                                break;
                            default:
                                break;
                        }
                        for (int col = 1; col <= 13; col++)
                        {
                            setStyle(rDept + m, col, xlstStyle);
                        }
                        setStyle(rDept + m, 2, xlstStyle1);
                        setStyle(rDept + m, 3, xlstStyle0);

                        //Manager
                        setStyle(rDept + m, 4, xlstStyle1);
                        setStyle(rDept + m, 5, xlstStyle0);

                        //Parking
                        setStyle(rDept + m, 6, xlstStyle1);
                        setStyle(rDept + m, 7, xlstStyle0);

                        //Extra
                        setStyle(rDept + m, 8, xlstStyle1);
                        setStyle(rDept + m, 9, xlstStyle0);

                        setStyle(rDept + m, 10, xlstStyle0);

                        setStyle(rDept + m, 11, xlstStyle0);

                        setStyle(rDept + m, 12, xlstStyle1);
                        setStyle(rDept + m, 13, xlstStyle0);

                        mergeCell(rDept + m, rDept + m, 2, 3);
                        mergeCell(rDept + m, rDept + m, 4, 5);
                        mergeCell(rDept + m, rDept + m, 6, 7);
                        mergeCell(rDept + m, rDept + m, 8, 9);
                        mergeCell(rDept + m, rDept + m, 10, 11);
                        mergeCell(rDept + m, rDept + m, 12, 13);
                    }
                }
                else
                {
                    setVal(lineTmp - 1, 0, viewNumber + ".");

                    strSum += viewNumber + " + ";

                    viewNumber++;

                    for (int rHideLine = 0; rHideLine < 5; rHideLine++)
                    {
                        //setHideRow(rHideLine + lineTmp - 1);
                    }
                }
                lineTmp = rDept - 2 + j;

                setVal(lineTmp + 3, 3, DeptSumVND[0]);
                setVal(lineTmp + 3, 5, DeptSumVND[1]);
                setVal(lineTmp + 3, 7, DeptSumVND[2]);
                setVal(lineTmp + 3, 9, DeptSumVND[3]);
                setVal(lineTmp + 3, 10, DeptSumVND[4]);
                setVal(lineTmp + 3, 11, DeptSumVND[5]);
                setVal(lineTmp + 3, 13, DeptSumVND[6]);

                setStyle(lineTmp + 3, 2, xlstStyleSum1);
                setStyle(lineTmp + 3, 3, xlstStyleSum0);
                setStyle(lineTmp + 3, 4, xlstStyleSum0);
                setStyle(lineTmp + 3, 5, xlstStyleSum0);
                setStyle(lineTmp + 3, 6, xlstStyleSum0);
                setStyle(lineTmp + 3, 7, xlstStyleSum0);
                setStyle(lineTmp + 3, 8, xlstStyleSum0);
                setStyle(lineTmp + 3, 9, xlstStyleSum0);
                setStyle(lineTmp + 3, 10, xlstStyleSum0);
                setStyle(lineTmp + 3, 11, xlstStyleSum0);
                setStyle(lineTmp + 3, 12, xlstStyleSum0);
                setStyle(lineTmp + 3, 13, xlstStyleSum0);

                mergeCell(lineTmp + 3, lineTmp + 3, 2, 3);
                mergeCell(lineTmp + 3, lineTmp + 3, 4, 5);
                mergeCell(lineTmp + 3, lineTmp + 3, 6, 7);
                mergeCell(lineTmp + 3, lineTmp + 3, 8, 9);
                mergeCell(lineTmp + 3, lineTmp + 3, 10, 11);
                mergeCell(lineTmp + 3, lineTmp + 3, 12, 13);

                strSum = strSum.Substring(0, strSum.Length - 2) + (iPaidNo > 0 ? " - " + iPaidNo : "") + ":";

                decimal AllSumVND = 0;
                decimal AllSumUSD = 0;
                for (int i = 0; i < 7; i++)
                {
                    AllSumVND += LastSumPriceVND[i];
                    AllSumUSD += LastSumPriceUSD[i];
                }

                AllSumVND -= PaidPriceVND;
                AllSumUSD -= PaidPriceUSD;

                AllSumVND += DeptPriceVND;
                AllSumUSD += DeptPriceUSD;

                //setVal(rSumVND + j, cSumVND - 2, Func.FormatNumber_New(AllSumUSD));
                setVal(rSumVND + j, cSumVND, Func.FormatNumber_New(Math.Truncate(Convert.ToDecimal(AllSumVND))).Replace(",00", ""));

                mergeCell(rSumVND + j, rSumVND + j, 10, 13);

                //format
                //setStyle(rSumVND + j, cSumVND - 2, xlstStyleCH);
                setStyle(rSumVND + j, cSumVND, xlstStyleCH);

                //AllSumVND += Convert.ToDecimal(AllSumUSD * Convert.ToDecimal(txtUsdExchange.Text));

                string strMoney = Func.docso(Convert.ToDecimal(AllSumVND));
                string strMoneyEn = Func.DocSo_En(Convert.ToDecimal(AllSumVND));
                //Hop Dong
                setValReplace(rContract, cContract, "{%HOP_DONG%}", String.IsNullOrEmpty(contract) ? "" : contract.Substring(1));

                //Sum 1 + 2...
                setVal(rSum + j - 1, 7, strSum);
                //Sum số tiền
                setVal(rSum + j - 1, 10, Func.FormatNumber_New(Math.Truncate(Convert.ToDecimal(AllSumVND))).Replace(",00", ""));
                mergeCell(rSum + j - 1, rSum + j - 1, 10, 13);
                setStyle(rSum + j - 1, 10, xlstStyleCSum0);

                //Chữ
                //mergeCell(rSumRead + j, rSumRead + j, 7, 13);
                setVal(rSum + j + 1, 7, strMoney.ToUpper());
                xlsSheetEn[rSum + j + 1, 7].Value = strMoneyEn.ToUpper();

                setStyle(rSum + j + 1, 7, xlstStyleLeftCH);

                removeRow.Sort();
                removeRow.Reverse();
                for (int r = 0; r < removeRow.Count; r++)
                {
                    setHideRow(Func.ParseInt(removeRow[r]));
                }

                xlbBook.Save(fileNameDes);
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
            }
        }
Example #24
0
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM vBuildingRoomInfo";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' ";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    string selectDate = Func.FormatYYYYmmdd(txtDate.Text);
                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\TongHopDienTichTrong.xls");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + strDT + ".xls";
                        string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/TongHopDienTich" + strDT + ".xls";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        //string fileNameDes = HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\TongHopDienTich" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xls");
                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);
                        XLSheet xlsSheet = xlbBook.Sheets["TongHop"];
                        //xlsSheet.Name = drpMonth.SelectedValue + "_" + drpYear.SelectedValue;

                        int i = 4;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.Font = new Font("", 12, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.Font = new Font("", 10, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);

                        xlsSheet[1, 0].Value = xlsSheet[1, 0].Value.ToString().Replace("{%BUILDING%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
                        xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%NGAY%}", txtDate.Text);

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string col01 = rowType[0].ToString();
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();

                            xlsSheet[i, 0].Value = col02;
                            xlsSheet[i, 1].Value = col03;
                            xlsSheet[i, 2].Value = col04;
                            xlsSheet[i, 3].Value = col05;
                            xlsSheet[i, 4].Value = DbHelper.GetScalar("Select sum(Area) from vRentRoom Where BuildingId = '" + col01 + "' and Regional ='" + col02 + "' and Floor = '" + col03 + "' and (BeginContract <= '" + selectDate + "' and (EndContract >= '" + selectDate + "' or EndContract is null))");
                            xlsSheet[i, 5].Value = col05;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle01;
                            xlsSheet[i, 2].Style = xlstStyle01;
                            ++i;
                        }

                        ////ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('/CSV/DownloadZipFile.aspx'," + PopupWidth + "," + PopupHeight + ",'EditFlat', true);", true);

                        ////xlsSheet[i++, 0].Value = "Ghi chú:";
                        //DataSet ds1 = new DataSet();
                        //sql = string.Empty;

                        //sql = " SELECT *";
                        //sql += " FROM BD_WorkingHour";
                        //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1";
                        //sql += " Order By Name";

                        //using (SqlCommand cm1 = db.CreateCommand(sql))
                        //{
                        //    SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                        //    da1.Fill(ds1);
                        //    db.Close();

                        //    if (ds != null)
                        //    {

                        //        xlsSheet[i++ + 1, 0].Value = "Ghi chú:";
                        //        DataTable dt1 = ds1.Tables[0];
                        //        foreach (DataRow rowType in dt1.Rows)
                        //        {
                        //            i++;
                        //            string Ma = rowType["WorkingHourId"].ToString();
                        //            string Name = rowType["Name"].ToString();
                        //            xlsSheet[i, 0].Value = Ma + ":";
                        //            xlsSheet[i, 1].Value = Name;
                        //        }
                        //        xlsSheet[i + 1, 0].Value = "OF:";
                        //        xlsSheet[i + 1, 1].Value = "OF: nghỉ";
                        //    }
                        //}
                        //string dataPath = HttpContext.Current.Server.MapPath(@"\Building\Staff\DataTmp");
                        //string tmpFolder = dataPath;
                        //if (!Directory.Exists(tmpFolder))
                        //{
                        //    Directory.CreateDirectory(tmpFolder);
                        //}
                        //string name = "KhaiBaoLichLamViec_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls";
                        //string fileName = Path.Combine(tmpFolder, name);
            //                        string fileNameDes = HttpContext.Current.Server.MapPath(@"\Report\Template\THSLXT_tpl_1.xlsx");

                        xlbBook.Save(fileNameDes);
                        //Session["ZipFilePath"] = null;
                        //Session["ZipFilePath"] = fileName;

                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM v_BuildingTechStatusInfo";
            sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and StatusDate >= '"+ Func.FormatYYYYmmdd(txtFromDate.Text.Substring(0,10))   +"' and StatusDate <= '"+ Func.FormatYYYYmmdd(txtToDate.Text.Substring(0,10))   +"'";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\SuCoKyThuat.xls");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\SuCoKyThuat"))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\SuCoKyThuat"));
                        }
                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\SuCoKyThuat\SuCoKyThuat" + strDT + ".xls";
                        string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/SuCoKyThuat/SuCoKyThuat" + strDT + ".xls";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);
                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);
                        XLSheet xlsSheet = xlbBook.Sheets["SuCoKyThuat"];

                        int i = 3;
                        XLCellRange mrCell = new XLCellRange(0, 0, 0, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyle.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle01.AlignVert = XLAlignVertEnum.Top;
                        xlstStyle01.WordWrap = true;
                        xlstStyle01.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle01.SetBorderColor(Color.Black);
                        xlstStyle01.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderRight = XLLineStyleEnum.Thin;

                        xlsSheet[0, 0].Value = xlsSheet[0, 0].Value.ToString().Replace("{%BUILDING%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
                        xlsSheet[1, 0].Value = xlsSheet[1, 0].Value.ToString().Replace("{%TU_NGAY%}", txtFromDate.Text);
                        xlsSheet[1, 0].Value = xlsSheet[1, 0].Value.ToString().Replace("{%DEN_NGAY%}", txtToDate.Text);

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string col01 = Func.FormatDMY(rowType[0].ToString());
                            string col02 = rowType[1].ToString();
                            string col03 = rowType[2].ToString();
                            string col04 = rowType[3].ToString();
                            string col05 = rowType[4].ToString();
                            string col06 = rowType[5].ToString();
                            string col07 = rowType[6].ToString();
                            string col08 = rowType[7].ToString();
                            string col09 = rowType[8].ToString();
                            string col10 = rowType[9].ToString();
                            string col11 = rowType[10].ToString();
                            string col12 = rowType[11].ToString();

                            xlsSheet[i, 0].Value = col01;
                            xlsSheet[i, 1].Value = col02;
                            xlsSheet[i, 2].Value = col03;
                            xlsSheet[i, 3].Value = col04;
                            xlsSheet[i, 4].Value = col05;
                            xlsSheet[i, 5].Value = col06;
                            xlsSheet[i, 6].Value = col07;
                            xlsSheet[i, 7].Value = col08;
                            xlsSheet[i, 8].Value = col09;
                            xlsSheet[i, 9].Value = col10;
                            xlsSheet[i, 10].Value = col11;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle;
                            xlsSheet[i, 2].Style = xlstStyle;
                            xlsSheet[i, 3].Style = xlstStyle;
                            xlsSheet[i, 4].Style = xlstStyle;
                            xlsSheet[i, 5].Style = xlstStyle;
                            xlsSheet[i, 6].Style = xlstStyle;
                            xlsSheet[i, 7].Style = xlstStyle;
                            xlsSheet[i, 8].Style = xlstStyle;
                            xlsSheet[i, 9].Style = xlstStyle;
                            xlsSheet[i, 10].Style = xlstStyle;
                            ++i;
                        }
                        xlbBook.Save(fileNameDes);
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }
Example #26
0
        /// <summary>
        /// Saves the content of a C1FlexGrid into an XLSheet.
        /// </summary>
        public static void Save(C1FlexGrid flex, XLSheet sheet)
        {
            // clear style cache if this is a new book
            if (sheet.Book != _lastBook)
            {
                _cellStyles.Clear();
                _excelStyles.Clear();
                _lastBook = sheet.Book;
            }

            // save global parameters
            sheet.DefaultRowHeight = PixelsToTwips(flex.Rows.DefaultSize);
            sheet.DefaultColumnWidth = PixelsToTwips(flex.Columns.DefaultSize);
            sheet.Locked = flex.IsReadOnly;
            sheet.ShowGridLines = flex.GridLinesVisibility != GridLinesVisibility.None;
            sheet.ShowHeaders = flex.HeadersVisibility != HeadersVisibility.None;
            sheet.OutlinesBelow = flex.GroupRowPosition == GroupRowPosition.BelowData;

            // save columns
            sheet.Columns.Clear();
            foreach (Column col in flex.Columns)
            {
                var c = sheet.Columns.Add();
                if (!col.Width.IsAuto)
                {
                    c.Width = PixelsToTwips(col.ActualWidth);
                }
                c.Visible = col.Visible;
                if (col.CellStyle is ExcelCellStyle)
                {
                    c.Style = GetXLStyle(flex, sheet, (ExcelCellStyle)col.CellStyle);
                }
            }

            // save rows
            sheet.Rows.Clear();
            foreach (Row row in flex.Rows)
            {
                var r = sheet.Rows.Add();
                if (row.Height > -1)
                {
                    r.Height = PixelsToTwips(row.Height);
                }
                if (row.CellStyle is ExcelCellStyle)
                {
                    r.Style = GetXLStyle(flex, sheet, (ExcelCellStyle)row.CellStyle);
                }
                if (row is ExcelRow)
                {
                    r.OutlineLevel = ((ExcelRow)row).Level;
                }
                r.Visible = row.Visible;
            }

            // save cells
            for (int r = 0; r < flex.Rows.Count; r++)
            {
                for (int c = 0; c < flex.Columns.Count; c++)
                {
                    // save cell value
                    var cell = sheet[r, c];
                    var obj = flex[r, c];
                    cell.Value = obj is FrameworkElement ? 0 : obj;

                    // save cell formula and style
                    var row = flex.Rows[r] as ExcelRow;
                    if (row != null)
                    {
                        // save cell formula
                        var col = flex.Columns[c];
                        var formula = row.GetDataEditor(col);
                        if (formula.StartsWith("="))
                        {
                            cell.Formula = formula;
                        }

                        // save cell style
                        var cs = row.GetCellStyle(col) as ExcelCellStyle;
                        if (cs != null)
                        {
                            cell.Style = GetXLStyle(flex, sheet, cs);
                        }
                    }
                }
            }

            // save selection
            var sel = flex.Selection;
            if (sel.IsValid)
            {
                var xlSel = new XLCellRange(sheet, sel.Row, sel.Row2, sel.Column, sel.Column2);
                sheet.SelectedCells.Clear();
                sheet.SelectedCells.Add(xlSel);
            }

            // save merged cells
            var xmm = flex.MergeManager as ExcelMergeManager;
            if (xmm != null)
            {
                xmm.SetMergedRanges(sheet);
            }
        }
Example #27
0
        //---------------------------------------------------------------------------------
        #region "** object model"

        /// <summary>
        /// Saves the content of a C1FlexGrid into an XLSheet.
        /// </summary>
        public static void Save(C1FlexGrid flex, XLSheet sheet)
        {
            // clear style cache if this is a new book
            if(!object.ReferenceEquals(sheet.Book, _lastBook))
            {
                _cellStyles.Clear();
                _excelStyles.Clear();
                _lastBook = sheet.Book;
            }

            // save global parameters
            sheet.DefaultRowHeight = PixelsToTwips(flex.Rows.DefaultSize);
            sheet.DefaultColumnWidth = PixelsToTwips(flex.Columns.DefaultSize);
            sheet.ShowGridLines = flex.GridLinesVisibility != GridLinesVisibility.None;
            sheet.ShowHeaders = flex.HeadersVisibility != HeadersVisibility.None;
            sheet.OutlinesBelow = flex.GroupRowPosition == GroupRowPosition.BelowData;

            // save columns
            sheet.Columns.Clear();
            foreach(Column col in flex.Columns)
            {
                dynamic c = sheet.Columns.Add();
                if(!col.Width.IsAuto)
                {
                    c.Width = PixelsToTwips(col.ActualWidth);
                }
                c.Visible = col.Visible;
                if(col.CellStyle is ExcelCellStyle)
                {
                    c.Style = GetXLStyle(flex, sheet, (ExcelCellStyle)col.CellStyle);
                }
            }

            sheet.Rows.Clear();

            //save column headers
            XLStyle headerStyle = default(XLStyle);
            headerStyle = new XLStyle(sheet.Book);
            headerStyle.Font = new XLFont("Microsoft YaHei", 10, true, false);
            headerStyle.BorderLeft = XLLineStyleEnum.Thin;
            headerStyle.BorderTop = XLLineStyleEnum.Thin;
            headerStyle.BorderRight = XLLineStyleEnum.Thin;
            headerStyle.BorderBottom = XLLineStyleEnum.Thin;

            //save column headers
            foreach(Row row in flex.ColumnHeaders.Rows)
            {
                dynamic r = sheet.Rows.Add();
                if(row.Height > -1)
                {
                    r.Height = PixelsToTwips(row.Height);
                }
                if(row.CellStyle is ExcelCellStyle)
                {
                    r.Style = GetXLStyle(flex, sheet, (ExcelCellStyle)row.CellStyle);
                }
                if(row is ExcelRow)
                {
                    r.OutlineLevel = ((ExcelRow)row).Level;
                }
                for(int c = 0; c <= flex.ColumnHeaders.Columns.Count - 1; c++)
                {
                    // save cell value
                    dynamic cell = sheet[row.Index, c];
                    string colHeader = flex.Columns[c].Header;
                    cell.Value = colHeader;

                    // make column headers bold
                    cell.Style = headerStyle;

                }
                r.Visible = row.Visible;
            }

            // save rows
            foreach(Row row in flex.Rows)
            {
                dynamic r = sheet.Rows.Add();
                if(row.Height > -1)
                {
                    r.Height = PixelsToTwips(row.Height);
                }
                if(row.CellStyle is ExcelCellStyle)
                {
                    r.Style = GetXLStyle(flex, sheet, (ExcelCellStyle)row.CellStyle);
                }
                if(row is ExcelRow)
                {
                    r.OutlineLevel = ((ExcelRow)row).Level;
                }
                r.Visible = row.Visible;
            }

            XLStyle dateTimeStyle = default(XLStyle);
            dateTimeStyle = new XLStyle(sheet.Book);
            dateTimeStyle.Font = new XLFont("Microsoft YaHei", 10, false, false);
            dateTimeStyle.Format = "yyyy/mm/dd";
            dateTimeStyle.BorderLeft = XLLineStyleEnum.Thin;
            dateTimeStyle.BorderTop = XLLineStyleEnum.Thin;
            dateTimeStyle.BorderRight = XLLineStyleEnum.Thin;
            dateTimeStyle.BorderBottom = XLLineStyleEnum.Thin;

            XLStyle normalStyle = default(XLStyle);
            normalStyle = new XLStyle(sheet.Book);
            normalStyle.Font = new XLFont("Microsoft YaHei", 10, false, false);
            normalStyle.BorderLeft = XLLineStyleEnum.Thin;
            normalStyle.BorderTop = XLLineStyleEnum.Thin;
            normalStyle.BorderRight = XLLineStyleEnum.Thin;
            normalStyle.BorderBottom = XLLineStyleEnum.Thin;

            // save cells
            for(int r = flex.ColumnHeaders.Rows.Count; r <= flex.Rows.Count; r++)
            {
                for(int c = 0; c <= flex.Columns.Count - 1; c++)
                {
                    // save cell value
                    dynamic cell = sheet[r, c];
                    dynamic obj = flex[r - 1, c];
                    if(obj is DateTime)
                    {
                        cell.Style = dateTimeStyle;
                    }
                    else
                    {
                        cell.Style = normalStyle;
                    }
                    cell.Value = obj is FrameworkElement ? 0 : obj;

                    // save cell formula and style
                    //dynamic row = flex.Rows[r - 1] as ExcelRow;
                    //if(row != null)
                    //{
                    //    // save cell formula
                    //    dynamic col = flex.Columns[c];

                    //    // save cell style
                    //    dynamic cs = row.GetCellStyle(col) as ExcelCellStyle;
                    //    if(cs != null)
                    //    {
                    //        cell.Style = GetXLStyle(flex, sheet, cs);
                    //    }
                    //}
                }
            }

            // save selection
            dynamic sel = flex.Selection;
            if(sel.IsValid)
            {
                dynamic xlSel = new XLCellRange(sheet, sel.Row, sel.Row2, sel.Column, sel.Column2);
                sheet.SelectedCells.Clear();
                sheet.SelectedCells.Add(xlSel);
            }
        }
Example #28
0
        public ActionResult ExportResults(int id)
        {
            C1.C1Excel.C1XLBook book = new C1XLBook();
            book.Author = "Kevin Griffin";

            var sheet = book.Sheets[0];

            using (var context = new LeadGenContext())
            {
                // sheet 0, contact info
                sheet.Name = "Respondents";

                var responseEvents = context.Responses.Include("OriginalEvent").Include("Responses").Include("Responses.OriginalQuestion").Where(p => p.OriginalEvent.EventId == id);

                sheet[0, 0].Value = "First Name";
                sheet[0, 1].Value = "Last Name";
                sheet[0, 2].Value = "Email Address";
                sheet[0, 3].Value = "Zip Code";

                int currentRow = 1;
                foreach (var response in responseEvents)
                {
                    sheet[currentRow, 0].Value = response.FirstName;
                    sheet[currentRow, 1].Value = response.LastName;
                    sheet[currentRow, 2].Value = response.EmailAddress;
                    sheet[currentRow, 3].Value = response.ZipCode;
                    currentRow++;
                }

                sheet = book.Sheets.Add();
                sheet.Name = "Results";

                var results = new List<QuestionResult>();
                foreach (var e in responseEvents)
                {
                    foreach (var q in e.Responses.OrderBy(p => p.OriginalQuestion.QuestionId))
                    {
                        // is q in result list?
                        QuestionResponse q1 = q;
                        var questionResults = results.Where(p => p.QuestionText == q1.OriginalQuestion.QuestionText);
                        if (questionResults.Any())
                        {
                            // is answer in questionResult
                            var first = questionResults.First();
                            var answers = first.QuestionAnswers.Where(p => p.AnswerText == q1.Answer);
                            if (answers.Any())
                            {
                                var firstAnswer = answers.First();
                                firstAnswer.AnswerCount++;
                            }
                            else
                            {
                                first.QuestionAnswers.Add(new Answer() { AnswerText = q.Answer, AnswerCount = 1 });
                            }
                        }
                        else
                        {
                            results.Add(new QuestionResult
                            {
                                QuestionText = q.OriginalQuestion.QuestionText,
                                QuestionAnswers = new List<Answer>() { new Answer() { AnswerCount = 1, AnswerText = q.Answer } }
                            });
                        }
                    }
                }

                sheet[0, 0].Value = "Question Text";
                sheet[0, 1].Value = "Answer Count";
                sheet[0, 2].Value = "Answer Text";

                currentRow = 1;
                foreach (var questionResult in results)
                {
                    sheet[currentRow, 0].Value = questionResult.QuestionText;
                    currentRow++;
                    foreach (var answer in questionResult.QuestionAnswers)
                    {
                        sheet[currentRow, 1].Value = answer.AnswerCount;
                        sheet[currentRow, 2].Value = answer.AnswerText;
                        currentRow++;
                    }
                }

                sheet = book.Sheets.Add();
                sheet.Name = "Results per Attendee";

                sheet[0, 0].Value = "Attendee Name";
                sheet[0, 1].Value = "Question Text";
                sheet[0, 2].Value = "Answer Text";

                currentRow = 1;
                foreach (var response in context.Responses.Where(p => p.OriginalEvent.EventId == id).Include("Responses"))
                {
                    sheet[currentRow, 0].Value = string.Format("{0} {1}", response.FirstName, response.LastName);

                    foreach (var r in response.Responses)
                    {
                        sheet[currentRow, 1].Value = r.OriginalQuestion.QuestionText;
                        sheet[currentRow, 2].Value = r.Answer;
                        currentRow++;
                    }

                }
            }

            var tempFile = System.IO.Path.GetTempFileName();
            book.Save(tempFile);

            return File(tempFile, "application/vnd.ms-excel", "event.xls");
        }
Example #29
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnExport_Click(object sender, EventArgs e)
        {
            string job = "";
            switch (hidJobType.Value)
            {
                case "1":
                    job = "BV";
                    break;
                case "2":
                    job = "VS";
                    break;
                case "3":
                    job = "KT";
                    break;
                case "4":
                    job = "QL";
                    break;

                default:
                    break;
            }
            string buildingId = Func.ParseString(Session["__BUILDINGID__"]);

            Hashtable staffIdRow = new Hashtable();
            string[] dateOfWeekVN = { "T2", "T3", "T4", "T5", "T6", "T7", "CN" };
            string[] dateOfWeekEN = { "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Sartuday", "Sunday" };

            Dictionary<string, string> dictionary = new Dictionary<string, string>();
            dictionary.Add("monday", "T2");
            dictionary.Add("tuesday", "T3");
            dictionary.Add("wednesday", "T4");
            dictionary.Add("thursday", "T5");
            dictionary.Add("friday", "T6");
            dictionary.Add("saturday", "T7");
            dictionary.Add("sunday", "CN");

            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM BD_WorkingWorkedInfo";
            sql += " WHERE BuildingId = '" + buildingId + "' and DelFlag = 0 and jobtypeid = '" + hidJobType.Value + "'";
            sql += " and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";

            Hashtable scheduleLst = new Hashtable();

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            string StaffId = rowType["StaffId"].ToString();
                            string WorkingHourId = rowType["WorkingHourId"].ToString();
                            string WorkingDate = rowType["WorkingDate"].ToString().Substring(6, 2);
                            if (!String.IsNullOrEmpty(WorkingHourId) && scheduleLst.ContainsKey(StaffId + WorkingDate))
                            {
                                scheduleLst.Add(StaffId + WorkingDate, WorkingHourId);
                            }
                        }
                    }
                }
            }

            ds = new DataSet();
            sql = " SELECT *";
            sql += " FROM BD_Staff";
            sql += " WHERE BuildingId = '" + buildingId + "' and DelFlag = 0 and jobtypeid = '" + hidJobType.Value + "' and SUBSTRING(JobBegin,0,7) <= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "' and (JobEnd = '' or JobEnd is Null or SUBSTRING(JobEnd,0,7) >= '" + drpYear.SelectedValue + drpMonth.SelectedValue + "')";
            sql += " Order By Name";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    db.Close();

                    if (ds != null)
                    {
                        mvMessage.SetCompleteMessage("File CSV đã xuất thành công.");

                        C1XLBook xlbBook = new C1XLBook();

                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\LichLamViec.xls");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"])))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + buildingId));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + buildingId + @"\" + buildingId + "_LichLamViec_" + job + "_" + strDT + "export.xls";
                        string strFilePathExport = @"../../Report/Building/" + buildingId + @"/" + buildingId + "_LichLamViec_" + job + "_" + strDT + "export.xls";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);

                        string sheet = "LichLamViec";

                        XLSheet xlsSheet = xlbBook.Sheets[sheet];

                        int i = 0;
                        XLCellRange mrCell = new XLCellRange(0, 0, 1, 2);
                        xlsSheet.MergedCells.Add(mrCell);

                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.Font = new Font("", 12, FontStyle.Bold);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        xlsSheet[i, 1].Value = "Tháng " + drpMonth.SelectedValue + "/" + drpYear.SelectedValue;
                        xlsSheet[i, 1].Style = xlstStyle;

                        xlsSheet[i + 1, 1].Value = "STT";
                        //xlsSheet[i + 1, 1].Value = "Mã Nhân Viên";
                        xlsSheet[i + 1, 2].Value = "Họ và Tên";

                        XLStyle xlstStyle01 = new XLStyle(xlbBook);
                        xlstStyle01.AlignHorz = XLAlignHorzEnum.Left;
                        xlstStyle01.Font = new Font("", 10, FontStyle.Bold);
                        xlstStyle01.SetBorderColor(Color.Black);
                        xlstStyle01.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle01.BorderRight = XLLineStyleEnum.Thin;

                        for (int j = 1; j <= 31; j++)
                        {
                            xlsSheet[i, 2 + j].Value = j;
                            DateTime date = new DateTime(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue), j);
                            xlsSheet[i + 1, 2 + j].Value = dictionary[date.DayOfWeek.ToString().ToLower()];

                            xlsSheet[i, 2 + j].Style = xlstStyle01;
                            xlsSheet[i + 1, 2 + j].Style = xlstStyle01;
                            if (j == DateTime.DaysInMonth(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue)))
                            {
                                break;
                            }
                        }

                        i++;
                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            int No = i;
                            i++;
                            string StaffId = rowType["ID"].ToString();
                            string Name = rowType["Name"].ToString();

                            staffIdRow.Add(StaffId, i);

                            xlsSheet[i, 1].Value = No;
                            xlsSheet[i, 0].Value = StaffId;
                            xlsSheet[i, 2].Value = Name;

                            xlsSheet[i, 0].Style = xlstStyle01;
                            xlsSheet[i, 1].Style = xlstStyle01;
                            xlsSheet[i, 2].Style = xlstStyle01;

                            for (int j = 1; j <= 31; j++)
                            {
                                if (scheduleLst.ContainsKey(StaffId + "" + j.ToString().PadLeft(2, '0')))
                                {
                                    xlsSheet[i, 2 + j].Value = scheduleLst[StaffId + "" + j.ToString().PadLeft(2, '0')];
                                    xlsSheet[i, 2 + j].Style = xlstStyle01;
                                }
                                else
                                {
                                    xlsSheet[i, 2 + j].Style = xlstStyle01;
                                }
                                if (j == DateTime.DaysInMonth(Func.ParseInt(drpYear.SelectedValue), Func.ParseInt(drpMonth.SelectedValue)))
                                {
                                    break;
                                }
                            }
                        }

                        ds = new DataSet();
                        sql = string.Empty;

                        //sql = " SELECT *";
                        //sql += " FROM BD_WorkingWorkedInfo";
                        //sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1 and jobtypeid = '" + hidJobType.Value + "' and YearMonth = '" + drpYear.SelectedValue + drpMonth.SelectedValue + "'";
                        //sql += " Order By StaffId";

                        //using (SqlCommand cm1 = db.CreateCommand(sql))
                        //{
                        //    SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                        //    da1.Fill(ds);
                        //    db.Close();

                        //    if (ds != null)
                        //    {
                        //        xlsSheet[i++ + 1, 2].Value = "Ghi chú:";
                        //        DataTable dt1 = ds.Tables[0];
                        //        foreach (DataRow rowType in dt1.Rows)
                        //        {
                        //            i++;
                        //            string StaffId = rowType["StaffId"].ToString();
                        //            string WorkingHourId = rowType["WorkingHourId"].ToString();
                        //            string WorkingDate = rowType["WorkingDate"].ToString().Substring(6, 2);

                        //            int col = Func.ParseInt(WorkingDate) + 2;
                        //            int row = Func.ParseInt(staffIdRow[StaffId]);
                        //            xlsSheet[row, col].Value = WorkingHourId;
                        //        }
                        //    }
                        //}

                        DataSet ds1 = new DataSet();
                        sql = string.Empty;

                        sql = " SELECT *";
                        sql += " FROM BD_WorkingHour";
                        sql += " WHERE BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "' and DelFlag <> 1 and jobtypeid = '" + hidJobType.Value + "'";
                        sql += " Order By Name";

                        using (SqlCommand cm1 = db.CreateCommand(sql))
                        {
                            SqlDataAdapter da1 = new SqlDataAdapter(cm1);
                            da1.Fill(ds1);
                            db.Close();

                            if (ds != null)
                            {
                                xlsSheet[i++ + 1, 2].Value = "Ghi chú:";
                                DataTable dt1 = ds1.Tables[0];
                                foreach (DataRow rowType in dt1.Rows)
                                {
                                    i++;
                                    string Ma = rowType["WorkingHourId"].ToString();
                                    string Name = rowType["Name"].ToString();
                                    xlsSheet[i, 2].Value = Ma + ":" + Name;
                                }
                                xlsSheet[i + 1, 2].Value = "OFF:nghỉ";
                            }
                        }
                        xlbBook.Save(fileNameDes);
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);
                    }
                }
            }
        }
        protected void btnExport_Click(object sender, EventArgs e)
        {
            DataSet ds = new DataSet();
            string sql = string.Empty;

            sql = " SELECT *";
            sql += " FROM Report_BuildingInfo where id = 42";

            using (SqlDatabase db = new SqlDatabase())
            {
                using (SqlCommand cm = db.CreateCommand(sql))
                {
                    SqlDataAdapter da = new SqlDataAdapter(cm);
                    da.Fill(ds);
                    if (ds != null)
                    {
                        C1XLBook xlbBook = new C1XLBook();
                        XLStyle xlstStyle = new XLStyle(xlbBook);
                        xlstStyle.AlignHorz = XLAlignHorzEnum.Center;
                        xlstStyle.WordWrap = true;
                        xlstStyle.Font = new Font("", 8, FontStyle.Regular);
                        xlstStyle.SetBorderColor(Color.Black);
                        xlstStyle.BorderBottom = XLLineStyleEnum.Thin;
                        xlstStyle.BorderTop = XLLineStyleEnum.Thin;
                        xlstStyle.BorderLeft = XLLineStyleEnum.Thin;
                        xlstStyle.BorderRight = XLLineStyleEnum.Thin;

                        string fileName = HttpContext.Current.Server.MapPath(@"~\Report\Template\NuocTieuThuThang.xlsx");
                        if (!Directory.Exists(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\NuocTieuThuThang"))
                        {
                            Directory.CreateDirectory(HttpContext.Current.Server.MapPath(@"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\NuocTieuThuThang"));
                        }

                        string strDT = DateTime.Now.ToString("yyyyMMddHHmmss");
                        string strFilePath = @"~\Report\Building\" + Func.ParseString(Session["__BUILDINGID__"]) + @"\NuocTieuThuThang\NuocTieuThuThang" + strDT + ".xlsx";
                        string strFilePathExport = "Report/Building/" + Func.ParseString(Session["__BUILDINGID__"]) + "/NuocTieuThuThang/NuocTieuThuThang" + strDT + ".xlsx";

                        string fileNameDes = HttpContext.Current.Server.MapPath(strFilePath);

                        File.Copy(fileName, fileNameDes);

                        xlbBook.Load(fileNameDes);

                        DataTable dt = ds.Tables[0];
                        foreach (DataRow rowType in dt.Rows)
                        {
                            int stt = 0;
                            string id = rowType["id"].ToString();
                            string sheet = "Report";
                            int NumOfCol = Func.ParseInt(rowType["NoOfColumn"].ToString());
                            string SqlSelect = rowType["SqlSelect"].ToString();
                            SqlSelect = SqlSelect.Replace("{%DATE_FROM%}", Func.FormatYYYYmmdd(txtFromDate.Text));
                            SqlSelect = SqlSelect.Replace("{%DATE_TO%}", Func.FormatYYYYmmdd(txtToDate.Text));
                            SqlSelect = SqlSelect.Replace("{%TOA_NHA%}", Func.ParseString(Session["__BUILDINGID__"]));

                            XLSheet xlsSheet = xlbBook.Sheets[sheet];
                            xlsSheet[0, 1].Value = xlsSheet[0, 1].Value.ToString().Replace("{%TOA_NHA%}", DbHelper.GetScalar("Select Name From Mst_Building Where BuildingId = '" + Func.ParseString(Session["__BUILDINGID__"]) + "'"));
                            xlsSheet[0, 1].Value = xlsSheet[0, 1].Value.ToString().Replace("{%THANG_NAM%}", txtFromDate.Text + "~" + txtToDate.Text);

                            int CellY = Func.ParseInt(rowType["CellBeginY"].ToString());
                            int CellX = Func.ParseInt(rowType["CellBeginX"].ToString());

                            using (SqlCommand cmSheet = db.CreateCommand(SqlSelect))
                            {
                                DataSet dsSheet = new DataSet();
                                SqlDataAdapter daSheet = new SqlDataAdapter(cmSheet);
                                daSheet.Fill(dsSheet);
                                if (dsSheet != null)
                                {

                                    DataTable dtSheet = dsSheet.Tables[0];
                                    foreach (DataRow rowSheet in dtSheet.Rows)
                                    {
                                        xlsSheet[CellY + stt, CellX].Style = xlstStyle;
                                        xlsSheet[CellY + stt, CellX].Value = ++stt + "";
                                        for (int k = 0; k < NumOfCol; k++)
                                        {
                                            xlsSheet[CellY + stt - 1, CellX + k + 1].Value = rowSheet[k];
                                            xlsSheet[CellY + stt - 1, CellX + k + 1].Style = xlstStyle;
                                        }
                                    }
                                }
                            }

                        }
                        xlbBook.Save(fileNameDes);
                        ScriptManager.RegisterStartupScript(Page, this.GetType(), "", "PopUp('../" + strFilePathExport + "'," + PopupWidth + "," + PopupHeight + ",'EditReport', true);", true);

                    }
                }
            }
        }