Napisałam program który porównuje dwa pliki .csv najpierw sprawdza towary po symbolu czy się zgadzają a następnie ceny.. Niektóre ceny mam z przecinkiem więc przekonwertowałam dane z pliku, ceny na float.. Dostaje komunikat "Nieprawidłowy format ciągu wyjściowego" ? Pytanie co robię źle?
class Program
{
static void Main(string[] args)
{
string strFilePath = @".csv";
string strFilePath1 = @".csv";
string strFilePath2 = @".csv";
DataTable towary = ConvertCSVtoDataTable(strFilePath);
DataTable towary1 = ConvertCSVtoDataTable1(strFilePath1);
DataTable towary2 = new DataTable(strFilePath2);
//Console.WriteLine("Liczba wczytanych rekordów: " + towary.Rows.Count);
using (StreamWriter str = new StreamWriter((strFilePath2), true, Encoding.GetEncoding(1252)))
{
str.WriteLine(@"Symbol;Nazwa;CenaNetto1;CenaNetto2");
}
try
{
for (int i = 0; i < towary.Rows.Count; i++)
for (int y = 0; y < towary1.Rows.Count; y++)
{
{
float a = float.Parse(towary.Rows[i]["CenaNetto1"].ToString()); //W tym miejscu pojawia się komunikat
float b = float.Parse(towary1.Rows[y]["CenaNetto1"].ToString());
if (towary.Rows[i]["Symbol"].Equals(towary1.Rows[y]["Symbol"]))
{
Console.WriteLine("Sa równe" + towary.Rows[i]["Symbol"] + " " + towary1.Rows[y]["Symbol"]);
if (a!=b)
{
string sym = Convert.ToString(towary.Rows[i]["Symbol"]);
Console.WriteLine("Nie sa rowne, tabela1: " + towary.Rows[i]["CenaNetto1"] + "tabela2: " + towary1.Rows[y]["CenaNetto1"]);
using (StreamWriter str = new StreamWriter((strFilePath2), true, Encoding.GetEncoding(1252)))
{
str.WriteLine(String.Format("{0}; {1}; {2}; {3}", towary.Rows[i]["Symbol"], towary.Rows[i]["Nazwa"], towary.Rows[i]["CenaNetto1"], towary1.Rows[y]["CenaNetto1"]));
str.Close();
}
}
}
}
}
}
catch (IOException e)
{
Console.WriteLine($"Wyjątki: '{e}'");
}
Console.ReadKey(true);
}
public static DataTable ConvertCSVtoDataTable(string strFilePath)
{
DataTable dt = new DataTable();
using (StreamReader sr = new StreamReader(strFilePath))
{
string[] headers = sr.ReadLine().Split(';');
foreach (string header in headers)
{
dt.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(';');
DataRow dr = dt.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
dt.Rows.Add(dr);
}
}
return dt;
}
public static DataTable ConvertCSVtoDataTable1(string strFilePath1)
{
DataTable dt1 = new DataTable();
using (StreamReader sr = new StreamReader(strFilePath1))
{
string[] headers = sr.ReadLine().Split(';');
foreach (string header in headers)
{
dt1.Columns.Add(header);
}
while (!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(';');
DataRow dr = dt1.NewRow();
for (int i = 0; i < headers.Length; i++)
{
dr[i] = rows[i];
}
dt1.Rows.Add(dr);
}
}
return dt1;
}
}
}