using NPOI.HPSF;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Xml;
using System.Xml.Schema; namespace myXMLReader
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void button1_Click(object sender, EventArgs e)
{
treeResult.Nodes.Clear();
readXml();
} private void readXml()
{
// todo
String sourcePath = "f:/test.xml"; System.Xml.XmlDocument sourceXml = new XmlDocument();
try
{
sourceXml.Load(sourcePath);
}
catch (XmlException e)
{
StringBuilder sb = addRootToXml(sourcePath);
sourceXml.LoadXml(sb.ToString());
}
catch (Exception e)
{
return;
} foreach (XmlNode rootNode in sourceXml.ChildNodes)
{
if (rootNode.NodeType == XmlNodeType.Element)
{
TreeNode tNode = new TreeNode(rootNode.Name);
readChildNode(rootNode, tNode);
treeResult.Nodes.Add(tNode);
}
} creatToExcel();
} private void readChildNode(XmlNode node, TreeNode tNode)
{
foreach (XmlNode childNode in node.ChildNodes)
{
if (childNode.NodeType != XmlNodeType.Element)
{
continue;
}
TreeNode tChildNode = new TreeNode(childNode.Name);
tNode.Nodes.Add(tChildNode);
if (childNode.HasChildNodes)
{
readChildNode(childNode, tChildNode);
}
}
}
private StringBuilder addRootToXml(string path)
{
TextReader reader = File.OpenText(path);
StringBuilder sb = new StringBuilder(reader.ReadToEnd());
sb.Insert(, "<XML>");
sb.Append("</XML>");
return sb;
} private int writeRowIndex = ;
private void creatToExcel()
{
int startColumn = ; HSSFWorkbook hssfworkbook = new HSSFWorkbook(); DocumentSummaryInformation dsi = PropertySetFactory.CreateDocumentSummaryInformation();
dsi.Company = "NPOI Team";
hssfworkbook.DocumentSummaryInformation = dsi; SummaryInformation si = PropertySetFactory.CreateSummaryInformation();
si.Subject = "NPOI SDK Example";
hssfworkbook.SummaryInformation = si; ISheet sheet = hssfworkbook.CreateSheet("Sheet1"); writeNodeToExcel(sheet, treeResult.Nodes[], startColumn); FileStream file = new FileStream(@"f:/test.xls", FileMode.Create);
hssfworkbook.Write(file);
file.Close(); } private void writeNodeToExcel(ISheet sheet, TreeNode node, int columnIndex)
{
IRow row = sheet.CreateRow(getRow());
ICell cell = row.CreateCell(columnIndex);
cell.SetCellValue(node.Text);
for (int i = ; i < node.Nodes.Count; i++)
{
writeNodeToExcel(sheet, node.Nodes[i], columnIndex + );
}
} private int getRow()
{
return writeRowIndex++;
}
}
}

最近需要一个读取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. 6天通吃树结构—— 第三天 Treap树

    原文:6天通吃树结构-- 第三天 Treap树 我们知道,二叉查找树相对来说比较容易形成最坏的链表情况,所以前辈们想尽了各种优化策略,包括AVL,红黑,以及今天 要讲的Treap树. Treap树算是 ...

  2. mysql_oracle_随机查询几条记录

    数据库的随机查询SQL 1. Oracle,随机查询20条 select * from ( select  *  from 表名 order by dbms_random.value ) where ...

  3. oracle_SQL 实验查询及删除重复记录 依据条件 (row)

    除数据库表中的重复记录 根据条件 ① 创建表准备数据 创建表 tab_test -- Create table create table TAB_TEST ( ID NUMBER, NAME NVAR ...

  4. HDOJ 3518 Boring counting

    SAM基本操作 拓扑寻求每个节点  最左边的出现left,最右边的出现right,已经有几个num ...... 对于每个出现两次以上的节点.对其所相应的一串子串的长度范围 [fa->len+1 ...

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

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

  6. DbModel

    DbModel 前言 我们都知道EF可以生成Dbmodel,系统生成的Model有时候并不是我们想要的,如何我们要生成自己的Model,那么久需要我们手动的去修改T4模版,T4是对“Text Temp ...

  7. AngularJS应用开发思维之3:依赖注入

    找不到的API? AngularJS提供了一些功能的封装,但是当你试图通过全局对象angular去 访问这些功能时,却发现与以往遇到的库大不相同. $http 比如,在jQuery中,我们知道它的AP ...

  8. 高性能双端js模板---simplite

    simplite是一款js实现的模板引擎,它能够完成浏览器端js模版和node服务器端js模板的数据渲染,渲染性能达到引擎的极限. 渲染性能十分突出. 支持浏览器端和node服务器端模板渲染. 它简单 ...

  9. Github资源汇集

    Github资源汇集 突然发现申请博客园已经两年有余,没有发表过一篇文章,十分惭愧.言归正传,先分享一下两年来收集的部分编程资源,大部分为Github上的项目.虽然网上这样的分享已不在少数,但不如我理 ...

  10. 关于Android开发中导出jar包后的资源使用问题解决

    我们经常遇到一个需求,就是给别人使用我们工程的时候,为了能够屏蔽代码,把代码封装成jar包提供给第三方使用,但是这样我们的资源文件怎么给对方用呢? 其实并不用这么的复杂,下面就介绍一下具体的方法 一, ...