读取xml并将节点保存到Excal
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的更多相关文章
- C#读取xml文件指定节点下的值
#region 读取xml文件指定节点下的值 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(result); XmlNode root ...
- java中XML操作:xml与string互转、读取XML文档节点及对XML节点增删改查
一.XML和String互转: 使用dom4j程式变得很简单 //字符串转XML String xmlStr = \"......\"; Document document = D ...
- .net中读取xml文件中节点的所有属性信息
功能描述: 将数据以xml的格式记录成配置文件,需要获取配置文件中的数据时,则获取对应的配置文件,读取配置文件里对应节点的所有属性. 逻辑实现: 1.将数据配置好在xml文件中. 2.获取xml文件中 ...
- C#中读取xml文件指定节点
目录(?)[-] XmlDocumentSelectSingleNode方法的使用 XmlDocumentSelectNodes方法的使用 通过节点属性查找指定节点 参考:Select XML N ...
- 读取xml文件中节点
/// <summary> /// /// </summary> /// <param name="xmlpath">节点路径</para ...
- C#从数据库读取数据到DataSet并保存到xml文件
using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.IO; pub ...
- Java获取XML节点总结之读取XML文档节点
dom4j是Java的XML API,用来读写XML文件的.目前有很多场景中使用dom4j来读写xml的.要使用dom4j开发,需要下载导入dom4j相应的jar文件.官网下载:http://www. ...
- 读取XML文件的节点内的内容
<?xml version="1.0" encoding="utf-8" ?> <data> <tag3>15</ta ...
- PHP读取XML文件数据获取节点值
最近在接入渠道的时候遇到接口返回是xml数据.现在接口数据返回json数据格式比较常见. 如何获取xml里面真正数据? 对象结果集合单个值的强制转换处理.(直接代码说明) demo示例: 创建xml ...
随机推荐
- C++调用一个成员函数的需求this指针的情况
1.虚成员函数,因为需要this展望虚表指针的指针 2.在数据成员的操作部件的功能 #include "stdafx.h" #include <iostream> #i ...
- Mono 4 和Jexus 5.6
Mono 4 和Jexus 5.6 概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mv ...
- UVA Don't Get Rooked
主题如以下: Don't Get Rooked In chess, the rook is a piece that can move any number of squaresverticall ...
- PHP的垃圾回收机制详解
原文:PHP的垃圾回收机制详解 最近由于使用php编写了一个脚本,模拟实现了一个守护进程,因此需要深入理解php中的垃圾回收机制.本文参考了PHP手册. 在理解PHP垃圾回收机制(GC)之前,先了解一 ...
- Set Matrix Zeroes -- LeetCode
原题链接: http://oj.leetcode.com/problems/set-matrix-zeroes/ 这是一个矩阵操作的题目,目标非常明白,就是假设矩阵假设有元素为0,就把相应的行和列上面 ...
- CKPlayer从Cookie里读取上次播放记录的一个demo
<!DOCTYPE html><html><head> <meta http-equiv="Content-Type" content=& ...
- C语言学习-数据结构 - 倒插法顺序表
// test20161106.cpp : Defines the entry point for the console application. // #include "stdafx. ...
- java设计模式之单例模式(七种方法)
单例模式:个人认为这个是最简单的一种设计模式,而且也是在我们开发中最常用的一个设计模式. 单例模式的意思就是只有一个实例.单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例.这个 ...
- 使用AndroidStudio快速开发教程
关于AndroidStudio的使用 参考:http://www.codes51.com/article/detail_98914.html 1.对于开发环境的通性:编写 调试 视图 一般的开发 ...
- Java项目生成静态页面
第一次做项目需要生成静态页面,网上很多大牛对将网页生成静态页面有很多异议.说一下我的看法. 不外乎有以下因素: 1.从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种 ...