Ejemplo n.º 1
0
        void ReplaceTag(Excel.Range rng, LocalizeSource localize)
        {
            char[]        splitChar = { '[', ']' };
            StringBuilder sbText    = new StringBuilder();
            StringBuilder sbOrg     = new StringBuilder();
            StringBuilder sbNew     = new StringBuilder();
            string        text      = null;

            // 스페이스만 있는 경우도 있다. 이 경우도 @처리
            text = rng.Value2.ToString();
            text = text.TrimStart(' ');
            if (text != "")
            {
                sbText.Length = 0;
                sbText.Append(text);

                string[] words          = text.Split(splitChar);
                string   strConvertText = null;
                for (int k = 1; k < words.Length; k = k + 2)
                {
                    if (words[k] == "user" || words[k] == "class" || words[k] == "race" || words[k] == "br")
                    {
                        continue;
                    }

                    // Text All Data에서 ID를 검색한다.
                    if (localize == LocalizeSource.LOCAL_KOREAN)
                    {
                        strConvertText = TextAllDataTable.ConvertTag(words[k]);
                    }
                    else if (localize == LocalizeSource.LOCAL_JAPANESE)
                    {
                        strConvertText = TextAllDataTable.ConvertJapanText(words[k]);
                    }

                    if (strConvertText != null)
                    {
                        sbOrg.Length = 0;
                        sbNew.Length = 0;

                        sbOrg.Append("[");
                        sbOrg.Append(words[k]);
                        sbOrg.Append("]");

                        sbNew.Append("[");
                        sbNew.Append(strConvertText);
                        sbNew.Append("]");

                        sbText.Replace(sbOrg.ToString(), sbNew.ToString());
                    }
                }

                rng.Value2 = sbText.ToString();
            }
        }
Ejemplo n.º 2
0
        // 이미 로딩되었으면 True, 스레드로 넘기면 false를 반환
        public static bool OpenTextAllData(string strFileName, LocalizeSource localSource)
        {
            if (localSource == LocalizeSource.LOCAL_KOREAN ||
                localSource == LocalizeSource.LOCAL_JAPANESE)
            {
                if (textDataMap != null && textDataMap.Count > 0)
                {
                    return(true);
                }

                textDataMap     = new Dictionary <string, TextAllData>();
                dicConvertTag   = new Dictionary <string, string>();
                dicConvertJapan = new Dictionary <string, string>();

                currMap = textDataMap;
            }
            // 일본어 태그 변경은 필요없다.
            //else if(localSource == LocalizeSource.LOCAL_JAPANESE)
            //{
            //    if (textDataMapJap != null && textDataMapJap.Count > 0)
            //        return true;

            //    textDataMapJap = new Dictionary<string, TextAllData>();
            //    dicConvertJapan = new Dictionary<string, string>();

            //    currMap = textDataMapJap;
            //}

            if (appTextAllData == null)
            {
                textAllDataFileName = strFileName;

                appTextAllData = new Excel.Application();
                appTextAllData.Workbooks.Open(strFileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                                              Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);
            }

            Excel.Workbook workBook = appTextAllData.Workbooks[1];
            workBook.Activate();

            Excel.Worksheet sheet = (Excel.Worksheet)workBook.Sheets[LocalizeSource.LOCAL_KOREAN];
            usedRange = sheet.UsedRange;
            int rowCnt = usedRange.Rows.Count;

            sheet        = (Excel.Worksheet)workBook.Sheets[LocalizeSource.LOCAL_JAPANESE];
            usedRangeJap = sheet.UsedRange;

            MH4Global.pgbXLS.Minimum = 2;
            MH4Global.pgbXLS.Maximum = rowCnt;
            MH4Global.pgbXLS.Value   = 2;

            MH4Global.lbXLS.Text = "Load Text All Table...";
            MH4Global.lbXLS.Update();

            Thread[] trdList = new Thread[MH4Global.THREAD_MAX];
            for (int i = 0; i < MH4Global.THREAD_MAX; ++i)
            {
                ThreadTask task = new ThreadTask(i + 2, rowCnt + 1, MH4Global.THREAD_MAX);
                trdList[i] = new Thread(task.InsertTextAllData);
                trdList[i].IsBackground = true;
                trdList[i].Start();
            }

            return(false);
        }
Ejemplo n.º 3
0
        // 일본어 테이블에서 태그를 읽어와서 변경하고, 다시 XLS로 저장한다.
        public bool ConvertTagXLS(string fileName, LocalizeSource localize)
        {
            string nakedFileName = System.IO.Path.GetFileName(fileName);

            Excel.Application app = new Excel.Application();
            app.Workbooks.Open(fileName, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value,
                               Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value, Missing.Value);

            Excel.Workbook workBook = app.Workbooks[1];
            workBook.Activate();
            Excel.Worksheet sheet = (Excel.Worksheet)workBook.Sheets[1];

            Excel.Range rng;
            MH4Global.pgbXLS.Minimum = 2;
            MH4Global.pgbXLS.Maximum = sheet.UsedRange.Rows.Count + 1;
            MH4Global.lbXLS.Text     = "Load and Convert to Japan XLS... : " + nakedFileName;
            MH4Global.lbXLS.Update();


            if (MH4Global.IsSpecialQuestXLS(fileName))   // 스폐셜 퀘스트 문서
            {
                for (int i = 2; i < sheet.UsedRange.Rows.Count + 1; ++i)
                {
                    rng = sheet.UsedRange.get_Range("C" + i.ToString(), Missing.Value);
                    if (rng.Value2 != null)
                    {
                        ReplaceTag(rng, localize);
                    }

                    rng = sheet.UsedRange.get_Range("H" + i.ToString(), Missing.Value);
                    if (rng.Value2 != null)
                    {
                        ReplaceTag(rng, localize);
                    }

                    MH4Global.pgbXLS.Value = i;   // 프로그레스바는 행단위로 표시한다.
                }
            }
            else // 일반 퀘스트 문서
            {
                for (int i = 2; i < sheet.UsedRange.Rows.Count + 1; ++i)
                {
                    for (int j = 1; j < MH4Global.colList.Length; ++j)
                    {
                        rng = (Excel.Range)sheet.UsedRange.Cells[i, MH4Global.colList[j]];

                        if (rng.Value2 != null)
                        {
                            ReplaceTag(rng, localize);
                        }
                    }

                    MH4Global.pgbXLS.Value = i;   // 프로그레스바는 행단위로 표시한다.
                }
            }

            app.ActiveWorkbook.Close(true, Missing.Value, Missing.Value);
            MH4Global.lbXLS.Text = "Load & Convert to XLS Complete : " + nakedFileName;
            MH4Global.lbXLS.Update();
            return(true);
        }