使用c#将xls文件转换为xml文件

时间:2015-12-22 14:59:17

标签: c# xml linq interop xls

我是c#的新手,我必须将excel文件转换为带有简单节点的xml。到目前为止,我已经用互操作完成了它。我编写了部分代码来打开xls,关闭xls,通过Get_range方法获取单元格的值,然后释放对象。

但是,现在我必须输出一个xml文件,我必须转到一个特定的单元格并打印一个节点和一个单元格的值。它也可以是一个简单的纯文本,我可以输出,或者我们也可以使用linq Xelement和Xattributes。我想在使用get_range:

xlWorkSheet.get_Range("B3", "B3").Value2

我需要在excel中打印相同的内容。

我不知道该怎么做,请指导我。生成的xml应如下所示:

<WpData>
<WpType>Design</WpType>
<ReviewType>half</ReviewType>
<References>[1] https:///SysService/SysService_AsrDet/trunk/_doc/20_Design


</References>
<Author>deh</Author>
<Reviewer>abc</Reviewer>
</WpData>

提前感谢。

1 个答案:

答案 0 :(得分:0)

您正在搜索xml序列化。您应该像这样定义类:

[Serializable]
public class WpData
{
   public string WpType { get; set; }
   public string ReviewType { get; set; }
   public string References { get; set; }
   public string Author { get; set; }
   public string Reviewer { get; set; }
}

注意课堂上的Serializable属性。

然后,您应该从Excel数据填充对象并使用XmlSerializer

WpData xmlSerializibleObject = new WpData();

//....
//here you should fill it from excel based on your data

//And then you can just serialize it to string 
string xmlString;
XmlSerializer xmlSerializer = new XmlSerializer(xmlSerializibleObject.GetType());

using(StringWriter textWriter = new StringWriter())
{
    xmlSerializer.Serialize(textWriter, xmlSerializibleObject);
    xmlString = textWriter.ToString();
}

xmlString将拥有您需要的xml,您可以从excel中正确填充对象。