C# 从xml文件中获取值并逐行写入excel工作表
我有一个情况在这里,我必须写一个简单的WPF应用程序与一个文本框和一个按钮,文本框是“恩”,“fr”,“ru”,等等 我有很多这样的文件和大量的数据。这是一个文件C# 从xml文件中获取值并逐行写入excel工作表,c#,.net,xml,excel,xpath,C#,.net,Xml,Excel,Xpath,我有一个情况在这里,我必须写一个简单的WPF应用程序与一个文本框和一个按钮,文本框是“恩”,“fr”,“ru”,等等 我有很多这样的文件和大量的数据。这是一个文件 <?xml version="1.0" encoding="UTF-8"?> <params> <btestsir xml:lang="fr" tId="HHXAF">Test Sirène :</btestsir> <btestsir xml:lang="en"
<?xml version="1.0" encoding="UTF-8"?>
<params>
<btestsir xml:lang="fr" tId="HHXAF">Test Sirène :</btestsir>
<btestsir xml:lang="en" tId="HHXAF">Test Siren :</btestsir>
<btestsir xml:lang="pt" tId="HHXAF">Testar sirene:</btestsir>
<btestsir xml:lang="ru" tId="HHXAF">Тест сирены:</btestsir>
<btestbeep xml:lang="fr" tId="HHXA2">Test Bip :</btestbeep>
<btestbeep xml:lang="en" tId="HHXA2">Test Beep :</btestbeep>
<btestbeep xml:lang="pt" tId="HHXA2">Testar aviso sonoro:</btestbeep>
<btestbeep xml:lang="ru" tId="HHXA2">Тест гудка:</btestbeep>
</params>
我试过这个
StreamReader reader = new StreamReader(strFilepath);
string line;
while(null != (line = reader.ReadLine()))
{
string[] s1 = line.Split('>');
string[] s2 = s1[1].Split('<');
if(s1[0].Contains("xml:lang="))
{
}
}
StreamReader=newstreamreader(strFilepath);
弦线;
while(null!=(line=reader.ReadLine())
{
字符串[]s1=line.Split('>');
string[]s2=s1[1]。拆分(“我将使用xpath选择器,而不是尝试对xml文件进行字符串操作。因此,您可以执行类似于声明节点列表变量并填充它的操作,即:
使用System.xml;
...
XmlNodeList子节点
childNodes=xml.SelectNodes(“ParentNodeofbtestsirNode/btestsirnode[@lang='en']);
...
然后继续对每个XmlNode进行操作,例如
foreach(子节点中的xmlnodexnd)
{
'...
}我将使用xpath选择器,而不是尝试对xml文件进行字符串操作。因此,您可以执行类似于声明节点列表变量并填充它的操作,即:
使用System.xml;
...
XmlNodeList子节点
childNodes=xml.SelectNodes(“ParentNodeofbtestsirNode/btestsirnode[@lang='en']);
...
然后继续对每个XmlNode进行操作,例如
foreach(子节点中的xmlnodexnd)
{
'...
}像这样的东西应该可以做到:
XmlDocument doc = new XmlDocument();
doc.Load("sample.xml");
var root = doc.DocumentElement;
var elements = root.XPathSelectElements("//[@xml:lang='en']");
foreach (var child in elements)
{
//child.Name >> will give you btestsir
//child.Value >> will give you Test Siren :
}
要创建/管理电子表格,请使用EPPlus,类似这样的工具:
XmlDocument doc = new XmlDocument();
doc.Load("sample.xml");
var root = doc.DocumentElement;
var elements = root.XPathSelectElements("//[@xml:lang='en']");
foreach (var child in elements)
{
//child.Name >> will give you btestsir
//child.Value >> will give you Test Siren :
}
使用EPPlus创建/管理电子表格的方法并不理想。你应该正确使用XML。我知道,但我也知道这段代码是2002年的代码,我做得再好不过了,顺便说一句,这不是一个XML文件,看起来可能是这样。此外,为了得到理想的解决方案,我在这里提出了。这是你正在做的方法不是很理想。你应该正确地使用XML。我知道,但我也知道这段代码是2002年的代码,我做得再好不过了,顺便说一句,它不是XML文件,可能看起来像。此外,为了得到理想的解决方案,我在这里提出。但主要问题是如何将这些键值对按行放入Excel工作表row@Debhere我有在我对EPPLus示例的回答中添加了一个链接。不幸的是,没有人能牵着你的手浏览精确的解决方案。这是一个问答网站。但主要问题是如何将这些键值对逐行放入Excel工作表row@Debhere我已经添加了一个链接到我对EPPLus示例的回答。不幸的是,没有人能牵着你的手走过精确的解决方案。这是一个问答网站。但主要的问题是如何将这些键值对逐行放入excel工作表,获取我的代码也在做的值,这可能不是有效的方法,但这些值应该放入不同语言的不同excel工作表。您现在正在写入新的excel文件,您只是想知道如何创建/选择工作表或者您已经有一个可能要添加到的现有文件了吗?是的,我正在为每种语言创建一个新文件,然后在excel表格中为该特定语言逐行添加值,请更新我的问题,然后为每种语言创建一个新表格,说出您使用的两个字符代码,如“fr”和“en”然后,当s2[0]中有该值时,使用它来选择工作表。然后找到下一个空行并将其附加到那里。使用类似dim lastRow的整数lastRow=工作表(“fr”).Range(“A65536”).End(xlUp)。row我已更新了xml文件,请提供更多详细信息,如“ParentNodeofbtestsirNode/btestsirnode”[
让我很困惑,它的文件很大,我无法更改这个字符串,因为这个节点在重复r次后不断更改,每次都会更改为新节点。因此,它必须根据lang='en'
获取这个节点的节点值和内部文本。你能帮我吗?但主要问题是如何将这些键值对放到Excel工作表中逐行获取我的代码正在执行的值可能不是有效的方法,但是这些值应该放在不同语言的不同excel工作表中。您现在正在写入一个新的excel文件,您只是想知道如何创建/选择工作表,或者您是否已经有一个可能要附加的现有文件?是的,我正在创建为每种语言创建一个新文件,然后在excel表格中按行添加该特定语言的值,请更新我的问题,然后为每种语言创建一个新表格,说出您使用的两个字符代码,如“fr”和“en”,然后在s2[0]中输入该值使用它来选择您的工作表。然后找到下一个空行并将其附加到那里。使用类似dim lastRow的整型lastRow=工作表(“fr”)。范围(“A65536”)。结束(xlUp)。row我已更新了xml文件,请您提供更多详细信息,如“ParentNodeofbtestsirNode/btestsirnode”[
让我很困惑,它的文件很大,我无法更改此字符串,因为此节点在重复r次后不断更改,每次都会更改为新节点。因此,此节点值和此节点的内部文本必须基于lang='en'
获取,您能帮我吗。
XmlDocument doc = new XmlDocument();
doc.Load("sample.xml");
var root = doc.DocumentElement;
var elements = root.XPathSelectElements("//[@xml:lang='en']");
foreach (var child in elements)
{
//child.Name >> will give you btestsir
//child.Value >> will give you Test Siren :
}