Excel Data Readerを使用して、一部のデータを Entity Framework データベースに読み込みます
以下のコードは機能していますが、さらに改良が必要です
まず IsFirstRowAsColumnNames が意図したとおりに機能していないようで、代わりに .Read を使用する必要があります。
私が最初に特定のシートを選択するために持っていたファッジは計画を台無しにしていました.誰でもこのExcelReader.Nameを手伝ってもらえますか?対立。
また、SQL クライアントの var name = reader["applicationname"].ToString() などのインデックスではなく、実際の列ヘッダー名を参照してデータを取得するとよいでしょう。
上記を達成できない場合、Excelデータを読み取るために使用できるより良い拡張機能はありますか。
public static void DataLoadAliases(WsiContext context)
{
const string filePath = @"Alias Master.xlsx";
var stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
var excelReader = filePath.Contains(".xlsx")
? ExcelReaderFactory.CreateOpenXmlReader(stream)
: ExcelReaderFactory.CreateBinaryReader(stream);
excelReader.IsFirstRowAsColumnNames = true;
excelReader.Read(); //skip first row
while (excelReader.Read())
{
if (excelReader.Name == "Alias Master")
{
var aliasId = excelReader.GetInt16(0);
var aliasName = excelReader.GetString(1);
//Prevent blank lines coming in from excel;
if (String.IsNullOrEmpty(aliasName)) continue;
context.Aliases.Add(new ApplicationAlias
{
AliasId = aliasId,
Name = aliasName,
});
}
else
{
excelReader.NextResult();
}
}
excelReader.Close();
context.SaveChanges();
}