【问题标题】:Return Object if True then use in loop如果为真则返回对象然后在循环中使用
【发布时间】:2018-01-26 01:56:59
【问题描述】:

我正在使用代码来测试某些文件是否存在,如果存在,请添加它们的路径以及它们的选项卡名称(当我将它们添加到 Excel 时)。它可以工作,但现在它有很多重复的代码。我想创建一个我调用的方法,如果为真则返回对象,如果文件不存在则返回任何内容。这是我的代码:

// 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)
}

如何将该代码简化为单个方法调用?对不起,如果这看起来很简单,但我还没有创建任何在条件语句上返回对象的方法。

【问题讨论】:

  • 你知道如何创建方法吗?从一个返回简单结果怎么样?使用条件从一个方法返回不同的结果并不比这复杂多少......只需尝试创建一个新方法,然后告诉我们您到底遇到了什么问题。

标签: c# excel office-interop vba


【解决方案1】:

如果为真,我将返回该对象,否则返回 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
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2015-11-24
    • 1970-01-01
    • 2019-09-28
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多