Example #1
0
        public static void GetOperImgPosiAndSize(int i, out OperImgPosiSize sOperImgPosiSize)
        {
            string ScreenWidth  = SystemInformation.PrimaryMonitorSize.Width.ToString();
            string ScreenHeight = SystemInformation.PrimaryMonitorSize.Height.ToString();

            sOperImgPosiSize = new OperImgPosiSize();
            int currentNo = (i % 8);

            if (currentNo == 0)
            {
                sOperImgPosiSize.OperPosiLeft = 5;
                sOperImgPosiSize.OperPosiTop  = 118;
            }
            else if (currentNo == 1)
            {
                sOperImgPosiSize.OperPosiLeft = 5 + (float)(180 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 118;
            }
            else if (currentNo == 2)
            {
                sOperImgPosiSize.OperPosiLeft = 5 + (float)(360 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 118;
            }
            else if (currentNo == 3)
            {
                sOperImgPosiSize.OperPosiLeft = (float)(540 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 118;
            }
            else if (currentNo == 4)
            {
                sOperImgPosiSize.OperPosiLeft = 5;
                sOperImgPosiSize.OperPosiTop  = 265;
            }
            else if (currentNo == 5)
            {
                sOperImgPosiSize.OperPosiLeft = 5 + (float)(180 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 265;
            }
            else if (currentNo == 6)
            {
                sOperImgPosiSize.OperPosiLeft = 5 + (float)(360 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 265;
            }
            else if (currentNo == 7)
            {
                sOperImgPosiSize.OperPosiLeft = (float)(540 * 1366 / Convert.ToDouble(ScreenWidth));
                sOperImgPosiSize.OperPosiTop  = 265;
            }
            sOperImgPosiSize.OperImgWidth  = 160;
            sOperImgPosiSize.OperImgHeight = 115;


            float width  = sOperImgPosiSize.OperImgWidth;
            float height = sOperImgPosiSize.OperImgHeight;

            Excel_CommonFun.GetScreenResolution(ref width, ref height);
            sOperImgPosiSize.OperImgWidth  = width;
            sOperImgPosiSize.OperImgHeight = height;
        }
Example #2
0
        public static void GetFixImgPosiAndSize(double left, double top, double width, double height, out FixImgPosiSize sFixImgPosiSize)
        {
            string ScreenWidth  = SystemInformation.PrimaryMonitorSize.Width.ToString();
            string ScreenHeight = SystemInformation.PrimaryMonitorSize.Height.ToString();

            sFixImgPosiSize = new FixImgPosiSize();
            //sFixImgPosiSize.FixPosiLeft = 485;
            sFixImgPosiSize.FixPosiLeft = (float)(left * 1366 / Convert.ToDouble(ScreenWidth));
            sFixImgPosiSize.FixPosiTop  = (float)top;
            //sFixImgPosiSize.FixPosiTop = (float)(423 * 768 / Convert.ToDouble(ScreenHeight));
            //sFixImgPosiSize.FixImgWidth = 225;
            //sFixImgPosiSize.FixImgHeight = 198;

            float widthfloat  = (float)width;
            float heightfloat = (float)height;

            Excel_CommonFun.GetScreenResolution(ref widthfloat, ref heightfloat);
            sFixImgPosiSize.FixImgWidth  = widthfloat;
            sFixImgPosiSize.FixImgHeight = heightfloat;
        }
Example #3
0
        public static bool CreateToolListExcel_XinWu(string cusName, string partNo, string cusVer, string opVer, string op1, DB_TEMain sDB_TEMain, IList <Com_ToolList> cCom_ToolList)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_TEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , sDB_TEMain.comTEMain.ncGroupName + "_" + "ToolList" + ".xls");



                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = (Workbook)excelApp.Workbooks.Open(sDB_TEMain.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];

                //建立Sheet頁數符合所有的Operation
                //之後應該要改成同一頁然後一直新增ROW
                status = Excel_CommonFun.AddNewSheet(cCom_ToolList.Count, 40, excelApp, workSheet);
                if (!status)
                {
                    MessageBox.Show("建立Sheet頁失敗,請聯繫開發工程師");
                    return(false);
                }

                //修改每一個Sheet名字和頁數
                status = Excel_CommonFun.ModifySheet(partNo, "ToolList", workBook, workSheet, workRange, sDB_TEMain.factory);
                if (!status)
                {
                    MessageBox.Show("修改Sheet名字和頁數失敗,請聯繫開發工程師");
                    return(false);
                }

                //開始填表
                int
                    CurrentRow = 6,
                    ToolNumberColumn = 1,
                    ToolERPColumn = 2,
                    ToolCutterQtyColumn = 3,
                    ToolCutterLifeColumn = 4,
                    ToolFluteQtyColumn = 5,
                    ToolTitleColumn = 6,
                    ToolSpecColumn = 8,
                    ToolNoteColumn = 10;
                RowColumn sRowColumn; int StartRow = 0, EndRow = 0;
                for (int i = 0; i < cCom_ToolList.Count; i++)
                {
                    //GetExcelRowColumn(i, out sRowColumn);
                    //取得當前Operation該放置的Sheet
                    int currentSheet_Value = (i / 40);
                    if (currentSheet_Value == 0)
                    {
                        workSheet = (Worksheet)workBook.Sheets[1];
                    }
                    else
                    {
                        workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                    }
                    CurrentRow = CurrentRow + 1;
                    StartRow   = CurrentRow;
                    workRange  = (Range)workSheet.Cells;
                    workRange[CurrentRow, ToolNumberColumn]     = cCom_ToolList[i].toolNumber;
                    workRange[CurrentRow, ToolERPColumn]        = cCom_ToolList[i].erpNumber;
                    workRange[CurrentRow, ToolCutterQtyColumn]  = cCom_ToolList[i].cutterQty;
                    workRange[CurrentRow, ToolCutterLifeColumn] = cCom_ToolList[i].cutterLife;
                    workRange[CurrentRow, ToolFluteQtyColumn]   = cCom_ToolList[i].fluteQty;
                    workRange[CurrentRow, ToolTitleColumn]      = cCom_ToolList[i].title;
                    workRange[CurrentRow, ToolSpecColumn]       = cCom_ToolList[i].specification;
                    workRange[CurrentRow, ToolNoteColumn]       = cCom_ToolList[i].note;

                    if (cCom_ToolList[i].accessory != "")
                    {
                        string[] SplitAccessory = cCom_ToolList[i].accessory.Split('?');
                        foreach (string j in SplitAccessory)
                        {
                            CurrentRow = CurrentRow + 1;
                            string[] Spliti = j.Split('!');
                            workRange[CurrentRow, ToolERPColumn]   = Spliti[0];
                            workRange[CurrentRow, ToolTitleColumn] = Spliti[1];
                            workRange[CurrentRow, ToolSpecColumn]  = Spliti[2];
                        }
                    }
                    EndRow = CurrentRow;
                    //合併儲存格
                    workSheet.get_Range("A" + StartRow, "A" + EndRow).Merge(false);
                }
                //加入 料號.品名.設計.審核.批准
                workRange[52, 10] = partNo;
                workRange[51, 10] = "OIS-" + sDB_TEMain.ncGroupName.Split('P')[1].Split('_')[0];
                workRange[52, 5]  = sDB_TEMain.comTEMain.designed;
                workRange[52, 6]  = sDB_TEMain.comTEMain.reviewed;
                workRange[52, 7]  = sDB_TEMain.comTEMain.approved;

                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #4
0
        public static bool CreateFQCExcel_XiAn(string cusName, string partNo, string cusVer, string opVer, string op1, DB_MEMain sDB_MEMain, IList <Com_Dimension> cCom_Dimension)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_MEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , op1 + "_" + sDB_MEMain.factory + ".xls");
                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = excelApp.Workbooks.Open(sDB_MEMain.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];
                workRange        = (Range)workSheet.Cells;
                workRange[5, 1]  = cusName;
                workRange[5, 5]  = partNo;
                workRange[5, 8]  = sDB_MEMain.comMEMain.partDescription;
                workRange[5, 10] = cusVer;


                //設定欄位的Row,Column
                int currentRow = 7, ballonColumn = 1, locationColumn = 2, dimenColumn = 3, instrumentColumn = 4;

                //Insert所需欄位
                for (int i = 1; i < cCom_Dimension.Count; i++)
                {
                    workRange = (Range)workSheet.Range["A8"].EntireRow;
                    workRange.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                }


                for (int i = 0; i < cCom_Dimension.Count; i++)
                {
                    workRange = (Range)workSheet.Cells;
                    //取得Row,Column
                    currentRow = currentRow + 1;

                    status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workSheet, currentRow, dimenColumn);
                    if (!status)
                    {
                        MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                        return(false);
                    }

                    #region 檢具、泡泡、泡泡位置
                    workRange[currentRow, instrumentColumn] = cCom_Dimension[i].instrument;
                    workRange[currentRow, ballonColumn]     = cCom_Dimension[i].ballon;
                    workRange[currentRow, locationColumn]   = cCom_Dimension[i].location;
                    #endregion
                }

                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #5
0
        public static bool CreateFQCExcel_XinWu(string cusName, string partNo, string cusVer, string opVer, string op1, DB_MEMain sDB_MEMain, IList <Com_Dimension> cCom_Dimension)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_MEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , op1 + "_" + sDB_MEMain.factory + ".xls");



                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = (Workbook)excelApp.Workbooks.Open(sDB_MEMain.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];
                workRange        = (Range)workSheet.Cells;
                workRange[5, 1]  = cusName;
                workRange[5, 5]  = partNo;
                workRange[5, 6]  = cusVer;
                workRange[5, 7]  = sDB_MEMain.comMEMain.partDescription;

                //Insert所需欄位
                int Dicount = 0;
                foreach (Com_Dimension i in cCom_Dimension)
                {
                    if (i.balloonCount != null)
                    {
                        Dicount = Convert.ToInt32(i.balloonCount) + Dicount;
                    }
                    else
                    {
                        Dicount++;
                    }
                }
                for (int i = 1; i < Dicount; i++)
                {
                    workRange = (Range)workSheet.Range["A8"].EntireRow;
                    workRange.Insert(XlInsertShiftDirection.xlShiftDown, workRange.Copy(Type.Missing));
                }

                //設定欄位的Row,Column
                int currentRow = 7, ballonColumn = 1, locationColumn = 2, dimenColumn = 3, instrumentColumn = 4, checkColumn = 18;
                foreach (Com_Dimension i in cCom_Dimension)
                {
                    if (i.balloonCount == null)
                    {
                        workRange = (Range)workSheet.Cells;
                        //取得Row,Column
                        currentRow = currentRow + 1;

                        status = Excel_CommonFun.MappingDimenData(i, workSheet, currentRow, dimenColumn);
                        //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, currentRow, dimenColumn);
                        if (!status)
                        {
                            MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                            return(false);
                        }

                        #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                        string[] splitInstrument = i.instrument.Split(',');
                        if (splitInstrument[1] != null)
                        {
                            workRange[currentRow, instrumentColumn] = splitInstrument[1];
                        }
                        else
                        {
                            workRange[currentRow, instrumentColumn] = splitInstrument[0];
                        }
                        workRange[currentRow, ballonColumn]   = i.ballon;
                        workRange[currentRow, locationColumn] = i.location;
                        workRange[currentRow, checkColumn]    = i.checkLevel;
                        #endregion
                    }
                    else
                    {
                        for (int j = 0; j < Convert.ToInt32(i.balloonCount); j++)
                        {
                            workRange = (Range)workSheet.Cells;
                            //取得Row,Column
                            currentRow = currentRow + 1;

                            status = Excel_CommonFun.MappingDimenData(i, workSheet, currentRow, dimenColumn);
                            //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, currentRow, dimenColumn);
                            if (!status)
                            {
                                MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                                return(false);
                            }

                            #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                            string[] splitInstrument = i.instrument.Split(',');
                            if (splitInstrument[1] != null)
                            {
                                workRange[currentRow, instrumentColumn] = splitInstrument[1];
                            }
                            else
                            {
                                workRange[currentRow, instrumentColumn] = splitInstrument[0];
                            }
                            if (i.balloonCount != null && Convert.ToInt32(i.balloonCount) > 1)
                            {
                                workRange[currentRow, ballonColumn] = i.ballon.ToString() + "." + Convert.ToChar(65 + j).ToString().ToLower();
                            }
                            else
                            {
                                workRange[currentRow, ballonColumn] = i.ballon.ToString();
                            }
                            workRange[currentRow, locationColumn] = i.location;
                            workRange[currentRow, checkColumn]    = i.checkLevel;
                            #endregion
                        }
                    }
                }

                //for (int i = 0; i < cCom_Dimension.Count; i++)
                //{
                //    workRange = (Range)workSheet.Cells;
                //    //取得Row,Column
                //    currentRow = currentRow + 1;

                //    status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workSheet, currentRow, dimenColumn);
                //    //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, currentRow, dimenColumn);
                //    if (!status)
                //    {
                //        MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                //        return false;
                //    }

                //    #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                //    workRange[currentRow, instrumentColumn] = cCom_Dimension[i].instrument;
                //    workRange[currentRow, ballonColumn] = cCom_Dimension[i].ballon;
                //    workRange[currentRow, locationColumn] = cCom_Dimension[i].location;
                //    workRange[currentRow, checkColumn] = cCom_Dimension[i].checkLevel;
                //    #endregion
                //}



                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #6
0
        public static bool CreateIQCExcel_XinWu(string cusName, string partNo, string cusVer, string opVer, string op1, DB_MEMain sDB_MEMain, IList <Com_Dimension> cCom_Dimension)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_MEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , op1 + "_" + sDB_MEMain.factory + ".xls");



                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = (Workbook)excelApp.Workbooks.Open(sDB_MEMain.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];

                //建立Sheet頁數符合所有的Dimension
                int Dicount = 0;
                foreach (Com_Dimension i in cCom_Dimension)
                {
                    if (i.balloonCount != null)
                    {
                        Dicount = Convert.ToInt32(i.balloonCount) + Dicount;
                    }
                    else
                    {
                        Dicount++;
                    }
                }
                status = Excel_CommonFun.AddNewSheet(Dicount, 8, excelApp, workSheet);
                if (!status)
                {
                    MessageBox.Show("建立Sheet頁失敗,請聯繫開發工程師");
                    return(false);
                }

                //修改每一個Sheet名字和頁數
                status = Excel_CommonFun.ModifySheet(partNo, "IQC", workBook, workSheet, workRange, sDB_MEMain.factory);
                if (!status)
                {
                    MessageBox.Show("修改Sheet名字失敗,請聯繫開發工程師");
                    return(false);
                }

                RowColumn sRowColumn = new RowColumn();
                int       currentSheet_Value;
                int       count = -1;
                foreach (Com_Dimension i in cCom_Dimension)
                {
                    if (i.balloonCount == null)
                    {
                        count++;
                        GetExcelRowColumn(count, out sRowColumn);
                        currentSheet_Value = (count / 8);
                        if (currentSheet_Value == 0)
                        {
                            workSheet = (Worksheet)workBook.Sheets[1];
                        }
                        else
                        {
                            workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                        }
                        workRange = (Range)workSheet.Cells;

                        status = Excel_CommonFun.MappingDimenData(i, workSheet, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                        //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                        if (!status)
                        {
                            MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                            return(false);
                        }

                        #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                        workRange[sRowColumn.GaugeRow, sRowColumn.GaugeColumn]       = "=" + "\"" + i.instrument.Split(',')[0] + "\"" + "&char(10)&" + "\"" + i.instrument.Split(',')[1] + "\"";
                        workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn]     = i.ballon;
                        workRange[sRowColumn.LocationRow, sRowColumn.LocationColumn] = i.location;
                        workRange[sRowColumn.PartNoRow, sRowColumn.PartNoColumn]     = partNo + string.Format("({0})", cusVer);
                        workRange[sRowColumn.PartDescRow, sRowColumn.PartDescColumn] = sDB_MEMain.comMEMain.partDescription;
                        workRange[sRowColumn.MaterialRow, sRowColumn.MaterialColumn] = sDB_MEMain.comMEMain.material;
                        workRange[sRowColumn.OISRow, sRowColumn.OISColumn]           = op1;
                        workRange[sRowColumn.OISRevRow, sRowColumn.OISRevColumn]     = sDB_MEMain.comMEMain.draftingVer;
                        #endregion
                    }
                    else
                    {
                        for (int j = 0; j < Convert.ToInt32(i.balloonCount); j++)
                        {
                            count++;
                            GetExcelRowColumn(count, out sRowColumn);
                            currentSheet_Value = (count / 8);
                            if (currentSheet_Value == 0)
                            {
                                workSheet = (Worksheet)workBook.Sheets[1];
                            }
                            else
                            {
                                workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                            }
                            workRange = (Range)workSheet.Cells;

                            status = Excel_CommonFun.MappingDimenData(i, workSheet, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                            //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                            if (!status)
                            {
                                MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                                return(false);
                            }

                            #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                            workRange[sRowColumn.GaugeRow, sRowColumn.GaugeColumn] = "=" + "\"" + i.instrument.Split(',')[0] + "\"" + "&char(10)&" + "\"" + i.instrument.Split(',')[1] + "\"";
                            if (i.balloonCount != null && Convert.ToInt32(i.balloonCount) > 1)
                            {
                                workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn] = i.ballon.ToString() + "." + Convert.ToChar(65 + j).ToString().ToLower();
                            }
                            else
                            {
                                workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn] = i.ballon.ToString();
                            }
                            workRange[sRowColumn.LocationRow, sRowColumn.LocationColumn] = i.location;
                            workRange[sRowColumn.PartNoRow, sRowColumn.PartNoColumn]     = partNo + string.Format("({0})", cusVer);
                            workRange[sRowColumn.PartDescRow, sRowColumn.PartDescColumn] = sDB_MEMain.comMEMain.partDescription;
                            workRange[sRowColumn.MaterialRow, sRowColumn.MaterialColumn] = sDB_MEMain.comMEMain.material;
                            workRange[sRowColumn.OISRow, sRowColumn.OISColumn]           = op1;
                            workRange[sRowColumn.OISRevRow, sRowColumn.OISRevColumn]     = sDB_MEMain.comMEMain.draftingVer;
                            #endregion
                        }
                    }
                }
                //for (int i = 0; i < cCom_Dimension.Count; i++)
                //{
                //    GetExcelRowColumn(i, out sRowColumn);
                //    currentSheet_Value = (i / 8);
                //    if (currentSheet_Value == 0)
                //    {
                //        workSheet = (Worksheet)workBook.Sheets[1];
                //    }
                //    else
                //    {
                //        workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                //    }
                //    workRange = (Range)workSheet.Cells;

                //    status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workSheet, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                //    //status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workRange, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                //    if (!status)
                //    {
                //        MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                //        return false;
                //    }

                //    #region 檢具、頻率、Max、Min、泡泡、泡泡位置、料號、日期
                //    workRange[sRowColumn.GaugeRow, sRowColumn.GaugeColumn] = cCom_Dimension[i].instrument;
                //    workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn] = cCom_Dimension[i].ballon;
                //    workRange[sRowColumn.LocationRow, sRowColumn.LocationColumn] = cCom_Dimension[i].location;
                //    workRange[sRowColumn.PartNoRow, sRowColumn.PartNoColumn] = partNo + string.Format("({0})", cusVer);
                //    workRange[sRowColumn.PartDescRow, sRowColumn.PartDescColumn] = sDB_MEMain.comMEMain.partDescription;
                //    workRange[sRowColumn.MaterialRow, sRowColumn.MaterialColumn] = sDB_MEMain.comMEMain.material;
                //    workRange[sRowColumn.OISRow, sRowColumn.OISColumn] = op1;
                //    workRange[sRowColumn.OISRevRow, sRowColumn.OISRevColumn] = sDB_MEMain.comMEMain.draftingVer;
                //    #endregion
                //}


                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #7
0
        public static bool CreateIPQCExcel_XiAn(string cusName, string partNo, string cusVer, string opVer, string op1, DB_MEMain sDB_MEMain, IList <Com_Dimension> cCom_Dimension)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_MEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , op1 + "_" + sDB_MEMain.factory + ".xls");

                //判斷Server的Template是否存在
                if (!File.Exists(sDB_MEMain.excelTemplateFilePath))
                {
                    return(false);
                }

                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = excelApp.Workbooks.Open(sDB_MEMain.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];

                //建立Sheet頁數符合所有的Dimension
                status = Excel_CommonFun.AddNewSheet(cCom_Dimension.Count, 15, excelApp, workSheet);
                if (!status)
                {
                    MessageBox.Show("建立Sheet頁失敗,請聯繫開發工程師");
                    workBook.SaveAs(sDB_MEMain.excelTemplateFilePath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                    , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                    excelApp.Quit();
                    return(false);
                }

                //修改每一個Sheet名字和頁數
                status = Excel_CommonFun.ModifySheet(partNo, "IPQC", workBook, workSheet, workRange, sDB_MEMain.factory);
                if (!status)
                {
                    MessageBox.Show("修改Sheet名字和頁數失敗,請聯繫開發工程師");
                    //workBook.SaveAs(sDB_MEMain.excelTemplateFilePath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                    //    , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                    excelApp.Quit();
                    return(false);
                }

                RowColumn sRowColumn = new RowColumn();
                int       currentSheet_Value;
                for (int i = 0; i < cCom_Dimension.Count; i++)
                {
                    GetExcelRowColumn(i, sDB_MEMain.factory, out sRowColumn);
                    currentSheet_Value = (i / 15);
                    if (currentSheet_Value == 0)
                    {
                        workSheet = (Worksheet)workBook.Sheets[1];
                    }
                    else
                    {
                        workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                    }
                    workRange = (Range)workSheet.Cells; /*workSheet.Range[sRowColumn.DimensionRow, sRowColumn.DimensionColumn].Characters[1]*/

                    status = Excel_CommonFun.MappingDimenData(cCom_Dimension[i], workSheet, sRowColumn.DimensionRow, sRowColumn.DimensionColumn);
                    if (!status)
                    {
                        MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                        //workBook.SaveAs(sDB_MEMain.excelTemplateFilePath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                        //, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                        workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                        excelApp.Quit();
                        return(false);
                    }

                    #region 泡泡、泡泡位置、檢具、刀號、頻率、料號、製程序、客戶版次、日期
                    workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn]               = cCom_Dimension[i].ballon;
                    workRange[sRowColumn.LocationRow, sRowColumn.LocationColumn]           = cCom_Dimension[i].location;
                    workRange[sRowColumn.GaugeRow, sRowColumn.GaugeColumn]                 = cCom_Dimension[i].instrument;
                    workRange[sRowColumn.ToolNoControlRow, sRowColumn.ToolNoControlColumn] = cCom_Dimension[i].toolNoControl;
                    workRange[sRowColumn.FrequencyRow, sRowColumn.FrequencyColumn]         = cCom_Dimension[i].frequency;
                    workRange[sRowColumn.PartNoRow, sRowColumn.PartNoColumn]               = partNo;
                    workRange[sRowColumn.OISRow, sRowColumn.OISColumn]       = op1;
                    workRange[sRowColumn.OISRevRow, sRowColumn.OISRevColumn] = cusVer;
                    workRange[sRowColumn.DateRow, sRowColumn.DateColumn]     = DateTime.Now.ToShortDateString();
                    #endregion
                }

                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #8
0
        public static bool CreateFixInsExcel(string cusName, string partNo, string cusVer, string opVer, string op1, DB_FixInspection sDB_FixInspection, IList <Com_FixDimension> cCom_FixDimension)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_FixInspection.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , sDB_FixInspection.comFixInspection.fixPartName + "模檢治" + ".xls");
                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook         = (Workbook)excelApp.Workbooks.Open(sDB_FixInspection.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];

                //建立Sheet頁數符合所有的Dimension
                int Dicount = 0;
                foreach (Com_FixDimension i in cCom_FixDimension)
                {
                    if (i.balloonCount != null)
                    {
                        Dicount = Convert.ToInt32(i.balloonCount) + Dicount;
                    }
                    else
                    {
                        Dicount++;
                    }
                }
                status = Excel_CommonFun.AddNewSheet(Dicount, 15, excelApp, workSheet);
                if (!status)
                {
                    MessageBox.Show("建立Sheet頁失敗,請聯繫開發工程師");
                    workBook.SaveAs(sDB_FixInspection.excelTemplateFilePath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                    , XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                    workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                    excelApp.Quit();
                    return(false);
                }

                RowColumn sRowColumn = new RowColumn();
                int       currentSheet_Value;
                int       count = -1;
                foreach (Com_FixDimension i in cCom_FixDimension)
                {
                    if (i.balloonCount == null)
                    {
                        count++;
                        GetExcelRowColumn(count, out sRowColumn);
                        currentSheet_Value = (count / 15);
                        if (currentSheet_Value == 0)
                        {
                            workSheet = (Worksheet)workBook.Sheets[1];
                        }
                        else
                        {
                            workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                        }
                        workRange = (Range)workSheet.Cells;

                        status = Excel_CommonFun.MappingFixInsDimenData(i, workSheet, sRowColumn.FixInsDimensionRow, sRowColumn.FixInsDimensionColumn);
                        if (!status)
                        {
                            MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                            workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                            excelApp.Quit();
                            return(false);
                        }

                        #region 泡泡、模檢治編號、ERP編號、品名
                        workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn]         = i.ballon.ToString();
                        workRange[sRowColumn.FixInsNoRow, sRowColumn.FixInsNoColumn]     = sDB_FixInspection.comFixInspection.fixinsNo.ToString();
                        workRange[sRowColumn.FixInsDescRow, sRowColumn.FixInsDescColumn] = sDB_FixInspection.comFixInspection.fixinsDescription.ToString();
                        workRange[sRowColumn.ERPRow, sRowColumn.ERPColumn] = sDB_FixInspection.comFixInspection.fixinsERP.ToString();
                        #endregion
                    }
                    else
                    {
                        for (int j = 0; j < Convert.ToInt32(i.balloonCount); j++)
                        {
                            count++;
                            GetExcelRowColumn(count, out sRowColumn);
                            currentSheet_Value = (count / 15);
                            if (currentSheet_Value == 0)
                            {
                                workSheet = (Worksheet)workBook.Sheets[1];
                            }
                            else
                            {
                                workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                            }
                            workRange = (Range)workSheet.Cells;

                            status = Excel_CommonFun.MappingFixInsDimenData(i, workSheet, sRowColumn.FixInsDimensionRow, sRowColumn.FixInsDimensionColumn);
                            if (!status)
                            {
                                MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                                excelApp.Quit();
                                return(false);
                            }

                            #region 泡泡、模檢治編號、ERP編號、品名
                            if (i.balloonCount != null && Convert.ToInt32(i.balloonCount) > 1)
                            {
                                workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn] = i.ballon.ToString() + Convert.ToChar(65 + j).ToString().ToLower();
                            }
                            else
                            {
                                workRange[sRowColumn.BallonRow, sRowColumn.BallonColumn] = i.ballon.ToString();
                            }
                            workRange[sRowColumn.FixInsNoRow, sRowColumn.FixInsNoColumn]     = sDB_FixInspection.comFixInspection.fixinsNo.ToString();
                            workRange[sRowColumn.FixInsDescRow, sRowColumn.FixInsDescColumn] = sDB_FixInspection.comFixInspection.fixinsDescription.ToString();
                            workRange[sRowColumn.ERPRow, sRowColumn.ERPColumn] = sDB_FixInspection.comFixInspection.fixinsERP.ToString();
                            #endregion
                        }
                    }
                }

                //計算欄位的初始top
                double topDouble = 0;
                for (int i = 1; i < 5; i++)
                {
                    workRange = (Range)workSheet.Cells[i, 1];
                    topDouble = topDouble + Convert.ToDouble(workRange.Height);
                    //CaxLog.ShowListingWindow(oRng.Height.ToString());
                }
                //CaxLog.ShowListingWindow(de.ToString());

                //計算欄位的初始left
                double leftDouble = 0;
                for (int i = 1; i < 2; i++)
                {
                    workRange  = (Range)workSheet.Cells[1, i];
                    leftDouble = leftDouble + Convert.ToDouble(workRange.Width.ToString());
                }

                //計算圖片的width
                double widthDouble = 0;
                for (int i = 2; i < 34; i++)
                {
                    workRange   = (Range)workSheet.Cells[1, i];
                    widthDouble = widthDouble + Convert.ToDouble(workRange.Width.ToString());
                }

                //計算圖片的height
                double heightDouble = 0;
                for (int i = 5; i < 14; i++)
                {
                    workRange    = (Range)workSheet.Cells[i, 1];
                    heightDouble = heightDouble + Convert.ToDouble(workRange.Height);
                }

                //加入圖片
                FixImgPosiSize sFixImgPosiSize = new FixImgPosiSize();
                GetFixImgPosiAndSize(leftDouble, topDouble, widthDouble, heightDouble, out sFixImgPosiSize);
                for (int i = 0; i < workBook.Sheets.Count; i++)
                {
                    workSheet = (Worksheet)workBook.Sheets[i + 1];

                    string[] splitFixImgPath = sDB_FixInspection.comFixInspection.fixPicPath.Split(',');
                    foreach (string j in splitFixImgPath)
                    {
                        workSheet.Shapes.AddPicture(j, Microsoft.Office.Core.MsoTriState.msoFalse,
                                                    Microsoft.Office.Core.MsoTriState.msoTrue, sFixImgPosiSize.FixPosiLeft,
                                                    sFixImgPosiSize.FixPosiTop, sFixImgPosiSize.FixImgWidth, sFixImgPosiSize.FixImgHeight);
                    }
                    //if (File.Exists(sDB_TEMain.comTEMain.fixtureImgPath))
                    //{
                    //    workSheet.Shapes.AddPicture(sDB_TEMain.comTEMain.fixtureImgPath, Microsoft.Office.Core.MsoTriState.msoFalse,
                    //    Microsoft.Office.Core.MsoTriState.msoTrue, (float)(abc + 3),
                    //    (float)(de + 5), sFixImgPosiSize.FixImgWidth, sFixImgPosiSize.FixImgHeight);
                    //}
                }

                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
        public static bool CreateCPExcel(DB_CPKey sDB_CP, List <DB_CPValue> sDB_CPValue)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_CP.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , sDB_CP.PartNo
                                           , sDB_CP.CusVer
                                           , sDB_CP.OpVer
                                           , sDB_CP.PartNo
                                           , sDB_CP.CusVer
                                           , sDB_CP.OpVer + "_" + "ControlPlan" + ".xls");



                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet

                workBook         = (Workbook)excelApp.Workbooks.Open(sDB_CP.excelTemplateFilePath);
                excelApp.Visible = false;
                workSheet        = (Worksheet)workBook.Sheets[1];
                workRange        = (Range)workSheet.Cells;
                workRange[6, 1]  = sDB_CP.PartNo;
                workRange[6, 4]  = sDB_CP.CusVer;
                workRange[8, 1]  = sDB_CP.PartDesc;

                //Insert所需欄位,此處有判斷是否有SPC欄位需要增加
                int dimenCount = 0;
                foreach (DB_CPValue i in sDB_CPValue)
                {
                    foreach (KeyValuePair <int, IList <Com_Dimension> > y in i.DicBalloonData)
                    {
                        int balloonDimenCount = 0;
                        foreach (Com_Dimension k in y.Value)
                        {
                            dimenCount++;
                            balloonDimenCount++;
                            //當該泡泡的尺寸數量輪巡到最後一筆的時候,判斷是否有SPC,如果有則再加一欄
                            if (y.Value.Count == balloonDimenCount & (k.spcControl != null & k.spcControl != ""))
                            {
                                dimenCount++;
                            }
                        }
                    }
                }

                //之後可以試看看先紀錄第16行,要插入資料的時候再新增就好
                while (dimenCount - 1 != 0 && dimenCount > 1)
                {
                    workRange = (Range)workSheet.Range["A16"].EntireRow;
                    workRange.Insert(XlInsertShiftDirection.xlShiftDown, XlInsertFormatOrigin.xlFormatFromRightOrBelow);
                    dimenCount--;
                }

                //設定欄位的Row,Column
                int
                    currentRow = 16, dimenColumn = 8, op1Column = 1, op2Column = 2, ballonColumn = 4, productColumn = 5, keyChara = 7,
                    instrumentColumn = 9, methodColumn = 12, spcControlColumn = 9, sizeColumn = 10, freqColumn = 11;
                foreach (DB_CPValue i in sDB_CPValue)
                {
                    if (i.DicBalloonData.Count == 0)
                    {
                        continue;
                    }
                    workRange = (Range)workSheet.Cells;
                    workRange[currentRow, op1Column] = i.Op1;
                    workRange[currentRow, op2Column] = i.Op2;
                    string OP1MergeRow = currentRow.ToString();
                    foreach (KeyValuePair <int, IList <Com_Dimension> > j in i.DicBalloonData)
                    {
                        workRange[currentRow, ballonColumn] = j.Key;

                        //判斷是否有SPC,如果有則多合併一個欄位
                        if (j.Value[0].spcControl != null & j.Value[0].spcControl != "")
                        {
                            //合併儲存格-泡泡
                            workSheet.get_Range("D" + currentRow.ToString(), "D" + (currentRow + j.Value.Count).ToString()).Merge(false);
                            //workSheet.get_Range("D:D", Type.Missing).HorizontalAlignment = XlVAlign.xlVAlignCenter;
                            //workSheet.get_Range("D:D", Type.Missing).VerticalAlignment = XlVAlign.xlVAlignDistributed;
                            //合併儲存格-Product
                            workSheet.get_Range("E" + currentRow.ToString(), "E" + (currentRow + j.Value.Count).ToString()).Merge(false);
                            //合併儲存格-KC
                            workSheet.get_Range("G" + currentRow.ToString(), "G" + (currentRow + j.Value.Count).ToString()).Merge(false);
                            //合併儲存格-尺寸
                            workSheet.get_Range("H" + currentRow.ToString(), "H" + (currentRow + j.Value.Count).ToString()).Merge(false);
                        }
                        else
                        {
                            //合併儲存格-泡泡
                            workSheet.get_Range("D" + currentRow.ToString(), "D" + (currentRow + j.Value.Count - 1).ToString()).Merge(false);
                            //workSheet.get_Range("D:D", Type.Missing).HorizontalAlignment = XlVAlign.xlVAlignCenter;
                            //workSheet.get_Range("D:D", Type.Missing).VerticalAlignment = XlVAlign.xlVAlignDistributed;
                            //合併儲存格-Product
                            workSheet.get_Range("E" + currentRow.ToString(), "E" + (currentRow + j.Value.Count - 1).ToString()).Merge(false);
                            //合併儲存格-KC
                            workSheet.get_Range("G" + currentRow.ToString(), "G" + (currentRow + j.Value.Count - 1).ToString()).Merge(false);
                            //合併儲存格-尺寸
                            workSheet.get_Range("H" + currentRow.ToString(), "H" + (currentRow + j.Value.Count - 1).ToString()).Merge(false);
                        }


                        //紀錄泡泡拿來判斷,當出現相同泡泡又要插圖片時只差一個圖片
                        int tempBalloon = 0, count = 0;
                        foreach (Com_Dimension k in j.Value)
                        {
                            //紀錄泡泡拿來判斷,當出現相同泡泡又要插圖片時只插一個圖片
                            tempBalloon = k.ballon;

                            status = Excel_CommonFun.MappingDimenData(k, workSheet, currentRow, dimenColumn);
                            if (!status)
                            {
                                //MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                                return(false);
                            }
                            workRange[currentRow, instrumentColumn] = k.instrument;
                            workRange[currentRow, productColumn]    = k.productName;
                            workRange[currentRow, methodColumn]     = k.excelType;
                            if (k.excelType != "SelfCheck")
                            {
                                workRange[currentRow, sizeColumn] = k.size;
                                workRange[currentRow, freqColumn] = k.freq;
                            }
                            else
                            {
                                workRange[currentRow, sizeColumn] = k.selfCheck_Size;
                                workRange[currentRow, freqColumn] = k.selfCheck_Freq;
                            }

                            count++;

                            if (count == j.Value.Count)
                            {
                                //當量具資料都插好了之後再插入SPC
                                if (j.Value[0].spcControl != null & j.Value[0].spcControl != "")
                                {
                                    currentRow = currentRow + 1;
                                    workRange[currentRow, spcControlColumn] = k.spcControl;
                                    workRange[currentRow, methodColumn]     = "Software";
                                    //合併儲存格-SPC
                                    workSheet.get_Range("I" + currentRow, "K" + currentRow).Merge(false);
                                }
                                if (k.keyChara.Contains("cax"))
                                {
                                    Range tempRange = (Range)workSheet.get_Range("G" + (currentRow - j.Value.Count + 1).ToString());
                                    float left, top, rowHeight;
                                    rowHeight = Convert.ToSingle(tempRange.RowHeight);
                                    left      = Convert.ToSingle(tempRange.Left) + 10;
                                    if (j.Value.Count == 1)
                                    {
                                        top = Convert.ToSingle(tempRange.Top) + Convert.ToSingle(rowHeight / 2 - 5);
                                    }
                                    else
                                    {
                                        top = Convert.ToSingle(tempRange.Top) + Convert.ToSingle((rowHeight * j.Value.Count) / 3);
                                    }

                                    //MessageBox.Show(workRange.Column.ToString());//表示第幾欄
                                    //MessageBox.Show(workRange.ColumnWidth.ToString());//該欄的寬度
                                    workSheet.Shapes.AddPicture(k.keyChara, Microsoft.Office.Core.MsoTriState.msoFalse,
                                                                Microsoft.Office.Core.MsoTriState.msoTrue, left,
                                                                top, 10, 10);
                                }
                                else
                                {
                                    workRange[currentRow, keyChara] = k.keyChara;
                                }
                            }
                            currentRow = currentRow + 1;
                        }
                    }
                    //合併儲存格-OP1
                    workSheet.get_Range("A" + OP1MergeRow, "A" + (currentRow - 1).ToString()).Merge(false);
                    //合併儲存格-OP2
                    workSheet.get_Range("B" + OP1MergeRow, "B" + (currentRow - 1).ToString()).Merge(false);
                }


                /*
                 * foreach (DB_CPValue i in sDB_CPValue)
                 * {
                 *  workRange = (Range)workSheet.Cells;
                 *  workRange[currentRow, op1Column] = i.Op1;
                 *  workRange[currentRow, op2Column] = i.Op2;
                 *  foreach (Com_Dimension y in i.comDimension)
                 *  {
                 *      workRange[currentRow, ballonColumn] = y.ballon;
                 *      workRange[currentRow, productColumn] = y.productName;
                 *      workRange[currentRow, keyChara] = y.keyChara;
                 *      status = Excel_CommonFun.MappingDimenData(y, workSheet, currentRow, dimenColumn);
                 *      if (!status)
                 *      {
                 *          MessageBox.Show("MappingDimenData時發生錯誤,請聯繫開發工程師");
                 *          return false;
                 *      }
                 *      workRange[currentRow, instrumentColumn] = y.instrument;
                 *      workRange[currentRow, methodColumn] = y.excelType;
                 *      currentRow = currentRow + 1;
                 *      int balloonNum = y.ballon;
                 *      if (y.ballon == balloonNum)
                 *      {
                 *          workSheet.get_Range("D16", "D17").Merge(false);
                 *          workSheet.get_Range("D:D", Type.Missing).HorizontalAlignment = XlVAlign.xlVAlignCenter;
                 *          workSheet.get_Range("D:D", Type.Missing).VerticalAlignment = XlVAlign.xlVAlignDistributed;
                 *      }
                 *  }
                 * }
                 */

                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }
Example #10
0
        public static bool CreateShopDocExcel_XinWu(string cusName, string partNo, string cusVer, string opVer, string op1, DB_TEMain sDB_TEMain, IList <Com_ShopDoc> cCom_ShopDoc)
        {
            //判斷Server的Template是否存在
            if (!File.Exists(sDB_TEMain.excelTemplateFilePath))
            {
                return(false);
            }

            ApplicationClass excelApp  = new ApplicationClass();
            Workbook         workBook  = null;
            Worksheet        workSheet = null;
            Range            workRange = null;

            try
            {
                //設定輸出路徑
                OutputPath = string.Format(@"{0}\{1}_{2}_{3}\{4}_{5}_{6}_{7}"
                                           , Environment.GetFolderPath(Environment.SpecialFolder.Desktop)
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , partNo
                                           , cusVer
                                           , opVer
                                           , sDB_TEMain.comTEMain.ncGroupName + "_" + "ShopDoc" + ".xls");


                //MessageBox.Show("0");
                //1.開啟Excel
                //2.將Excel設為不顯示
                //3.取得第一頁Sheet
                workBook = (Workbook)excelApp.Workbooks.Open(sDB_TEMain.excelTemplateFilePath);
                //MessageBox.Show("1");
                excelApp.Visible = false;
                //MessageBox.Show("2");
                workSheet = (Worksheet)workBook.Sheets[1];
                //MessageBox.Show("3");
                //建立Sheet頁數符合所有的Operation
                status = Excel_CommonFun.AddNewSheet(cCom_ShopDoc.Count, 8, excelApp, workSheet);
                if (!status)
                {
                    MessageBox.Show("建立Sheet頁失敗,請聯繫開發工程師");
                    return(false);
                }

                //修改每一個Sheet名字和頁數
                status = Excel_CommonFun.ModifySheet(sDB_TEMain.ncGroupName, "ShopDoc", workBook, workSheet, workRange, sDB_TEMain.factory);
                if (!status)
                {
                    MessageBox.Show("修改Sheet名字和頁數失敗,請聯繫開發工程師");
                    return(false);
                }

                //計算欄位的初始TOP
                double de = 0;
                for (int i = 1; i < 23; i++)
                {
                    workRange = (Range)workSheet.Cells[i, 1];
                    de        = de + Convert.ToDouble(workRange.Height);
                    //CaxLog.ShowListingWindow(oRng.Height.ToString());
                }
                //CaxLog.ShowListingWindow(de.ToString());

                //計算欄位的初始LEFT
                double abc = 0;
                for (int i = 1; i < 9; i++)
                {
                    workRange = (Range)workSheet.Cells[23, i];
                    abc       = abc + Convert.ToDouble(workRange.Width.ToString());
                }

                //開始填表
                RowColumn sRowColumn;
                for (int i = 0; i < cCom_ShopDoc.Count; i++)
                {
                    GetExcelRowColumn(i, out sRowColumn);
                    //取得當前Operation該放置的Sheet
                    int currentSheet_Value = (i / 8);
                    //int currentSheet_Reserve = (i % 8);
                    if (currentSheet_Value == 0)
                    {
                        workSheet = (Worksheet)workBook.Sheets[1];
                    }
                    else
                    {
                        workSheet = (Worksheet)workBook.Sheets[currentSheet_Value + 1];
                    }

                    workRange = (Range)workSheet.Cells;
                    workRange[sRowColumn.OperImgToolRow, sRowColumn.OperImgToolColumn] = cCom_ShopDoc[i].toolNo + "_" + cCom_ShopDoc[i].operationName;
                    //workRange[sRowColumn.ToolNumberRow, sRowColumn.ToolNumberColumn] = cCom_ShopDoc[i].toolNo;
                    workRange[sRowColumn.ToolNameRow, sRowColumn.ToolNameColumn]                 = cCom_ShopDoc[i].toolID;
                    workRange[sRowColumn.OperNameRow, sRowColumn.OperNameColumn]                 = cCom_ShopDoc[i].operationName;
                    workRange[sRowColumn.HolderRow, sRowColumn.HolderColumn]                     = cCom_ShopDoc[i].holderID;
                    workRange[sRowColumn.ToolFeedRow, sRowColumn.ToolFeedColumn]                 = "F:" + cCom_ShopDoc[i].feed;
                    workRange[sRowColumn.ToolSpeedRow, sRowColumn.ToolSpeedColumn]               = cCom_ShopDoc[i].speed;
                    workRange[sRowColumn.PartStockRow, sRowColumn.PartStockColumn]               = cCom_ShopDoc[i].partStock;
                    workRange[sRowColumn.CutterLifeRow, sRowColumn.CutterLifeColumn]             = cCom_ShopDoc[i].cutterLife;
                    workRange[sRowColumn.ExtensionRow, sRowColumn.ExtensionColumn]               = cCom_ShopDoc[i].extension;
                    workRange[sRowColumn.CuttingTimeRow, sRowColumn.CuttingTimeColumn]           = cCom_ShopDoc[i].machiningtime;
                    workRange[sRowColumn.PartNoRow, sRowColumn.PartNoColumn]                     = partNo;
                    workRange[sRowColumn.TotalCuttingTimeRow, sRowColumn.TotalCuttingTimeColumn] = sDB_TEMain.comTEMain.totalCuttingTime;
                    workRange[sRowColumn.PartDescRow, sRowColumn.PartDescColumn]                 = "OIS-" + sDB_TEMain.ncGroupName.Split('P')[1];
                    //加入 機台型號.設計.審核.批准
                    workRange[sRowColumn.MachineNoRow, sRowColumn.MachineNoColumn] = sDB_TEMain.comTEMain.machineNo;
                    workRange[sRowColumn.DesignedRow, sRowColumn.DesignedColumn]   = sDB_TEMain.comTEMain.designed;
                    workRange[sRowColumn.ReviewedRow, sRowColumn.ReviewedColumn]   = sDB_TEMain.comTEMain.reviewed;
                    workRange[sRowColumn.ApprovedRow, sRowColumn.ApprovedColumn]   = sDB_TEMain.comTEMain.approved;


                    OperImgPosiSize sImgPosiSize = new OperImgPosiSize();
                    GetOperImgPosiAndSize(i, out sImgPosiSize);
                    if (File.Exists(cCom_ShopDoc[i].opImagePath))
                    {
                        workSheet.Shapes.AddPicture(cCom_ShopDoc[i].opImagePath, Microsoft.Office.Core.MsoTriState.msoFalse,
                                                    Microsoft.Office.Core.MsoTriState.msoTrue, sImgPosiSize.OperPosiLeft,
                                                    sImgPosiSize.OperPosiTop, sImgPosiSize.OperImgWidth, sImgPosiSize.OperImgHeight);
                    }
                }

                //加入控制尺寸資訊(未開發)
                ISession session = MyHibernateHelper.SessionFactory.OpenSession();
                IList <Com_ControlDimen> ListComControlDimen = session.QueryOver <Com_ControlDimen>()
                                                               .Where(x => x.comTEMain == sDB_TEMain.comTEMain).List();
                int    j = 0, initialControlDimenRow = 39, ControlDimenToolNoColumn = 9, ControlDimenBalloonColumn = 10, ControlDimenColumn = 11;
                string toolNo = "";
                foreach (Com_ControlDimen i in ListComControlDimen)
                {
                    workSheet = (Worksheet)workBook.Sheets[1 + j];
                    workRange = (Range)workSheet.Cells;

                    if (toolNo == "" || toolNo != i.toolNo)
                    {
                        workRange[initialControlDimenRow, ControlDimenToolNoColumn] = i.toolNo;
                        toolNo = i.toolNo;
                    }
                    workRange[initialControlDimenRow, ControlDimenBalloonColumn] = i.controlBallon;
                    workRange[initialControlDimenRow, ControlDimenColumn]        = i.controlDimen;
                    initialControlDimenRow++;
                    if (initialControlDimenRow == 47)
                    {
                        j++;
                    }
                }


                //加入治具圖片
                if (sDB_TEMain.comTEMain.fixtureImgPath != "")
                {
                    FixImgPosiSize sFixImgPosiSize = new FixImgPosiSize();
                    GetFixImgPosiAndSize(out sFixImgPosiSize);
                    for (int i = 0; i < workBook.Sheets.Count; i++)
                    {
                        workSheet = (Worksheet)workBook.Sheets[i + 1];

                        if (File.Exists(sDB_TEMain.comTEMain.fixtureImgPath))
                        {
                            workSheet.Shapes.AddPicture(sDB_TEMain.comTEMain.fixtureImgPath, Microsoft.Office.Core.MsoTriState.msoFalse,
                                                        Microsoft.Office.Core.MsoTriState.msoTrue, (float)(abc + 3),
                                                        (float)(de + 5), sFixImgPosiSize.FixImgWidth, sFixImgPosiSize.FixImgHeight);
                        }
                    }
                }


                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.ToString());
                if (File.Exists(OutputPath))
                {
                    File.Delete(OutputPath);
                }
                workBook.SaveAs(OutputPath, XlFileFormat.xlWorkbookNormal, Type.Missing, Type.Missing, Type.Missing,
                                Type.Missing, XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
                workBook.Close(Type.Missing, Type.Missing, Type.Missing);
                excelApp.Quit();
                File.Delete(OutputPath);
                return(false);
            }
            finally
            {
                Dispose(excelApp, workBook, workSheet, workRange);
            }
            return(true);
        }