Ejemplo n.º 1
0
        /// <summary>
        /// データ変換ツールからPathLink.txtを作成する。とりあえずそのまま移植してその後リファクタリング
        /// </summary>
        public void DataConvert(string filePath)
        {
            IXLWorksheet  sh           = null;
            List <string> filePathList = new List <string>();


            try
            {
                //データ変換ツールを開いてリストを作成します。
                FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                XLWorkbook wb = new XLWorkbook(fs, XLEventTracking.Disabled);
                sh = wb.Worksheet("変換設定");

                //ファイルパスを抜く セルの検索が無いのでC1からC下限まで逐次検索
                for (int i = 1; i <= sh.LastRowUsed().RowNumber(); i++)
                {
                    string path = sh.Cell($"D{i}").Value.ToString();
                    if (sh.Cell($"C{i}").Value.ToString() == "変換ファイル名(フルパス)" && path != "")
                    {
                        filePathList.Add(path);
                    }
                }
            }
            catch (System.IO.FileNotFoundException)
            {
                MessageBox.Show(filePath + "が見つかりません", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }catch (System.IO.IOException)
            {
                MessageBox.Show("データ変換ツールを一旦閉じてください", "Error", MessageBoxButtons.OK);
                return;
            }
            catch (System.Exception)
            {
                MessageBox.Show("変換設定のシートが見つかりませんでした", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }



            //ファイルパルの取得完了したので生死判定と拡張子判定
            if (!DeadOrAlive(filePathList))
            {
                return;
            }

            progress prg = new progress();

            prg.Show();
            Stopwatch stp = new Stopwatch();

            prg.wholeProgress.Maximum = filePathList.Count;
            prg.wholeProgress.Minimum = 0;
            prg.wholeProgress.Value   = 0;

            //データ取得処理を行う。
            foreach (string list in filePathList)
            {
                stp.Start();
                FileStream fs = new FileStream(list, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
                XLWorkbook wb = new XLWorkbook(fs, XLEventTracking.Disabled);

                prg.wholeLabel.Text = new FileInfo(list).Name;
                prg.wholeProgress.Value++;
                prg.singleProgress.Maximum = wb.Worksheets.Count;
                prg.singleProgress.Minimum = 0;
                prg.singleProgress.Value   = 0;

                Application.DoEvents();
                foreach (IXLWorksheet sheet in wb.Worksheets)
                {
                    prg.singleLabel.Text = sheet.Name;
                    prg.singleProgress.Value++;
                    prg.Update();
                    //System.Threading.Thread.Sleep(1000);    //1秒エミュレート

                    switch (sheet.Name)
                    {
                    case "ランプ部品":
                        break;

                    case "サウンド部品":
                        break;

                    case "モータ部品":
                        break;

                    case "選択テーブル部品":
                        break;

                    case "SEL":
                        break;

                    case "パターン":
                        break;

                    case "PAT":
                        break;

                    case "TB":
                        break;

                    case "関数部品":
                        break;

                    case "サウンドフレーズ部品":
                        break;
                    }
                    //System.Console.WriteLine("シートの処理:" + sheet.Name);
                }
            }
            prg.Dispose();
            stp.Start();
            System.Console.WriteLine("処理時間:" + stp.Elapsed);
        }
Ejemplo n.º 2
0
        //EEplus版
        public void DataConvertEE(string filePath)
        {
            List <string> filePathList = new List <string>();

            try
            {
                //データ変換ツールを開いてリストを作成します。
                ExcelPackage   excel = new ExcelPackage(new FileInfo(filePath));
                ExcelWorksheet sh    = excel.Workbook.Worksheets["変換設定"];   //シートがない場合はnullが返る

                if (sh == null)
                {
                    MessageBox.Show("変換設定のシートが見つかりませんでした", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return;
                }

                for (int i = 1; i <= sh.Dimension.Rows + 1; i++)
                {
                    string path = sh.Cells[$"D{i}"].Value == null ? "": sh.Cells[$"D{i}"].Value.ToString();
                    if (sh.Cells[$"C{i}"].Value == null ? false : sh.Cells[$"C{i}"].Value.ToString().ToString() == "変換ファイル名(フルパス)" && path != "")
                    {
                        filePathList.Add(path);
                    }
                }
            }
            catch (System.IO.FileNotFoundException notFound)
            {
                MessageBox.Show(filePath + "が見つかりません" + "\n" + notFound, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            catch (System.IO.IOException ioExp)
            {
                MessageBox.Show("データ変換ツールを一旦閉じてください" + "\n" + ioExp, "Error", MessageBoxButtons.OK);
                return;
            }


            //ファイルパルの取得完了したので生死判定と拡張子判定
            if (!DeadOrAlive(filePathList))
            {
                return;
            }


            progress prg = new progress();

            prg.Show();
            Stopwatch stp = new Stopwatch();

            prg.wholeProgress.Maximum = filePathList.Count;
            prg.wholeProgress.Minimum = 0;
            prg.wholeProgress.Value   = 0;


            //データ取得処理を行う。
            foreach (string list in filePathList)
            {
                stp.Start();
                ExcelPackage excel = new ExcelPackage(new FileInfo(list));

                prg.wholeLabel.Text = new FileInfo(list).Name;
                prg.wholeProgress.Value++;
                prg.singleProgress.Maximum = excel.Workbook.Worksheets.Count;
                prg.singleProgress.Minimum = 0;
                prg.singleProgress.Value   = 0;

                Application.DoEvents();
                foreach (ExcelWorksheet sheet in excel.Workbook.Worksheets)
                {
                    prg.singleLabel.Text = sheet.Name;
                    prg.singleProgress.Value++;
                    prg.Update();
                    //System.Threading.Thread.Sleep(1000);    //1秒エミュレート
                    switch (sheet.Name)
                    {
                    case "ランプ部品":
                        break;

                    case "サウンド部品":
                        break;

                    case "モータ部品":
                        break;

                    case "選択テーブル部品":
                        break;

                    case "SEL":
                        break;

                    case "パターン":
                        break;

                    case "PAT":
                        break;

                    case "TB":
                        break;

                    case "関数部品":
                        break;

                    case "サウンドフレーズ部品":
                        break;
                    }
                    //System.Console.WriteLine("シートの処理:" + sheet.Name);
                }
                //excel.Dispose();    //GCの前に殺す
            }

            prg.Dispose();
            stp.Stop();
            System.Console.WriteLine("処理時間EE:" + stp.Elapsed);
        }