sudhakarthikeyan Ответов: 1

Как использовать цикл for В строке json для получения всех строк


В excel столбец имеет следующие значения в формате json

farm_details (Coumn name in excelsheet)

     "Product1":"Zamin"  (Row1)
     "Product2":"Xavin"  (Row2)
     "Code1":"REO"       (Row3)
     "Code2":"RM"        (Row4)

Я отображаю вышеприведенные данные в excel я хочу вывести следующие данные

Product1   Product2    Code1   Code2

Для получения вышеописанного вывода я написал код следующим образом

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(dt.Rows[0]["farm_details"].ToString());
          string str = string.Empty;
          int columnindex = 43;

    foreach (var data in dict)
        {
              columnindex++;
              worksheet.Cells[2, columnindex].Value = data.Key;
        }


когда я запускаю приведенный выше код он показывает вывод следующим образом

Product1 (Row1) отображается только в выводе в excel

я хочу, чтобы все строки со строкой 1 к Row4 Произведения1 то product2 Код1 Код2

для получения вышеописанного вывода, какие изменения я должен внести. как использовать for loop, чтобы получить всю строку.

Что я уже пробовал:

В excel столбец имеет следующие значения в формате json

farm_details (Coumn name in excelsheet)

     "Product1":"Zamin"  (Row1)
     "Prodcut2":"Xavin"  (Row2)
     "Code1":"REO"       (Row3)
     "Code2":"RM"        (Row4)

Я отображаю вышеприведенные данные в excel я хочу вывести следующие данные

Prodcut1   Prodcut2    Code1   Code2

Для получения вышеописанного вывода я написал код следующим образом

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(dt.Rows[0]["farm_details"].ToString());
    string str = string.Empty;
    int columnindex = 43;

    foreach (var data in dict)
        {
              columnindex++;
              worksheet.Cells[2, columnindex].Value = data.Key;
        }

когда я запускаю приведенный выше код он показывает вывод следующим образом

Prodcut1 (Row1) отображается только в выводе в excel

я хочу, чтобы все строки со строкой 1 к Row4 Произведения1 то product2 Код1 Код2

для получения вышеописанного вывода, какие изменения я должен внести. как использовать for loop, чтобы получить всю строку

1 Ответов

Рейтинг:
2

Wendelius

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(dt.Rows[0]["farm_details"].ToString());

На данный момент вы берете значения только из первой строки таблицы данных, которая создается из данных Excel. Поэтому, если данные расположены на отдельных строках листа Excel, вам нужно объединить строки или выполнить цикл через все строки при использовании данных.

В любом случае вы должны учитывать, когда контекст изменяется так, что требуется другой объект json. Другими словами, если у вас, например, есть 80 строк в Excel, вам нужно учитывать, какие из них связаны друг с другом и когда изменяется объект json. Это, возможно, определено в некоторых других данных в другом столбце Excel...


[no name]

ладно.

для получения всех строк, как это сделать, используя петли.дайте мне знать.

[no name]

для получения кода строк ниже

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(dt.Rows[0]["farm_details"].Метод toString());
string str = строка.Пустой;
int columnindex = 43;

foreach (var data in dict)
{
columnindex++;
рабочий лист.Ячейки[2, columnindex].Value = data.Ключ;
}

Wendelius

Насколько я вижу проблема заключается в том что вы десериализуете только первое из таблицы данных

ДТ.Строк[0]

Если данные находятся в нескольких строках, выполните цикл по строкам таблицы данных. Что-то вроде

по каждому элементу(объекта datarow Row в ДТ.Строк) { ...

[no name]

var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(dt.Rows[0]["farm_details"].Метод toString());
string str = строка.Пустой;
int columnindex = 43;

foreach (var data in dict)
{
columnindex++;
рабочий лист.Ячейки[2, columnindex].Value = data.Ключ;
}

вы сказали, что перебираете строки таблицы данных

по каждому элементу(объекта datarow Row в ДТ.Строк) {

из приведенной выше строки ниже foreach(DataRow row in dt.Rows) {

какая строка должна быть добавлена.

потому что для петли я новичок в одном.

Wendelius

Я не совсем уверен, как эти данные изложены в вашем случае, но если вы попробуете что-то вроде

int columnindex = 43;
foreach (DataRow row in in dt.Rows) {
   var dict = JsonConvert.DeserializeObject<Dictionary<string, string>>(row["farm_details"].ToString());
    string str = string.Empty;

    foreach (var data in dict)
        {
              columnindex++;
              worksheet.Cells[2, columnindex].Value = data.Key;
        }
}

Приближает ли это вас к результату

[no name]

Спасибо. я попробую этот код и дам мне знать .

[no name]

я попробовал следующий код
int columnindex = 43;
foreach (DataRow row in in dt.Rows) {
var dict = JsonConvert.DeserializeObject&ЛТ;словарь&ЛТ;строку, строку&ГТ;>(строка["farm_details"].Метод toString());
string str = строка.Пустой;

foreach (var data in dict)
{
columnindex++;
рабочий лист.Ячейки[2, columnindex].Value = data.Ключ;
}
}

"Product1":"Zamin" (Строка 1)
"Prodcut2":"Xavin","Product1":"Yamin" (Строка 2)
"Код1":"РЭО" (Row3)
"Код2":"РМ" (Row4)
"Code3":"ТФК" (Row5)
"Code4":"ЛТФ" (Row6)
"Code5":"ЛТФ" (Row7)

всего 7 строк но я не получаю все строки я получаю 5 строк и более того отдельные вопросы которые должны быть получены

вывод я получаю следующий


Product1 Prodcut2 Prodcut1 Code1 Code2 Code3

Потому что product1 уже у меня есть. я хочу использовать disctinct.

используя вышеприведенный запрос, Как получить disctinct и получить все строки.

из моего вышесказанного, какие изменения нужно сделать.

Wendelius

Прости, но мне трудно понять, что тебе нужно. Поскольку теперь это нечто иное, чем первоначальный вопрос, я бы предложил опубликовать новый с четкими примерами исходных данных и ожидаемым результатом.