2017-08-17 30 views
0

我使用代碼來測試某些文件是否存在,如果它們存在,請添加它們的路徑以及它們的選項卡名稱(將它們添加到Excel時)。它的工作原理,但現在它是很多重複的代碼。我想創建一個我調用的方法,並返回該對象,如果該文件不存在,則返回true。這是我的代碼:返回對象如果爲True,然後在循環中使用

// Add Open_SI 
if (File.Exists(CurrentWorkbook.DataPath + "OPEN_SI-en-us.xlsx")) 
{ 
     FileInfo OpenSI = new FileInfo(CurrentWorkbook.DataPath + "OPEN_SI-en-us.xlsx"); 
     if (OpenSI.Length > 5000) 
       File.Copy(CurrentWorkbook.DataPath + "OPEN_SI-en-us.xlsx", CurrentWorkbook.DataPath + "OPEN_SI.xlsx", true); 

     if (File.Exists(CurrentWorkbook.DataPath + "OPEN_SI.xlsx")) 
       worksheets.Add(new WorkSheets() { Path = (CurrentWorkbook.DataPath + "OPEN_SI"), TabName = "SI" }); 
} 

// Add Pipe Sheet 
if (File.Exists(CurrentWorkbook.DataPath + "Pipe_Supply-en-us.xlsx")) 
{ 
     FileInfo Pipe = new FileInfo(CurrentWorkbook.DataPath + "Pipe_Supply-en-us.xlsx"); 
     if (Pipe.Length > 5000) 
       File.Copy(CurrentWorkbook.DataPath + "Pipe_Supply-en-us.xlsx", CurrentWorkbook.DataPath + "Pipe.xlsx", true); 

     if (File.Exists(CurrentWorkbook.DataPath + "Pipe.xlsx")) 
       worksheets.Add(new WorkSheets() { Path = (CurrentWorkbook.DataPath + "Pipe"), TabName = "Pipe" }); 
} 

我再說一遍,代碼無數次,如果我做,當然我的變化需要,使其向所有的人。在那之後,我在Excel中其添加爲標籤使用此代碼:

for (var i = 0; i < worksheets.Count; i++) 
{ 
     excelApp.Run("CopySheets", worksheets[i].Path, worksheets[i].TabName, CurrentWorkbook.Version) 
} 

如何代碼縮減爲一個單獨的方法調用?對不起,如果這看起來很簡單,但我還沒有創建任何返回條件語句上的對象的方法。

+0

你知道如何創建方法?如何從一個返回簡單的結果?使用條件從一個方法返回不同的結果並不複雜得多......只要嘗試創建一個新的方法,並讓我們知道你到底在問什麼。 –

回答

0

如果爲true,我會返回對象,否則返回null。

是這樣的:

MyType CheckFile(string fn){ 
    MyType myObject = new MyType(); 
    if(File.Exists(fn)) 
    { 
     //do work 
     return myObject; 
    }else{ 
     return null; 
    } 
} 

,並使用它會是這樣的:

string[] files = {"file1.xlsx","file2.xlsx"}; 
for(int i=0;i<fiels.Count;i++){ 
    MyType obj = CheckFile(files[i]); 
    if(obj != null){ 
     //object exists, do some work 
    }else{ 
     //object doesn't exist, do alternative work 
    } 
}