запись Excel-файла в базу данных не работает, если обработка второй строки должна отличаться от первой - PullRequest
0 голосов
/ 07 апреля 2019

Для школы мне нужно написать код на C #.Я новичок в C # и неопытен.Я хочу с кодом C # прочитать файл Excel и записать столбцы 6-27 из строки 1 в базе данных как сущность Planid .Строка 2 и выше из тех же столбцов должна также записывать в базу данных, но как сущность Planstatus .

я узнал, как запрограммировать это для строки 1, но если я добавлю код для строки2 (string Planstatus = xlbasis.Cells [row> 1, 5 + column] .Value2.ToString ();) возникает ошибка: «Ошибка System.Runtime.InteropServices.COMException:« Uitzondering van HRESULT: 0x800A03EC ».Я не могу понять, что не так.

for (int row = 1; row <=256; row++)
            {
                if (xlRange.Cells[row] != null)
                 {

                    string Personeelid = xlbasis.Cells[row, 4].Value2.ToString();
                    string Week = xlbasis.Cells[row, 1].Value2.ToString();
                    string Dag = xlbasis.Cells[row, 3].Value2.ToString();
                    //string Planstatus = "B";
                    string Plantype = "Basis";
                    int timeSlices = 21;

                    for (int column = 1; column < timeSlices; column++)
                    {
                        //if (xlRange.Cells[column] != null)
                       // {
                            string Planid =     xlbasis.Cells[1, 5 + column].Value2.ToString();
                            string Planstatus = xlbasis.Cells[row > 1, 5 + column].Value2.ToString();


                            // Schrijf ingelezen informatie weg naar de database (alleen als de informatie gevuld is)
                            if (!string.IsNullOrEmpty(Personeelid) && !string.IsNullOrEmpty(Week) && !string.IsNullOrEmpty(Dag) && !string.IsNullOrEmpty(Planid))
                            {
                                string checkQuery = "SELECT Count(Distinct(Personeelid)) FROM [Planning] WHERE Personeelid='" + Personeelid + "' and Week='" + Week + "' and Dag='" + Dag + "' and Planid = '" + Planid + "' ";  //Deze haal je uit kolom 1;
                                SqlCommand checkCommand = new SqlCommand(checkQuery, con);
                                int result = (int)checkCommand.ExecuteScalar();


                                if (result > 0 )
                                {
                                    string query = "UPDATE [Planning] SET  Week= '" + Week + "', Dag= '" + Dag + "' , Personeelid= '" + Personeelid + "', Planstatus='" + Planstatus + "' , Planid='" + Planid + "' , Plantype='" + Plantype + "'  WHERE Personeelid='" + Personeelid + "' and Week= '" + Week + "' and Dag = '" + Dag + "' and Planid = '" + Planid +"' ";
                                    SqlCommand ins = new SqlCommand(query, con);
                                    ins.ExecuteNonQuery();
                                    Console.WriteLine("Data geupdate");
                                }
                                else  /*if (result < 1 || result2 < 1 || result3 < 1 )*/
                                {
                                    string query = "INSERT INTO [Planning] (Week, Dag, Personeelid, Planstatus, Planid, Plantype) VALUES ( '" + Week + "' , '" + Dag + "' , '" + Personeelid + "', '" + Planstatus + "' , '" + Planid + "' , '" + Plantype + "' )";
                                    SqlCommand ins = new SqlCommand(query, con);
                                    ins.ExecuteNonQuery();
                                    Console.WriteLine("Data toegevoegd");
                                }
                            }
                        }

                        // Als gehele tabblad verwerkt is dit melden in console
                        Console.WriteLine("Excelbestand rooster 1.16,tabblad 'Basis' naar database geschreven");

Как я могу достичь своей цели, чтобы записать информацию из строки 2 (en выше) как planstatus объекта в базе данных?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...