//◎ //************************************************************************** //日常点検がされたかどうかの判定 //引数: //戻値: //************************************************************************** public static bool CheckDailyCheckData(string dataFilePath, string date) { OpenOffice calc = new OpenOffice(); try { calc.OpenFile(dataFilePath); //当月日常点検ファイルをを開く calc.SelectSheet("Sheet1"); // sheetを取得 //1行目から日付をチェックしていく int i = 0; for (; ;) { Application.DoEvents(); string buff = calc.sheet.getCellByPosition(0, i).getFormula(); if (buff.IndexOf(date) >= 0) { return(true); } if (buff == "") { return(false); } i++; } } catch { return(false); } finally { calc.CloseFile(); } }
public bool SaveDailyCheck() { OpenOffice calc = new OpenOffice(); try { //当月点検データファイルが存在するかどうかの判定 string date = DateTime.Now.ToString("yyyy年MM月dd日 HH:mm:ss"); //dateは"yyyy年MM月dd日 HH:mm:ss"の形式で保存 string year = date.Substring(0, 4); string month = date.Substring(5, 2); if (!System.IO.File.Exists(Constants.日常点検FolderPath + year + "年" + month + "月.ods")) { //既存検査データがなければ新規作成 File.Copy(Constants.日常点検FolderPath + "format.ods", Constants.日常点検FolderPath + year + "年" + month + "月.ods"); } //当月日常点検ファイルを開く string filepath = Constants.日常点検FolderPath + year + "年" + month + "月.ods"; calc.OpenFile(filepath); // sheetを取得 calc.SelectSheet("Sheet1"); int newRow = 0; for (; ;) //使用されているセルの最終行を検索する { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, newRow).getFormula() == "") { break; } newRow++; } //最終行にデータを追加 int i = 0; foreach (var data in new string[] { date, "OK", State.OperatorName }) { calc.cell = calc.sheet.getCellByPosition(i, newRow); calc.cell.setFormula(data); i++; } // Calcファイルを上書き保存して閉じる if (!calc.SaveFile()) { return(false); } return(true); } catch { return(false); } finally { calc.CloseFile();//calcファイルが開いている場合のみクローズ処理する } }
public static int Count;//高電圧印加までの時間カウントダウン用 //専用メソッド◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆ //************************************************************************** //検査スペック、作業者一覧のロード(parameter.odsファイルより読み出し) //引数:なし //戻値:bool値 //************************************************************************** public static bool LoadParameter() { OpenOffice calc = new OpenOffice(); Action <string> splashMessage = (mess) => { if (SplashForm._form != null) { SplashForm._form.SetLabel(mess); } }; try { //すべての要素をクリア State.Parameter耐圧スペックBcr.Clear(); State.Parameter絶縁スペックBcr.Clear(); State.Parameter耐圧スペックQ890.Clear(); State.Parameter絶縁スペックQ890.Clear(); State.Parameter耐圧スペックAUR.Clear(); State.Parameter絶縁スペックAUR.Clear(); State.ParameterOperator.Clear(); //parameterファイルを開く calc.OpenFile(Constants.ParameterFilePath); int i = 0;//行インデックス // sheetを取得 calc.SelectSheet("SpecBcr"); //耐電圧試験 規格値の読み出し splashMessage("BC-R耐電圧試験 規格値のロード・・・"); i = 2;//3行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 耐電圧試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter耐圧スペックBcr.Add(spec); i++; } //絶縁抵抗試験 規格値の読み出し splashMessage("BC-R絶縁抵抗試験 規格値のロード・・・"); i = 10;//11行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 絶縁抵抗試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter絶縁スペックBcr.Add(spec); i++; } // sheetを取得 calc.SelectSheet("SpecQ890"); //耐電圧試験 規格値の読み出し splashMessage("Q890耐電圧試験 規格値のロード・・・"); i = 2;//3行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 耐電圧試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter耐圧スペックQ890.Add(spec); i++; } //絶縁抵抗試験 規格値の読み出し splashMessage("Q890絶縁抵抗試験 規格値のロード・・・"); i = 10;//11行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 絶縁抵抗試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter絶縁スペックQ890.Add(spec); i++; } // sheetを取得 calc.SelectSheet("SpecAur"); //耐電圧試験 規格値の読み出し splashMessage("AUR耐電圧試験 規格値のロード・・・"); i = 2;//3行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 耐電圧試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 漏れ電流 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter耐圧スペックAUR.Add(spec); i++; } //絶縁抵抗試験 規格値の読み出し splashMessage("AUR絶縁抵抗試験 規格値のロード・・・"); i = 10;//11行目から読み込む for (; ;) { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, i).getFormula() == "") { break; } var spec = new 絶縁抵抗試験スペック() { ステップ = calc.sheet.getCellByPosition(0, i).getFormula(), CH1 = calc.sheet.getCellByPosition(1, i).getFormula(), CH2 = calc.sheet.getCellByPosition(2, i).getFormula(), CH3 = calc.sheet.getCellByPosition(3, i).getFormula(), CH4 = calc.sheet.getCellByPosition(4, i).getFormula(), CH5 = calc.sheet.getCellByPosition(5, i).getFormula(), CH6 = calc.sheet.getCellByPosition(6, i).getFormula(), CH7 = calc.sheet.getCellByPosition(7, i).getFormula(), CH8 = calc.sheet.getCellByPosition(8, i).getFormula(), 印加電圧 = Double.Parse(calc.sheet.getCellByPosition(9, i).getFormula()), 印加時間 = Double.Parse(calc.sheet.getCellByPosition(10, i).getFormula()), 絶縁抵抗値 = Double.Parse(calc.sheet.getCellByPosition(11, i).getFormula()) }; Parameter絶縁スペックAUR.Add(spec); i++; } // sheetを取得 "OperatorName" calc.SelectSheet("OperatorName"); //作業者一覧の読み出し splashMessage("作業者一覧ののロード・・・"); i = 1;//行インデックス for (; ;) { Application.DoEvents(); string name = calc.sheet.getCellByPosition(1, i).getFormula(); if (name == "予約" || i == 11) { break; } ParameterOperator.Add(name); i++; } return(true); } catch { return(false); } finally { calc.CloseFile(); } }
//************************************************************************** //試験データの保存 //引数: //戻値: //************************************************************************** public static bool SaveTestData(List <string> testData) { string dataFilePath = ""; //State.date = dt.ToString("yyyyMMdd,HH:mm:ss"); var year = State.date.Substring(0, 4); var month = State.date.Substring(4, 2); dataFilePath = Constants.検査データBcrFolderPath + year + "年" + month + "月.ods"; //PC4内に当月試験データファイルがなければ新規作成する if (!System.IO.File.Exists(dataFilePath)) { File.Copy(Constants.検査データBcrFolderPath + "format.ods", dataFilePath); } OpenOffice calc = new OpenOffice(); try { //parameterファイルを開く calc.OpenFile(dataFilePath); // sheetを取得 calc.SelectSheet("Sheet1"); //使用されているセルの最終行を検索する int newRow = 1; //2行目からが試験データです for (; ;) //使用されているセルの最終行を検索する { Application.DoEvents(); if (calc.sheet.getCellByPosition(0, newRow).getFormula() == "") { break; } newRow++; } //最終行にデータを追加 int i = 0; foreach (var data in testData) { calc.cell = calc.sheet.getCellByPosition(i, newRow); calc.cell.setFormula(data); i++; } // Calcファイルを上書き保存して閉じる if (!calc.SaveFile()) { return(false); } return(true); } catch { return(false); } finally { calc.CloseFile(); } }