读取Excel单元格值并使用C#反序列化

时间:2019-03-01 09:53:00

标签: c# excel

我有一个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);
                    }
                }
            }

我已经点击了this链接。
现在,我的要求是反序列化单元格值并形成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 :(得分:0)

您可以使用XDocument.Parse,例如:

inputData.id = XDocument.Parse(cell.Text).Root.Attribute("id").Value