Считайте значение ячейки Excel и удалите сериализацию, используя c # - PullRequest
0 голосов
/ 01 марта 2019

У меня есть лист Excel, в котором у меня есть значения, которые похожи на это:

<Element id="1" Name="Some Name" Value="4" Unit="Some UNit" />

Теперь из моего кода на C # я читаю этот Excel.

У меня в приложении есть файл класса, аналогичный

public class InputData{

  [DataMember(Name = "id")]
  public string id { get; set; }

  [DataMember(Name = "Name")]
  public string Name { get; set; }

    [DataMember(Name = "Value")]
  public string Value { get; set; }

    [DataMember(Name = "Unit")]
  public string Unit { get; set; }
}

Я могу прочитать значение ячейки, используя следующий код:

foreach (var worksheet in Workbook.Worksheets(@"C:\Test\Book1.xlsx"))
            {
                foreach (var row in worksheet.Rows)
                {
                    foreach (var cell in row.Cells)
                    {
                        Console.WriteLine(cell.Text);
                    }
                }
            }

Я следовал эта ссылка для этого.
Теперь мое требование состоит в десериализации значения ячейки и формировании списка InputData.

List<InputData> lst = new List<InputData>();

InputData inputData = new InputData;
inputData.id ="" ; //assign value
inputData.Name ="" ; //assign value
inputData.Value ="" ; //assign value
inputData.Unit ="" ; //assign value

lst.Add(inputData);

Я хочу добавить это в цикл, ноЯ не знаю, как десериализовать это значение ячейки, поскольку оно не совсем в формате XML.
Единственный грубый способ, которым я мог придумать, - это разделение на основе пробелов и доступ к значениям.

Может кто-нибудь дать мне лучшее решение, пожалуйста.

ПРИМЕЧАНИЕ

Раньше мне было непонятно, но я имел в виду, что каждая ячейка в моем приложении Excel имеет подобный тип данных.Я пытаюсь перебрать каждую ячейку и создать список.

РЕДАКТИРОВАТЬ

foreach (var row in worksheet.Rows)
{
     foreach (var cell in row.Cells)
     {
          Console.WriteLine(cell.Text);    

       Console.WriteLine(XDocument.Parse(cell.Text).Root.Attribute("id").Value);

          Console.ReadLine();
      }
}

В первой строке он печатает это, как указано выше.

<Element id="1" Name="Some Name" Value="4" Unit="Some UNit" />

1 Ответ

0 голосов
/ 01 марта 2019

Вы можете использовать XDocument.Parse, например:

inputData.id = XDocument.Parse(cell.Text).Root.Attribute("id").Value
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...