again, question on create nim variant based on .NET class.

`IWorkbook.cs` of NPOI says 
    
    
    namespace NPOI.SS.UserModel
    {
      public interface IWorkbook : ICloseable
      {
        int ActiveSheetIndex { get; }
        
        int FirstVisibleTab { get; set; }
        ...
      }
    }
    
    
    Run

[this 
post](https://stackoverflow.com/questions/66725558/how-to-use-npoi-library-to-select-data-in-c-sharp)
 uses it like
    
    
            IWorkbook workbook;
            FileStream fs = new FileStream(fileName, FileMode.Open, 
FileAccess.Read);
            if (fileName.IndexOf(".xlsx") > 0)
                workbook = new XSSFWorkbook(fs);
            else if (fileName.IndexOf(".xls") > 0)
                workbook = new HSSFWorkbook(fs);
            //First sheet
    
    
    Run

so I tried to translated it as following, but failed to declare variant 
`workbook` which should be of `IWorkbook` in C# 
    
    
    var
        NPOI = clr.load("NPOI.dll")
        NPOIOOXML = clr.load("NPOI.OOXML.dll")
    
    var
        File = mscor.GetType("System.IO.File")
        
        HSSFWorkbook = NPOI.GetType("NPOI.HSSF.UserModel.HSSFWorkbook")
        XSSFWorkbook = NPOIOOXML.GetType("NPOI.XSSF.UserModel.XSSFWorkbook")
        IWorkbook = NPOI.GetType("NPOI.SS.UserModel.IWorkbook")
    
    var fs = @File.OpenRead(fileName);
    
    
    #~ var workbook: IWorkbook # does not work
    #~ var workbook: IWorkbook.GetType() # does not work
    #~ var workbook: IWorkbook.GetType # does not work
    
    if fileName.toLower().endsWith(".xlsx") :
        workbook = @XSSFWorkbook.new(fs);
    elif fileName.toLower().endsWith(".xls"):
        workbook = @HSSFWorkbook.new(fs);
    
    
    Run

Any fix? Thanks.

Btw, `var workbook = @WorkbookFactory.Create(fileName)` can be used no matter 
fileName is `XLS` or `XLSX`. But the question `create nim variant based on .NET 
class` maybe occur in other case.

Reply via email to