1. using NPOI.HPSF;
  2. using NPOI.HSSF.UserModel;
  3. using NPOI.SS.UserModel;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.ComponentModel;
  7. using System.Data;
  8. using System.Drawing;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Text;
  12. using System.Threading.Tasks;
  13. using System.Windows.Forms;
  14. using System.Xml;
  15. using System.Xml.Schema;
  16.  
  17. namespace myXMLReader
  18. {
  19. public partial class Form1 : Form
  20. {
  21. public Form1()
  22. {
  23. InitializeComponent();
  24. }
  25.  
  26. private void button1_Click(object sender, EventArgs e)
  27. {
  28. treeResult.Nodes.Clear();
  29. readXml();
  30. }
  31.  
  32. private void readXml()
  33. {
  34. // todo
  35. String sourcePath = "f:/test.xml";
  36.  
  37. System.Xml.XmlDocument sourceXml = new XmlDocument();
  38. try
  39. {
  40. sourceXml.Load(sourcePath);
  41. }
  42. catch (XmlException e)
  43. {
  44. StringBuilder sb = addRootToXml(sourcePath);
  45. sourceXml.LoadXml(sb.ToString());
  46. }
  47. catch (Exception e)
  48. {
  49. return;
  50. }
  51.  
  52. foreach (XmlNode rootNode in sourceXml.ChildNodes)
  53. {
  54. if (rootNode.NodeType == XmlNodeType.Element)
  55. {
  56. TreeNode tNode = new TreeNode(rootNode.Name);
  57. readChildNode(rootNode, tNode);
  58. treeResult.Nodes.Add(tNode);
  59. }
  60. }
  61.  
  62. creatToExcel();
  63. }
  64.  
  65. private void readChildNode(XmlNode node, TreeNode tNode)
  66. {
  67. foreach (XmlNode childNode in node.ChildNodes)
  68. {
  69. if (childNode.NodeType != XmlNodeType.Element)
  70. {
  71. continue;
  72. }
  73. TreeNode tChildNode = new TreeNode(childNode.Name);
  74. tNode.Nodes.Add(tChildNode);
  75. if (childNode.HasChildNodes)
  76. {
  77. readChildNode(childNode, tChildNode);
  78. }
  79. }
  80. }
  81. private StringBuilder addRootToXml(string path)
  82. {
  83. TextReader reader = File.OpenText(path);
  84. StringBuilder sb = new StringBuilder(reader.ReadToEnd());
  85. sb.Insert(, "<XML>");
  86. sb.Append("</XML>");
  87. return sb;
  88. }
  89.  
  90. private int writeRowIndex = ;
  91. private void creatToExcel()
  92. {
  93. int startColumn = ;
  94.  
  95. HSSFWorkbook hssfworkbook = new HSSFWorkbook();
  96.  
  97. DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
  98. dsi.Company = "NPOI Team";
  99. hssfworkbook.DocumentSummaryInformation = dsi;
  100.  
  101. SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
  102. si.Subject = "NPOI SDK Example";
  103. hssfworkbook.SummaryInformation = si;
  104.  
  105. ISheet sheet = hssfworkbook.CreateSheet("Sheet1");
  106.  
  107. writeNodeToExcel(sheet, treeResult.Nodes[], startColumn);
  108.  
  109. FileStream file = new FileStream(@"f:/test.xls", FileMode.Create);
  110. hssfworkbook.Write(file);
  111. file.Close();
  112.  
  113. }
  114.  
  115. private void writeNodeToExcel(ISheet sheet, TreeNode node, int columnIndex)
  116. {
  117. IRow row = sheet.CreateRow(getRow());
  118. ICell cell = row.CreateCell(columnIndex);
  119. cell.SetCellValue(node.Text);
  120. for (int i = ; i < node.Nodes.Count; i++)
  121. {
  122. writeNodeToExcel(sheet, node.Nodes[i], columnIndex + );
  123. }
  124. }
  125.  
  126. private int getRow()
  127. {
  128. return writeRowIndex++;
  129. }
  130. }
  131. }

最近需要一个读取xml,将节点写入Excel的功能,还没有完善,暂时记录一下。

读取xml并将节点保存到Excal的更多相关文章

  1. C#读取xml文件指定节点下的值

    #region 读取xml文件指定节点下的值 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(result); XmlNode root ...

  2. java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查

    一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...

  3. .net中读取xml文件中节点的所有属性信息

    功能描述: 将数据以xml的格式记录成配置文件,需要获取配置文件中的数据时,则获取对应的配置文件,读取配置文件里对应节点的所有属性. 逻辑实现: 1.将数据配置好在xml文件中. 2.获取xml文件中 ...

  4. C#中读取xml文件指定节点

    目录(?)[-] XmlDocumentSelectSingleNode方法的使用 XmlDocumentSelectNodes方法的使用 通过节点属性查找指定节点   参考:Select XML N ...

  5. 读取xml文件中节点

    /// <summary> /// /// </summary> /// <param name="xmlpath">节点路径</para ...

  6. C#从数据库读取数据到DataSet并保存到xml文件

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.IO; pub ...

  7. Java获取XML节点总结之读取XML文档节点

    dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...

  8. 读取XML文件的节点内的内容

    <?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...

  9. PHP读取XML文件数据获取节点值

    最近在接入渠道的时候遇到接口返回是xml数据.现在接口数据返回json数据格式比较常见. 如何获取xml里面真正数据? 对象结果集合单个值的强制转换处理.(直接代码说明) demo示例:  创建xml ...

随机推荐

  1. linux_inux中find批量删除空文件及空文件夹脚本

    1.{}和之间有一个空格 2.find . -name 之间也有空格 3.exec 是一个后续的命令,{}内的内容代表前面查找出来的文件 linux下批量删除空文件(大小等于0的文件)的方法 rm - ...

  2. CQRS 示例

    CQRS 示例 上一篇:<IDDD 实现领域驱动设计-CQRS(命令查询职责分离)和 EDA(事件驱动架构)> 学习架构知识,需要有一些功底和经验,要不然你会和我一样吃力,CQRS.EDA ...

  3. 深度解析javascript中的浅复制和深复制

    原文:深度解析javascript中的浅复制和深复制 在谈javascript的浅复制和深复制之前,我们有必要在来讨论下js的数据类型.我们都知道有Number,Boolean,String,Null ...

  4. Fun<>,匿名方法,Lambda表达式 冒泡排序C#

    大头文 分享,进步 冒泡排序C#实现,使用委托,包括三种方式:Fun<>,匿名方法,Lambda表达式 冒泡排序是一种简单的排序方法,适合于小量数字排序,对于大量数字(超过10个),还有更 ...

  5. BIZTALK项目中WEB引用WEBSERVICES服务时候报错

    近期工作中须要完毕通过BIZTALK完毕调用WEBLOGIC公布的WebServices服务,环境搭建好后,打开VS开发工具新建一个BIZTALK项目,加入WEB引用将对方公布的地址拷贝上去,能够正常 ...

  6. jquery 直接调用 wcf,面向服务的SOA架构 ( 第三天)

    所谓万事 具备,只欠东风了!! 接下来就是 wcf 的调用, 首先 在客户端下,随便 写一个 html页面,然后写入如下方法: <script src="scripts/jquery. ...

  7. JqueryAjax异步加载在ASP.NET

    前台代码 <script src="Scripts/jquery-1.4.1.min.js" type="text/javascript">< ...

  8. IOS程序启动的过程

    IOS程序启动按照以下5个步骤执行 1.main函数 IOS程序启动首先执行main函数 2.UIApplicationMain 执行main函数中的UIApplicationMain函数,这个函数会 ...

  9. 分布式基础学习(2)分布式计算系统(Map/Reduce)

    二. 分布式计算(Map/Reduce) 分 布式式计算,同样是一个宽泛的概念,在这里,它狭义的指代,按Google Map/Reduce框架所设计的分布式框架.在Hadoop中,分布式文件 系统,很 ...

  10. Linq to Sql:N层应用中的查询(上) : 返回自定义实体

    原文:Linq to Sql:N层应用中的查询(上) : 返回自定义实体 如果允许在UI层直接访问Linq to Sql的DataContext,可以省去很多问题,譬如在处理多表join的时候,我们使 ...