我有使用NPOI的代碼。
我試圖讓一個對象將是一個HSSFWorkbook
或XSSFWorkbook
取決於Excel文件的版本。C# - 將變量類型傳遞給泛型方法
有可能有一個Type
並將其轉換爲通用方法以投射然後返回HSSFWorkbook
或XSSFWorkbook
?
而且如果它有效,我會以不同的方法使用GetWorkBook()
。
請參閱我對構造函數的評論。
public class ExcelReader
{
public ExcelReader(filePath)
{
var isXls = Path.GetExtension(_filePath) == ".xls";
// Is the following possible or is there any work around to get it work.
var type = isXls ? HSSFWorkbook : XSSFWorkbook;
var workbook = GetWorkBook<type>();
// Other init...
}
public T GetWorkBook<T>()
{
return (T)Workbook.GetSheetAt();
}
}
我想我大部分時間都會使用Workbook上繼承NPOI提供的'HSSFWorkbook'和'XSSFWorkbook'的接口,並且如果我需要專門爲'XSSFWorkbook'的方法,我會將接口轉換爲'XSSFWorkbook'。順便說一句,謝謝! – janmvtrinidad
在這種情況下,您的代碼看起來與替代方法非常相似。只需用你的界面替換對象。 –
它需要投射才能使用HSSF或XSSF的方法。 – janmvtrinidad