Мой код:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using OfficeOpenXml;
using Parser.Models;
namespace Parser
{
class Program
{
static void Main(string[] args)
{
var articles = new List<Article>();
var groups = new List<Group>();
var competitors = new List<Competitor>();
var file = new FileInfo("zoomos.xlsx");
using (ExcelPackage package = new ExcelPackage(file))
{
var worksheet = package.Workbook.Worksheets[1];
int colCount = worksheet.Dimension.End.Column; //get column Count
int rowCount = worksheet.Dimension.End.Row; //get row count
for (int i = 2; i <= rowCount; i++)
{
articles.Add(new Article
{
Value = worksheet.Cells[i,1].Value.ToString()
});
for (int j = 19; j <= colCount; j++)
{
competitors.Add(new Competitor //вот тут ошибка, первый add - проходит.
{
Name = worksheet.Cells[1,j].Value.ToString() ?? "No Name",
Price = Double.Parse(worksheet.Cells[i,j].Value.ToString() ?? "0",CultureInfo.InvariantCulture)
});
}
groups.Add(new Group
{
SubGroup = worksheet.Cells[i,2].Value.ToString(),
Category = worksheet.Cells[i,3].Value.ToString(),
Brand = worksheet.Cells[i,4].Value.ToString() ?? "",
Model = worksheet.Cells[i,5].Value.ToString(),
FinalPrice = Double.Parse(worksheet.Cells[i,6].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
ExtraCharge = Double.Parse(worksheet.Cells[i,7].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
MarginMin = Double.Parse(worksheet.Cells[i,8].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
MarginAvg = Double.Parse(worksheet.Cells[i,9].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
MarginMax = Double.Parse(worksheet.Cells[i,10].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
EntryPrice = Double.Parse(worksheet.Cells[i,11].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
Price = Double.Parse(worksheet.Cells[i,12].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
MinPrice = Double.Parse(worksheet.Cells[i,15].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
AvgPrice = Double.Parse(worksheet.Cells[i,17].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
MaxPrice = Double.Parse(worksheet.Cells[i,18].Value.ToString() ?? "0",CultureInfo.InvariantCulture),
});
}
}
using (var db = new Context())
{
db.Articles.AddRange(articles);
db.Competitors.AddRange(competitors);
db.Groups.AddRange(groups);
}
Console.WriteLine("Done");
}
}
}
Ошибка следующего рода:
Суть в том что элемент точно есть и я добавил проверку на зануленные элементы
Что я делаю не так?
Попробуйте так:
for (int j = 19; j <= colCount; j++)
{
var name = worksheet.Cells[1,j]?.Value?.ToString() ?? "No Name";
Double.TryParse(worksheet.Cells[i,j]?.Value?.ToString(), NumberStyles.Any, CultureInfo.InvariantCulture, out price)
competitors.Add(new Competitor //вот тут ошибка, первый add - проходит.
{
Name = name,
Price = price
});
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть веб-форма, на которой существует несколько выпадающих списков и некая таблица с заполненными даннымиполе Pocket_num соответствует выбору...
У меня есть объект типа Hashtable, необходимо создать событие, которое бы отслеживало добавление элемента и указывало бы ключ, по которому я добавляю...
Пишу приложение которые часто (и много) перебирает данных с xlsx таблиц поставщиков