示例#1
0
        private void BtnExcel_Click(object sender, EventArgs e)
        {
            DTOFactory.Action();

            try
            {
                DataTable dt_orderMaster = DS.Tables["ds_master"];
                DataTable dt_orderList   = DS.Tables["ds_list"];

                string path = @"c:\temp\" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".xlsx";

                Excel.Application app   = new Excel.Application();
                Excel.Workbook    work  = app.Workbooks.Add();
                Excel._Worksheet  sheet = (Excel._Worksheet)app.ActiveSheet;
                app.ActiveWindow.DisplayGridlines = false;

                #region width 정의
                ((Excel.Range)sheet.Cells[1, 1]).EntireColumn.ColumnWidth  = 3;
                ((Excel.Range)sheet.Cells[1, 2]).EntireColumn.ColumnWidth  = 8;
                ((Excel.Range)sheet.Cells[1, 3]).EntireColumn.ColumnWidth  = 9;
                ((Excel.Range)sheet.Cells[1, 4]).EntireColumn.ColumnWidth  = 2;
                ((Excel.Range)sheet.Cells[1, 5]).EntireColumn.ColumnWidth  = 4;
                ((Excel.Range)sheet.Cells[1, 6]).EntireColumn.ColumnWidth  = 5.88;
                ((Excel.Range)sheet.Cells[1, 7]).EntireColumn.ColumnWidth  = 5;
                ((Excel.Range)sheet.Cells[1, 8]).EntireColumn.ColumnWidth  = 5;
                ((Excel.Range)sheet.Cells[1, 9]).EntireColumn.ColumnWidth  = 10;
                ((Excel.Range)sheet.Cells[1, 10]).EntireColumn.ColumnWidth = 10;
                ((Excel.Range)sheet.Cells[1, 11]).EntireColumn.ColumnWidth = 10.88;
                #endregion

                #region 발주서 제목
                //height
                ((Excel.Range)sheet.Cells[1, 1]).EntireRow.RowHeight = 15;
                ((Excel.Range)sheet.Cells[2, 1]).EntireRow.RowHeight = 33;
                ((Excel.Range)sheet.Cells[3, 1]).EntireRow.RowHeight = 15;
                ((Excel.Range)sheet.Cells[4, 1]).EntireRow.RowHeight = 33;
                ((Excel.Range)sheet.Cells[5, 1]).EntireRow.RowHeight = 13.5;

                //셀 병합
                sheet.Range["A1", "B1"].Merge();
                sheet.Range["A2", "B2"].Merge();

                sheet.Range["C1", "J2"].Merge();

                sheet.Range["A3", "B3"].Merge();
                sheet.Range["A4", "B4"].Merge();
                sheet.Range["D3", "E3"].Merge();
                sheet.Range["D4", "E4"].Merge();
                sheet.Range["F3", "J3"].Merge();
                sheet.Range["F4", "J4"].Merge();

                //색지정
                sheet.Range["A1", "B1"].Interior.Color = System.Drawing.Color.FromArgb(200, 200, 200);
                sheet.Range["A3", "K3"].Interior.Color = System.Drawing.Color.FromArgb(200, 200, 200);

                //BorderLine
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle         = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle          = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle   = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A1", "B2"].Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;

                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle         = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle          = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle   = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A3", "K4"].Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;

                sheet.Range["A1", "K7"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["F4", "J4"].HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;

                //font
                sheet.Range["A1", "B1"].Font.Bold = true;
                sheet.Range["A3", "K3"].Font.Bold = true;

                sheet.Range["A1", "K4"].Font.Size = 10;
                sheet.Range["C1", "J2"].Font.Size = 24;

                sheet.Range["A4", "K4"].WrapText = true;

                sheet.Range["A2", "B2"].NumberFormat = 0;

                //데이터 입력
                sheet.Cells[1, 1]  = "발주번호";
                sheet.Cells[1, 3]  = "발  주  서";
                sheet.Cells[3, 1]  = "발주일자";
                sheet.Cells[3, 3]  = "지불조건";
                sheet.Cells[3, 4]  = "사업장";
                sheet.Cells[3, 6]  = "납품장소";
                sheet.Cells[3, 11] = "납기일";

                sheet.Cells[2, 1]  = dt_orderMaster.Rows[0]["DOC_ID"].ToString();
                sheet.Cells[4, 1]  = dt_orderMaster.Rows[0]["CRT_DT"].ToString();
                sheet.Cells[4, 3]  = dt_orderMaster.Rows[0]["COST_TYP"].ToString();
                sheet.Cells[4, 4]  = dt_orderMaster.Rows[0]["COMP_NM"].ToString();
                sheet.Cells[4, 6]  = dt_orderMaster.Rows[0]["ADDR"].ToString();
                sheet.Cells[4, 11] = dt_orderMaster.Rows[0]["ORDER_DT"].ToString();

                //Logo
                FileInfo flLogo = new FileInfo(@"C:\Temp\" + dt_orderMaster.Rows[0]["LOGO"].ToString());
                ImageGet logo   = new ImageGet(dt_orderMaster.Rows[0]["LOGO"].ToString());

                using (FileStream stream = new FileStream(flLogo.FullName, FileMode.Create, FileAccess.Write))
                {
                    byte[] buffer = logo.GetImageBlock();
                    stream.Write(buffer, 0, buffer.Length);
                }

                sheet.Shapes.AddPicture(flLogo.FullName, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue
                                        , 388, 2, 90, 45);
                flLogo.Delete();
                #endregion

                #region 공급사 내용
                //height
                ((Excel.Range)sheet.Cells[6, 1]).EntireRow.RowHeight = 15;
                ((Excel.Range)sheet.Cells[7, 1]).EntireRow.RowHeight = 33;
                ((Excel.Range)sheet.Cells[8, 1]).EntireRow.RowHeight = 13.5;

                //셀병합
                sheet.Range["A6", "B6"].Merge();
                sheet.Range["A7", "B7"].Merge();
                sheet.Range["C6", "H6"].Merge();
                sheet.Range["C7", "H7"].Merge();

                //색지정
                sheet.Range["A6", "K6"].Interior.Color = System.Drawing.Color.FromArgb(200, 200, 200);

                //Font
                sheet.Range["A6", "K7"].Font.Size = 10;

                sheet.Range["A6", "K6"].Font.Bold = true;

                sheet.Range["C7", "H7"].WrapText = true;

                //데이터 입력
                sheet.Cells[6, 1]  = "공급사";
                sheet.Cells[6, 3]  = "주소";
                sheet.Cells[6, 9]  = "대표";
                sheet.Cells[6, 10] = "직위";
                sheet.Cells[6, 11] = "연락처";

                sheet.Cells[7, 1]  = dt_orderMaster.Rows[0]["VENDOR_NM"].ToString();
                sheet.Cells[7, 3]  = dt_orderMaster.Rows[0]["VENDOR_ADDR"].ToString();
                sheet.Cells[7, 9]  = dt_orderMaster.Rows[0]["VENDOR_USER_NM"].ToString();
                sheet.Cells[7, 10] = dt_orderMaster.Rows[0]["VENDOR_GRADE_NM"].ToString();
                sheet.Cells[7, 11] = dt_orderMaster.Rows[0]["VENDOR_TEL"].ToString();

                //BorderLine
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle         = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle          = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle   = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A6", "K7"].Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;

                sheet.Range["A6", "K7"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["C7", "H7"].HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
                #endregion

                #region 물품
                //height
                ((Excel.Range)sheet.Cells[9, 1]).EntireRow.RowHeight = 15;

                //병합
                sheet.Range["C9", "D9"].Merge();
                sheet.Range["E9", "F9"].Merge();

                //BorderLine
                sheet.Range["A9", "K9"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A9", "K9"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A9", "K9"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A9", "K9"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A9", "K9"].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                sheet.Range["A9", "K9"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                //색지정
                sheet.Range["A9", "K9"].Interior.Color = System.Drawing.Color.FromArgb(200, 200, 200);

                //Font
                sheet.Range["A9", "K9"].Font.Size = 10;

                sheet.Range["A9", "K9"].Font.Bold = true;

                //입력
                sheet.Cells[9, 1]  = "No.";
                sheet.Cells[9, 2]  = "자재코드";
                sheet.Cells[9, 3]  = "품명";
                sheet.Cells[9, 5]  = "규격";
                sheet.Cells[9, 7]  = "수량";
                sheet.Cells[9, 8]  = "단위";
                sheet.Cells[9, 9]  = "단가";
                sheet.Cells[9, 10] = "금액";
                sheet.Cells[9, 11] = "비고";

                int i = 0;
                for (; i < dt_orderList.Rows.Count; i++)
                {
                    ((Excel.Range)sheet.Cells[10 + i, 1]).EntireRow.RowHeight = 30;

                    //병합
                    sheet.Range[string.Format("C{0}", 10 + i), string.Format("D{0}", 10 + i)].Merge();
                    sheet.Range[string.Format("E{0}", 10 + i), string.Format("F{0}", 10 + i)].Merge();

                    //BorderLine
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                    sheet.Range[string.Format("I{0}", 10 + i), string.Format("J{0}", 10 + i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;

                    sheet.Range[string.Format("I{0}", 10 + i), string.Format("J{0}", 10 + i)].NumberFormat = "\\ #,##0\"원\"";

                    //Font
                    sheet.Range[string.Format("B{0}", 10 + i), string.Format("K{0}", 10 + i)].Font.Size = 8;

                    sheet.Range[string.Format("B{0}", 10 + i), string.Format("K{0}", 10 + i)].WrapText = true;

                    //데이터 입력
                    sheet.Cells[10 + i, 1]  = i + 1.ToString();
                    sheet.Cells[10 + i, 2]  = dt_orderList.Rows[i]["MODEL_ID"].ToString();
                    sheet.Cells[10 + i, 3]  = dt_orderList.Rows[i]["MODEL_NM"].ToString();
                    sheet.Cells[10 + i, 5]  = dt_orderList.Rows[i]["SPEC_VAL"].ToString();
                    sheet.Cells[10 + i, 7]  = dt_orderList.Rows[i]["QTY"].ToString();
                    sheet.Cells[10 + i, 8]  = dt_orderList.Rows[i]["QTY_CD"].ToString();
                    sheet.Cells[10 + i, 9]  = dt_orderList.Rows[i]["UNIT_COST"].ToString();
                    sheet.Cells[10 + i, 10] = dt_orderList.Rows[i]["COST"].ToString();
                }
                //빈칸 그리드
                for (; i < 16; i++)
                {
                    ((Excel.Range)sheet.Cells[10 + i, 1]).EntireRow.RowHeight = 30;

                    //병합
                    sheet.Range[string.Format("C{0}", 10 + i), string.Format("D{0}", 10 + i)].Merge();
                    sheet.Range[string.Format("E{0}", 10 + i), string.Format("F{0}", 10 + i)].Merge();

                    //BorderLine
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", 10 + i), string.Format("K{0}", 10 + i)].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;
                }
                #endregion

                #region 합계

                ((Excel.Range)sheet.Cells[26, 1]).EntireRow.RowHeight = 30;

                sheet.Range["A26", "F26"].Merge();
                sheet.Range["G26", "H26"].Merge();
                sheet.Range["I26", "J26"].Merge();

                sheet.Range["A26", "K26"].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A26", "K26"].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A26", "K26"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A26", "K26"].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A26", "K26"].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                sheet.Range["A26", "K26"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["G26", "J26"].HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;

                sheet.Range["I26", "J26"].NumberFormat = "\\ #,##0\"원\"";

                sheet.Cells[26, 1] = "합 계(부가세 별도)";
                sheet.Cells[26, 7] = "=sum(G10:G25)";
                sheet.Cells[26, 9] = "=sum(J10:J25)";
                #endregion

                Excel.PageSetup ps = sheet.PageSetup;
                ps.LeftMargin   = 53.4;
                ps.RightMargin  = 53.4;
                ps.HeaderMargin = 22.8;
                ps.FooterMargin = 22.8;
                ps.TopMargin    = 57.3;
                ps.BottomMargin = 57.3;

                work.SaveAs(path, Excel.XlFileFormat.xlWorkbookDefault);
                work.Close();
                app.Quit();

                DTOFactory.Complete();
                //2021-02-19 hsh 완료 popup 대신 실행 기능으로 변경
                System.Diagnostics.Process.Start(path);
            }
            catch (Exception ex)
            {
                DTOFactory.Complete();

                ViewMessage.Error(ex.Message);
            }
        }
示例#2
0
        public void ExcelExport(object sender, DataGridViewCellEventArgs e)
        {
            DataGridView view = (DataGridView)sender;

            DataGridViewRow ViewRow = view.Rows[e.RowIndex];

            int row;

            for (row = 0; row < dt_Group.Rows.Count; row++)
            {
                if (ViewRow.Cells["DOC_ID"].Value.ToString() == dt_Group.Rows[row]["DOC_ID"].ToString())
                {
                    break;
                }
            }

            DTOFactory.Action();

            try
            {
                ClearSearchData();
                SetSearchData("DOC_ID", txtDocId.Text);
                SetServiceId("SendEstimateList");

                DTOFactory.Transaction(new ReportDTO());


                string   path = @"c:\temp\" + dt_Group.Rows[row]["SUBJECT"].ToString() + ".xlsx";
                DateTime tm   = DateTime.Parse(dt_Group.Rows[row]["CRT_TM"].ToString());

                Excel.Application app   = new Excel.Application();
                Excel.Workbook    work  = app.Workbooks.Add();
                Excel._Worksheet  sheet = (Excel._Worksheet)app.ActiveSheet;
                app.ActiveWindow.DisplayGridlines = false;

                #region 수정본
                #region Width 정의
                ((Excel.Range)sheet.Cells[1, 1]).EntireColumn.ColumnWidth  = 4.3;
                ((Excel.Range)sheet.Cells[1, 2]).EntireColumn.ColumnWidth  = 4.3;
                ((Excel.Range)sheet.Cells[1, 3]).EntireColumn.ColumnWidth  = 8.38;
                ((Excel.Range)sheet.Cells[1, 4]).EntireColumn.ColumnWidth  = 8.38;
                ((Excel.Range)sheet.Cells[1, 5]).EntireColumn.ColumnWidth  = 8.38;
                ((Excel.Range)sheet.Cells[1, 6]).EntireColumn.ColumnWidth  = 9.75;
                ((Excel.Range)sheet.Cells[1, 7]).EntireColumn.ColumnWidth  = 4.3;
                ((Excel.Range)sheet.Cells[1, 8]).EntireColumn.ColumnWidth  = 4.3;
                ((Excel.Range)sheet.Cells[1, 9]).EntireColumn.ColumnWidth  = 5.5;
                ((Excel.Range)sheet.Cells[1, 10]).EntireColumn.ColumnWidth = 5.5;
                ((Excel.Range)sheet.Cells[1, 11]).EntireColumn.ColumnWidth = 8.38;
                ((Excel.Range)sheet.Cells[1, 12]).EntireColumn.ColumnWidth = 8.38;
                #endregion

                #region 견적서 HEAD

                #region Logo
                FileInfo flLogo = new FileInfo(@"C:\Temp\" + DTOFactory.CompLogo.ToString());
                ImageGet logo   = new ImageGet(DTOFactory.CompLogo.ToString());

                using (FileStream stream = new FileStream(flLogo.FullName, FileMode.Create, FileAccess.Write))
                {
                    byte[] buffer = logo.GetImageBlock();
                    stream.Write(buffer, 0, buffer.Length);
                }

                sheet.Shapes.AddPicture(flLogo.FullName, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoCTrue
                                        , 0, 0, 90, 45);
                flLogo.Delete();
                #endregion endLogo

                //Height
                int i, j = 0;
                for (i = 1; i < 8; i++)
                {
                    ((Excel.Range)sheet.Cells[i, 1]).EntireRow.RowHeight = 16.5;
                }

                ((Excel.Range)sheet.Cells[8, 1]).EntireRow.RowHeight  = 8.25;
                ((Excel.Range)sheet.Cells[9, 1]).EntireRow.RowHeight  = 4;
                ((Excel.Range)sheet.Cells[10, 1]).EntireRow.RowHeight = 21;
                ((Excel.Range)sheet.Cells[11, 1]).EntireRow.RowHeight = 30.8;
                ((Excel.Range)sheet.Cells[12, 1]).EntireRow.RowHeight = 16.5;

                //셀 병합
                sheet.Range["I6", "J6"].Merge();
                sheet.Range["K6", "L6"].Merge();
                sheet.Range["I7", "J7"].Merge();
                sheet.Range["K7", "L7"].Merge();
                sheet.Range["A11", "L11"].Merge();
                sheet.Range["A9", "I9"].Merge();
                sheet.Range["J9", "L9"].Merge();

                sheet.Range["A9", "I9"].Interior.Color = Color.FromArgb(87, 87, 87);
                sheet.Range["J9", "L9"].Interior.Color = Color.FromArgb(233, 79, 54);

                sheet.Range["I6", "L7"].HorizontalAlignment   = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["A11", "L11"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

                //데이터 입력
                sheet.Cells[4, 1]  = "주식회사 엠와이씨";
                sheet.Cells[5, 1]  = "충북 청주시 서원구 충대로 1 S21-1동 214호";
                sheet.Cells[6, 1]  = "Tel 043)904-9300";
                sheet.Cells[6, 4]  = "Fax 043)904-9301";
                sheet.Cells[6, 9]  = "발급자";
                sheet.Cells[6, 11] = dt_Group.Rows[row]["USER_NM"].ToString();
                sheet.Cells[7, 9]  = "발급일";
                sheet.Cells[7, 11] = tm.ToString("yyyy.MM.dd");
                sheet.Cells[7, 1]  = "발행번호 : " + dt_Group.Rows[row]["DOC_ID"].ToString();


                sheet.Cells[11, 1] = "견  적  서";
                sheet.Range["A11", "L11"].Font.Bold = true;;
                sheet.Range["A11", "L11"].Font.Size = 20;
                #endregion

                #region 업체 정보
                sheet.Range["A13", "E13"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;

                for (i = 13; i < 18; i++)
                {
                    ((Excel.Range)sheet.Cells[i, 1]).EntireRow.RowHeight = 21;
                }

                for (i = 13; i < 18; i++)
                {
                    sheet.Range[string.Format("A{0}", i), string.Format("B{0}", i)].Merge();
                    sheet.Range[string.Format("C{0}", i), string.Format("E{0}", i)].Merge();

                    sheet.Range[string.Format("A{0}", i), string.Format("B{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);

                    sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                    sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                }

                sheet.Cells[13, 1] = "견적일자";
                sheet.Cells[13, 3] = tm.ToString("yy.MM.dd");
                sheet.Cells[14, 1] = "제 출 처";
                sheet.Cells[14, 3] = dt_Group.Rows[row]["CST_COMP_NM"].ToString();
                sheet.Cells[15, 1] = "담 당 자";
                sheet.Cells[15, 3] = dt_Group.Rows[row]["CST_USER_NM"].ToString() + "님";
                sheet.Cells[16, 1] = "PROJECT";
                sheet.Range["C16", "E16"].Font.Size = 10;
                sheet.Cells[16, 3] = dt_Group.Rows[row]["PRO_NM"].ToString();
                sheet.Cells[17, 1] = "유효기간";
                sheet.Cells[17, 3] = "발행후 3개월";

                #endregion

                #region 회사 정보
                sheet.Range["G13", "L13"].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;

                for (i = 13; i < 18; i++)
                {
                    sheet.Range[string.Format("G{0}", i), string.Format("H{0}", i)].Merge();
                    sheet.Range[string.Format("I{0}", i), string.Format("L{0}", i)].Merge();

                    sheet.Range[string.Format("G{0}", i), string.Format("H{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);

                    sheet.Range[string.Format("G{0}", i), string.Format("L{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle       = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("G{0}", i), string.Format("L{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle      = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("G{0}", i), string.Format("L{0}", i)].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle     = Excel.XlLineStyle.xlContinuous;
                    sheet.Range[string.Format("G{0}", i), string.Format("L{0}", i)].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle = Excel.XlLineStyle.xlContinuous;

                    sheet.Range[string.Format("G{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                }

                sheet.Range["G13", "H13"].Font.Size = 10;
                sheet.Cells[13, 7] = "사업자번호";
                sheet.Cells[13, 9] = dt_Group.Rows[row]["REG_ID"].ToString();
                sheet.Cells[14, 7] = "상 호 명";
                sheet.Cells[14, 9] = dt_Group.Rows[row]["COMP_NM"].ToString();
                sheet.Cells[15, 7] = "대표자명";
                sheet.Cells[15, 9] = dt_Group.Rows[row]["COMP_USER_NM"].ToString();
                sheet.Cells[16, 7] = "업   태";
                sheet.Cells[16, 9] = dt_Group.Rows[row]["COMP_TYP_1"].ToString();
                sheet.Cells[17, 7] = "업   종";
                sheet.Cells[17, 9] = dt_Group.Rows[row]["COMP_TYP_2"].ToString();
                #endregion

                #region Body
                sheet.Range["A18", "B18"].Merge();
                sheet.Range["C18", "E18"].Merge();
                sheet.Range["G18", "H18"].Merge();
                sheet.Range["I18", "K18"].Merge();

                sheet.Cells[18, 1]  = "발주금액";
                sheet.Cells[18, 6]  = "원정";
                sheet.Cells[18, 7]  = @"(\";
                sheet.Cells[18, 12] = ")";

                sheet.Range["I18", "K18"].NumberFormat = "\\           #,##0";

                sheet.Range["A18", "E18"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["G18", "H18"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["L18", "L18"].HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;

                sheet.Range["L19", "L19"].Font.Size = 8;
                sheet.Cells[19, 12] = "(단위 : KRW)";
                for (i = 21; i < 31; i++)
                {
                    ((Excel.Range)sheet.Cells[i, 1]).EntireRow.RowHeight = 22.5;
                }
                if (!chkVAT.Checked)
                {
                    string cost = (int.Parse(dt_Group.Rows[row]["COST"].ToString()) - int.Parse(dt_Group.Rows[row]["VAT"].ToString())).ToString();

                    sheet.Cells[18, 3] = ClsSpread.GetPriceNumtoHan(cost);
                    sheet.Cells[18, 9] = cost;
                    for (i = 20, j = 0; i < 32; i++, j++)
                    {
                        sheet.Range[string.Format("B{0}", i), string.Format("D{0}", i)].Merge();
                        sheet.Range[string.Format("G{0}", i), string.Format("J{0}", i)].Merge();
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].Merge();

                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].Font.Size      = 8;
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].WrapText       = true;
                        sheet.Range[string.Format("A{0}", i), string.Format("A{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);

                        sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

                        sheet.Cells[i, 1] = j;
                        if (i == 20)
                        {
                            sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);
                            sheet.Cells[i, 1]  = "NO.";
                            sheet.Cells[i, 2]  = "품명";
                            sheet.Cells[i, 5]  = "수량";
                            sheet.Cells[i, 6]  = "단가";
                            sheet.Cells[i, 7]  = "합계";
                            sheet.Cells[i, 11] = "비고";
                        }
                        else if (i == 31)
                        {
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].NumberFormat        = "_-₩* #,##0_-;-₩* #,##0_-;_-₩* \"-\"_-;_-@_-";
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Interior.Color      = Color.FromArgb(242, 242, 242);
                            sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            sheet.Cells[i, 1] = "합계";
                            sheet.Cells[i, 5] = cost;
                        }
                        if (j <= dt_List.Rows.Count - 1)
                        {
                            sheet.Cells[i + 1, 2] = dt_List.Rows[j]["MODEL_DESC"].ToString();
                            sheet.Cells[i + 1, 5] = dt_List.Rows[j]["QTY"].ToString() + dt_List.Rows[j]["QTY_NM"].ToString();
                            sheet.Range[string.Format("F{0}", i + 1), string.Format("J{0}", i + 1)].NumberFormat = "\\ #,##0";
                            sheet.Cells[i + 1, 6] = dt_List.Rows[j]["UNIT_COST"].ToString();
                            sheet.Cells[i + 1, 7] = int.Parse("".Equals(dt_List.Rows[j]["QTY"].ToString()) ? "0" : dt_List.Rows[j]["QTY"].ToString())
                                                    * int.Parse("".Equals(dt_List.Rows[j]["UNIT_COST"].ToString()) ? "0" : dt_List.Rows[j]["UNIT_COST"].ToString());
                            sheet.Cells[i + 1, 11] = dt_List.Rows[j]["ITM_DESC"].ToString();
                        }
                    }
                }
                else //부가세 포함
                {
                    sheet.Cells[18, 3] = ClsSpread.GetPriceNumtoHan(dt_Group.Rows[row]["COST"].ToString());
                    sheet.Cells[18, 9] = dt_Group.Rows[row]["COST"].ToString();
                    for (i = 20, j = 0; i < 33; i++, j++)
                    {
                        sheet.Range[string.Format("B{0}", i), string.Format("D{0}", i)].Merge();
                        sheet.Range[string.Format("G{0}", i), string.Format("H{0}", i)].Merge();
                        sheet.Range[string.Format("I{0}", i), string.Format("J{0}", i)].Merge();
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].Merge();

                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].Font.Size      = 8;
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].WrapText       = true;
                        sheet.Range[string.Format("A{0}", i), string.Format("A{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);

                        sheet.Range[string.Format("A{0}", i), string.Format("E{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                        sheet.Range[string.Format("K{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

                        sheet.Cells[i, 1] = j;
                        if (i == 20)
                        {
                            sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].Interior.Color = Color.FromArgb(242, 242, 242);
                            sheet.Cells[i, 1]  = "NO.";
                            sheet.Cells[i, 2]  = "품명";
                            sheet.Cells[i, 5]  = "수량";
                            sheet.Cells[i, 6]  = "단가";
                            sheet.Cells[i, 7]  = "부가세";
                            sheet.Cells[i, 9]  = "합계";
                            sheet.Cells[i, 11] = "비고";
                        }
                        else if (i == 31)
                        {
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].NumberFormat        = "_-₩* #,##0_-;-₩* #,##0_-;_-₩* \"-\"_-;_-@_-";
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Interior.Color      = Color.FromArgb(242, 242, 242);
                            sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            sheet.Cells[i, 1] = "부가세";
                            sheet.Cells[i, 5] = dt_Group.Rows[row]["VAT"].ToString();
                        }
                        else if (i == 32)
                        {
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].Merge();
                            sheet.Range[string.Format("E{0}", i), string.Format("L{0}", i)].NumberFormat        = "_-₩* #,##0_-;-₩* #,##0_-;_-₩* \"-\"_-;_-@_-";
                            sheet.Range[string.Format("A{0}", i), string.Format("D{0}", i)].Interior.Color      = Color.FromArgb(242, 242, 242);
                            sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                            sheet.Cells[i, 1] = "합계";
                            sheet.Cells[i, 5] = dt_Group.Rows[row]["COST"].ToString();
                        }

                        if (j <= dt_List.Rows.Count - 1)
                        {
                            sheet.Cells[i + 1, 2] = dt_List.Rows[j]["MODEL_DESC"].ToString();
                            sheet.Cells[i + 1, 5] = dt_List.Rows[j]["QTY"].ToString() + dt_List.Rows[j]["QTY_NM"].ToString();
                            sheet.Range[string.Format("F{0}", i + 1), string.Format("J{0}", i + 1)].NumberFormat = "\\ #,##0";
                            sheet.Cells[i + 1, 6] = dt_List.Rows[j]["UNIT_COST"].ToString();
                            sheet.Cells[i + 1, 7] = dt_List.Rows[j]["VAT"].ToString();
                            sheet.Cells[i + 1, 9] = int.Parse("".Equals(dt_List.Rows[j]["QTY"].ToString()) ? "0" : dt_List.Rows[j]["QTY"].ToString())
                                                    * (int.Parse("".Equals(dt_List.Rows[j]["UNIT_COST"].ToString()) ? "0" : dt_List.Rows[j]["UNIT_COST"].ToString())
                                                       + int.Parse("".Equals(dt_List.Rows[j]["VAT"].ToString()) ? "0" : dt_List.Rows[j]["VAT"].ToString()));
                            sheet.Cells[i + 1, 11] = dt_List.Rows[j]["ITM_DESC"].ToString();
                        }
                    }
                }

                sheet.Range["A20", "L20"].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range["A20", "L20"].Font.Size           = 11;

                #endregion

                #region Bottom
                sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].Merge();
                sheet.Range[string.Format("A{0}", i + 1), string.Format("L{0}", i + 3)].Merge();
                sheet.Range[string.Format("A{0}", i + 4), string.Format("B{0}", i + 4)].Merge();
                sheet.Range[string.Format("E{0}", i + 4), string.Format("F{0}", i + 4)].Merge();
                sheet.Range[string.Format("I{0}", i + 4), string.Format("L{0}", i + 4)].Merge();

                sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].Interior.Color              = Color.FromArgb(242, 242, 242);
                sheet.Range[string.Format("A{0}", i), string.Format("L{0}", i)].HorizontalAlignment         = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range[string.Format("A{0}", i + 4), string.Format("B{0}", i + 4)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range[string.Format("D{0}", i + 4), string.Format("D{0}", i + 4)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
                sheet.Range[string.Format("I{0}", i + 4), string.Format("L{0}", i + 4)].HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;

                sheet.Cells[i, 1] = "특이사항";

                for (j = 31; j < i + 4; j++)
                {
                    ((Excel.Range)sheet.Cells[j, 1]).EntireRow.RowHeight = 21.7;
                }

                sheet.Range["A20", string.Format("L{0}", i + 4)].Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle          = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A20", string.Format("L{0}", i + 4)].Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle         = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A20", string.Format("L{0}", i + 4)].Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle        = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A20", string.Format("L{0}", i + 4)].Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle       = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A20", string.Format("L{0}", i + 4)].Borders[Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = Excel.XlLineStyle.xlContinuous;
                sheet.Range["A20", string.Format("L{0}", i + 3)].Borders[Excel.XlBordersIndex.xlInsideVertical].LineStyle   = Excel.XlLineStyle.xlContinuous;

                string strDesc = "";
                int    no      = 1;

                if (!"".Equals(dt_Group.Rows[row]["CASH_NM"].ToString()))
                {
                    strDesc += string.Format("{0}. 대금 지급조건: {1}\r\n", no++, dt_Group.Rows[row]["CASH_NM"]);
                }

                if (!"".Equals(dt_Group.Rows[row]["WARR_NM"].ToString()))
                {
                    strDesc += string.Format("{0}. 유지보수 조건: {1}\r\n", no++, dt_Group.Rows[row]["WARR_NM"]);
                }

                strDesc += string.Format("{0}. Project 담담자: {1}\r\n", no++, dt_Group.Rows[row]["EMAIL"]);

                int pos = strDesc.Length + 1;

                if (chkVAT.Checked)
                {
                    strDesc += string.Format("{0}. 부가세 포함", no++);
                }
                else
                {
                    strDesc += string.Format("{0}. 부가세 별도", no++);
                }

                sheet.Cells[i + 1, 1] = strDesc;
                sheet.Cells[i + 4, 1] = "담당자";
                sheet.Cells[i + 4, 3] = dt_Group.Rows[row]["USER_NM"].ToString();
                sheet.Cells[i + 4, 4] = "연락처";
                sheet.Cells[i + 4, 5] = dt_Group.Rows[row]["TEL_1"].ToString();
                sheet.Cells[i + 4, 7] = "결제 방법";
                sheet.Cells[i + 4, 9] = ("CASH".Equals(dt_Group.Rows[row]["CASH_TYP_CD_2"].ToString()) ? "■" : "□") + "현금  "
                                        + ("CARD".Equals(dt_Group.Rows[row]["CASH_TYP_CD_2"].ToString()) ? "■" : "□") + "카드  "
                                        + ("ETC".Equals(dt_Group.Rows[row]["CASH_TYP_CD_2"].ToString()) ? "■" : "□") + "기타 ";

                ((Excel.Range)sheet.Cells[i + 5, 1]).EntireRow.RowHeight = 15.5;
                ((Excel.Range)sheet.Cells[i + 6, 1]).EntireRow.RowHeight = 13.5;

                sheet.Range[string.Format("A{0}", i + 6), string.Format("L{0}", i + 6)].Merge();
                sheet.Range[string.Format("A{0}", i + 6), string.Format("L{0}", i + 6)].Font.Size      = 9;
                sheet.Range[string.Format("A{0}", i + 6), string.Format("L{0}", i + 6)].Font.Color     = Color.White;
                sheet.Range[string.Format("A{0}", i + 6), string.Format("L{0}", i + 6)].Interior.Color = Color.FromArgb(87, 87, 87);
                sheet.Range[string.Format("A{0}", i + 6), string.Format("L{0}", i + 6)].Font.Bold      = true;
                sheet.Cells[i + 6, 1] = "     SOLUTIONS OF TECHNOLOGY";
                #endregion
                #endregion

                Excel.PageSetup ps = sheet.PageSetup;
                ps.LeftMargin  = 28;
                ps.RightMargin = 28;

                if (chkVAT.Checked)
                {
                    ps.TopMargin    = 41;
                    ps.BottomMargin = 41;
                }
                else
                {
                    ps.TopMargin    = 48;
                    ps.BottomMargin = 48;
                }
                ps.HeaderMargin = 0;
                ps.FooterMargin = 0;
                FileInfo file = new FileInfo(path);
                if (file.Exists)
                {
                    file.Delete();
                }

                work.SaveAs(path, Excel.XlFileFormat.xlWorkbookDefault);
                work.Close();
                app.Quit();

                System.Diagnostics.Process.Start(path);
            }
            catch (Exception ex)
            {
                ViewMessage.Error(ex.Message);
            }

            DTOFactory.Complete();

            ViewGroup(gd_Group, new DataGridViewCellEventArgs(0, e.RowIndex));
        }