2016-08-25 58 views
0

我需要帮助这个.... 我有Excel文件的数据。 我需要将它导出到XMLFILE,使用XML文本在VB.NET
我需要一些XMLFILE AA结果:从Excel导出到XML使用XML文字+ VB.NET

<?xml version="1.0" standalone="no"?> 
<soapenv:Envelope xmlns:soapenv="http://..."> 
    <soapenv:Header/> 
    <soapenv:Body xmlns:wsu="http://....xsd">   
      <Header> 
       <Verb>cancel</Verb> 
      </Header> 
      <Request> 
       <ID>VALUE-1</ID> 
       <ID>VALUE-2</ID> 
       <ID>VALUE-3</ID> 
       ...... 
      </Request> 
    </soapenv:Body> 
</soapenv:Envelope> 

其中value-1,值2,...等等 - 我让他们从罗恩NUMER细胞i和列数= 2 在VB.NET中环我这样做是这样的:

While Not this condition 
    While Not (String.IsNullOrEmpty(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Cells(iRow, 1).Value)) 
    'Check next condition with IF 
        If LCase(Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Cells(iRow, 25).Value) = "y" Then 
        'Add XElement object into another one XML Element from main XDocument 
         objRequestCANCEL.Add(objIDCANCEL) 
         'Add Value for this new Element 
         objIDCANCEL.Value = Globals.ThisAddIn.Application.ActiveWorkbook.ActiveSheet.Cells(iRow, 2).Value 
        End If 
        'Go to next Row and do the same - add XELement if condition is OK here 
    iRow = iRow + 1 
    End While 

这里objIDCANCEL作为的XElement在主要的XDocument 我在这种情况下XElements使用像Variables.But现在我需要像创建文档没有像这样的变量:

Dim XDoc As XDocument = <?xml version="1.0" standalone="no"?> 
            <soapenv:Envelope xmlns:soapenv="http://..."> 
             <soapenv:Header/> 
             <soapenv:Body xmlns:wsu="http://....xsd"> 
              <Header> 
               <Verb>create</Verb>  
               <ID><%= varValue %> </ID> 
               .....HERE I NEED ADD IN LOOP ALL VALUES FROM ALL ROWS IN EXCEL FILE..... 
              </Header> 
              <Request> 
              </Request> 
             </RequestMessage> 
            </soapenv:Body> 
           </soapenv:Envelope> 

请给我写信,我该如何重写这个Loop?

+0

你不能在那里放入任何循环语句,你只能使用LINQ'From .. Select'表达式。 –

+0

但我的情况如何看起来像LINQ而不是循环? –

回答

0

下面是使用LINQ和工作表以读出的行1 .. 3的第一列(1)和填充某些XML文本的简单示例:然后

Dim excel As Excel.Application = New Excel.Application() 
    excel.Workbooks.Open("sheet1.xlsx") 
    Dim sheet As Excel._Worksheet = excel.ActiveWorkbook.ActiveSheet 
    Dim cells As Excel.Range = sheet.Cells 

    Dim doc As XDocument = <?xml version="1.0"?> 
          <root> 
           <values> 
            <%= From i In Enumerable.Range(1, 3) Select <value> 
                        <%= cells(i, 1).Value %> 
                       </value> %> 
           </values> 

          </root> 

    doc.Save(Console.Out) 

输出是例如

<root> 
    <values> 
    <value>1</value> 
    <value>2</value> 
    <value>3</value> 
    </values> 
</root> 

根据需要改编XML格式和Excel工作表内容。

+0

我认为这是我需要的!非常感谢! –