Чтение матрицы из Excel и цикл с использованием c # DataTable - PullRequest
0 голосов
/ 27 декабря 2018

Я читаю Excel, содержащий матричную таблицу, подобную следующей: enter image description here

Мне нужно ввести значения в таблицу SQL со следующим синтаксисом:

insert into t values (1,18,1.943)

insert into t values (1,18,1.524)

insert into t values (1,18,1.395)

и т. Д.

я пытался сделать следующее:

DataTable dt = new DataTable();
        dt = ReadExcelFile(Server.MapPath("/Migration/" + txtExcelName.Text + ".xlsx"), false);
        if (dt.Rows.Count > 0)
        {
            StringBuilder str = new StringBuilder();
            DataRow myrow = null;
            DataColumn mycol = null;
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                myrow = dt.Rows[i];
                if (i == 0)
                {
                    myrow = dt.Rows[i +1];
                }

                for (int j = 1; j < dt.Columns.Count; j++)
                {
                    mycol = dt.Columns[j];
                    try
                    {
                        str.Append("insert into HousingLoanInsuranceRate values (" + dt.Rows[i][mycol] + "," + myrow[0] + ",'" + dt.Rows[i+1][mycol] + "',0,0)");
                        str.Append("<br/>");
                    }
                    catch (Exception ex)
                    {

                    }
                }


            }
            litMessage.Text += str.ToString();
        }

Но, похоже, мой код не возвращает желаемый результат

Благодарим вас за помощь.

1 Ответ

0 голосов
/ 27 декабря 2018
for (int i = 1; i < dt.Rows.Count; i++) // start from 1
{
    myrow = dt.Rows[i];
    //if (i == 0)
    //{
    //    myrow = dt.Rows[i +1];
    //}

    for (int j = 1; j < dt.Columns.Count; j++)
    {
        try
        {
            // CHANGES MADE HERE ---------------------------------------vvvvvvvvvvvvv--------------------------vvvvvvvv
            str.Append("insert into HousingLoanInsuranceRate values ("+ dt.Rows[0][j] + "," + myrow[0] + "," + myrow[j] + ",0,0)");
            str.Append("<br/>");
        }
        catch (Exception ex)
        {
        }
    }
}

Это должно решить вашу проблему.
Однако имейте в виду, что этот код уязвим для внедрения SQL.Рассмотрите возможность использования параметризованного запроса.

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