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

标签 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" />

最佳答案

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

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

关于c# - 读取 Excel 单元格值并使用 C# 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54942044/

相关文章:

excel - Microsoft Graph API 无法更新 Excel 文件

excel - 用相同颜色标记一列中的相同字符串

r - 将数据从 R 导出到 Excel

c# - 为什么 xmlDocument.Select 返回零计数

c# - 使用属性和约定路由

c# - 播放声音,Windows Phone 7

c# - ASP.Net Core异常处理中间件

c# - 编译错误-您是否缺少using指令或程序集引用?

excel - 计算一个范围内至少有一个数字的列

javascript - 如何将 JavaScript 二维数组复制到剪贴板以将其粘贴到 excel 中?