コード例 #1
0
        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));
        }
コード例 #2
0
 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,
     });
 }
コード例 #3
0
        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));
        }
コード例 #4
0
        public async Task Save(ArkTradingRecord record)
        {
            var entity = ArkTradingEntity.FromArkTradingRecord(record);

            await repository.InsertOrMerge(entity).ConfigureAwait(false);
        }