XML格式
<DataS>
  <User>
    <Attribute>
      <Name>名字</Name>
      <Value>A</Value>
    </Attribute>
    <Attribute>
      <Name>性名</Name>
      <Value>男</Value>
    </Attribute>
  </User>
  <Address>
      <Name>A</Name>
      <Value>北京</Value>
   </Address>
</DataS>目录里的XML有几十个,每个文件按目期命名,比如:
20100926-100201.XML(2010年,9月26号10点02分01秒)
20100926-100302.XML请问如何把所有XML的数据取出来,存成EXCEL?最好有代码!!
谢谢!

解决方案 »

  1.   

    将xml读到dataset ,然后用dataset 生成excel.
      

  2.   

    C# xml读写与dataset结合
    dataset 生成excel
    风行网络电影
    皮皮播放器下载
      

  3.   


    string[] ss = Directory.GetFiles(MapPath("存放xml的文件夹名")); 获得 改文件夹下所有的文件名返回成数组
     根据数组循环获得 文件名
     再用文件读取xml文件 存入dataset 再生成excel
      

  4.   


                if(!IsPostBack)
                {                
                    string[] ss = Directory.GetFiles(MapPath("dataxml"));
                    DataSet ds = new DataSet();
                    for (int i = 0; i < ss.Length; i++)
                    {
                        ds.ReadXml(ss[i].ToString().Trim());
                    }
                    DataTable dt = ds.Tables[0];
                    StringWriter sw = new StringWriter();
                    sw.WriteLine("Schemeid,MailCount");
                    foreach (DataRow dr in ds.Tables[0].Rows)
                    {
                        sw.WriteLine(dr["Schemeid"].ToString() + "," + dr["MailCount"].ToString());
                    }
                    sw.Close();                string name = DateTime.Now.ToString() + ".csv";//以当前时间为excel表命名                Response.AddHeader("Content-Disposition", "attachment; filename=" + Server.UrlEncode(name));                Response.ContentType = "vnd.ms-excel.numberformat:yyyy-MM-dd ";                Response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");                Response.Write(sw);                Response.End();
                }
      

  5.   

    foreach (string file in System.IO.Directory.GetFiles("", "*.xml", System.IO.SearchOption.AllDirectories))
    {
    FileInfo fi = new FileInfo(file);
    DataSet ds = new DataSet();
    ds.ReadXml(file);
    //或直接遍历XML获取数据,打开EXCEL模板赋值
    }public static bool ExportToExcel(DataTable table, string excelName, int[] columnIndexs, string[] columnHeads)
      {
      Excel.ApplicationClass oExcel = new Excel.ApplicationClass();
      Excel.Workbook obook = null;
      Excel.Worksheet oSheet = null;
      Excel.Range range = null;
      #endregion
      try
      {
      obook = oExcel.Workbooks.Add("");
      oSheet = (Excel.Worksheet)obook.Worksheets[1];
      int rCount, cCount;
      rCount = table.Rows.Count;
      cCount = table.Columns.Count;
      object obj = System.Reflection.Missing.Value;  if (cCount < columnIndexs.Length || cCount < columnHeads.Length)
      {
      throw new ArgumentOutOfRangeException("columnIndexs 与 columnHeads 长度必须一致。");
      }
      for (int i = 1; i <= columnIndexs.Length; i++)
      {
        
      range = (Excel.Range)oSheet.Columns.get_Item(i, obj);
      range.NumberFormatLocal = "@";
      }
      for (int c = 0; c < columnIndexs.Length; c++)
      {
      oSheet.Cells[1, c + 1] = columnHeads[c];
      for (int r = 1; r <= rCount; r++)
      {
      oSheet.Cells[r + 1, c + 1] = table.Rows[r - 1][columnIndexs[c]].ToString();
      }
      }
      obook.SaveCopyAs(excelName);
      obook.Close(false, System.Reflection.Missing.Value, System.Reflection.Missing.Value);
      return true;
      }
      catch (Exception ex)
      {
      throw ex;
      }
      finally
      {
      ystem.Runtime.InteropServices.Marshal.ReleaseComObject(range);
      System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
      System.Runtime.InteropServices.Marshal.ReleaseComObject(obook);
        
      oExcel.Quit();
      System.Runtime.InteropServices.Marshal.ReleaseComObject(oExcel);
        
      GC.Collect();
      }
      }
      

  6.   

     XmlDocument document = new XmlDocument();
                document.Load(@"aa.xml");
                XmlNode basicNode = document.DocumentElement;
                foreach (XmlNode node in basicNode.ChildNodes)
                {
                     //在这里判断
                    if (node.Attributes["ID"].Value.ToString().Trim() == "001")
                    {
                        foreach (XmlNode pnode in node.ChildNodes)
                        {
                            switch (pnode.Name)
                            {
                                //InnerText取值
                                case "Last_Name":
                                    string lastname = pnode.InnerText;
                                    break;                            default:
                                    break;
                            }
                        }
                    }
                }找到一个代码,可用,但只是取一个文件的一个值,如何取所有文件的一个值?
      

  7.   

    .Xml.XmlDocument dom = new System.Xml.XmlDocument(); 
                dom.LoadXml(xml); 
                foreach (System.Xml.XmlNode node in dom.ChildNodes) 
                {  
                  if(node.Name !="xml") 
                    Response.Write(GetNode(node));  
                } 
            }         string GetNode(System.Xml.XmlNode node) 
            { 
                string str = node.InnerText; 
                if (node.HasChildNodes) 
                { 
                    str = ""; 
                    foreach (System.Xml.XmlNode n in node.ChildNodes) 
                    { 
                        str += GetNode(n); 
                    } 
                } 
                return str; 
            }
      

  8.   

    dom.LoadXml(xml);  这个应该怎么写?
    我XML地址是 c:\xmlfiles\
    里面有
    20100926-100201.XML
    20100926-100301.XML
    20100926-100621.XML
    20100926-110522.XML
    .....
    我想把所有的XML中的"地址"节点的内容输出到XLS