我正在使用代码来测试某些文件是否存在,如果存在,请添加它们的路径以及它们的选项卡名称(当我将它们添加到Excel时)。它的工作原理,但现在它是很多重复的代码。我想创建一个我调用的方法,如果为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
}
}