NPOI を使用して .xls および .xlsx 拡張子の Excel ファイルを読み取ることができます。次を using セクションに追加するだけで済みます。
using NPOI.HSSF.UserModel;
using NPOI.HPSF;
using NPOI.POIFS.FileSystem;
using NPOI.XSSF.UserModel;
using NPOI.SS.UserModel;
主なことは、ファイルを開くときに拡張子を区別する必要があるため、適切なコンポーネントを使用し、ISheet インターフェイスを使用して、ファイル拡張子とは無関係にシートを参照できるようにすることです。
//We get the file extension
fileExt = Path.GetExtension(fileName);
//Declare the sheet interface
ISheet sheet;
//Get the Excel file according to the extension
if (fileExt.ToLower() == ".xls")
{
//Use the NPOI Excel xls object
HSSFWorkbook hssfwb;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
hssfwb = new HSSFWorkbook(file);
}
//Assign the sheet
sheet = hssfwb.GetSheet(sheetName);
}
else //.xlsx extension
{
//Use the NPOI Excel xlsx object
XSSFWorkbook hssfwb;
using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
hssfwb = new XSSFWorkbook(file);
}
//Assign the sheet
sheet = hssfwb.GetSheet(sheetName);
}
Excel オブジェクトを取得したら、それを読み取るだけで済みます (NPOI では、行と列はゼロベースです)。
//Loop through the rows until we find an empty one
for (int row = 0; row <= sheet.LastRowNum; row++)
{
//Get the cell value
string cellValue = sheet.GetRow(row).GetCell(0).ToString().Trim(); //In the method GetCell you specify the column number you want to read, in the method GetRow you spacify the row
string cellValue2 = sheet.GetRow(row).GetCell(0).StringCellValue.Trim();
}
セルの値を読み取るには、.ToString() メソッドまたは StringCellValue プロパティを使用できますが、StringCellValue は文字列セルでのみ機能し、数値セルと日付セルでは例外がスローされることに注意してください。