public async Task <List <ArkTradingRecord> > Parse(string fileName) { var records = new List <ArkTradingRecord>(); using (var package = new ExcelPackage()) { using (var stream = File.OpenRead(fileName)) { package.Load(stream); } var ws = package.Workbook.Worksheets[0]; var skipRows = 4; var startRow = skipRows + 1; for (var i = startRow; i <= ws.Dimension.End.Row; i++) { var record = new ArkTradingRecord { Fund = ws.Cells[i, 1].Text, Date = DateTime.Parse(ws.Cells[i, 2].Text), Direction = Enum.Parse <TradingDirection>(ws.Cells[i, 3].Text), Ticker = ws.Cells[i, 1].Text, CusIP = ws.Cells[i, 1].Text, Name = ws.Cells[i, 1].Text, Shares = int.Parse(ws.Cells[i, 1].Text), PercentOfEtf = double.Parse(ws.Cells[i, 1].Text), }; records.Add(record); } } return(await Task.FromResult(records)); }
public static ArkTradingEntity FromArkTradingRecord(ArkTradingRecord record) { return(new ArkTradingEntity { PartitionKey = record.RecordType.ToString().ToLowerInvariant(), RowKey = RowKeyHelper.ToRowKey(record.Date), RecordType = record.RecordType.ToString(), Fund = record.Fund, Date = record.Date, Direction = record.Direction.ToString(), Ticker = record.Ticker, CusIP = record.CusIP, Name = record.Name, Shares = record.Shares, PercentOfEtf = record.PercentOfEtf, }); }
public async Task <List <ArkTradingRecord> > Parse(string fileName) { var skipRows = 4; var records = new List <ArkTradingRecord>(); HSSFWorkbook hssfwb; using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read)) { hssfwb = new HSSFWorkbook(file); } DataFormatter formatter = new DataFormatter(); ISheet sheet = hssfwb.GetSheet("Sheet1"); var startRow = skipRows; for (int i = startRow; i <= sheet.LastRowNum; i++) { var row = sheet.GetRow(i); if (row == null) { continue; } var record = new ArkTradingRecord { Fund = formatter.FormatCellValue(row.GetCell(0)), Date = DateTime.Parse(formatter.FormatCellValue(row.GetCell(1))), Direction = Enum.Parse <TradingDirection>(formatter.FormatCellValue(row.GetCell(2))), Ticker = formatter.FormatCellValue(row.GetCell(3)), CusIP = formatter.FormatCellValue(row.GetCell(4)), Name = formatter.FormatCellValue(row.GetCell(5)), Shares = (int)row.GetCell(6).NumericCellValue, PercentOfEtf = row.GetCell(7).NumericCellValue, }; records.Add(record); } return(await Task.FromResult(records)); }
public async Task Save(ArkTradingRecord record) { var entity = ArkTradingEntity.FromArkTradingRecord(record); await repository.InsertOrMerge(entity).ConfigureAwait(false); }