这几天公司师兄喊我做个小东西,他提供TreeView和DataTable数据源,让我写可以把数据导出到Word的功能,其中,TreeView作为表头,即列名。DataTable作为具体表的数据;TreeView如果节点下面还有子节点的话,就要在Word中分离单元格,实现如图那种列名。小弟也不是高手,在网上找了很久。。没有关于这方面的东西。。有也不全面。。而且功能也不太行。。于是我话费了一天多的时间根据网上找的Word操作和自己以测试心态写的代码。。。竟然成功了。。。
但是师兄还让我在Word中写目录。。这个我暂时没什么思路。。。就先把自己的代码共享下。。希望帮到你们。。里面的那个for循环我话费了一下午+两小时才搞定的。。太他妈的绕了。。。
注意:这段代码可以运行,但dataTable的列名必须和TreeView节点+子节点的个数一样。。。不然就会报错。。ToWord()里面可以给自己写的TreeView对象,也可以给TreeView控件(可以把上面手动添加TreeView代码复制到加载事件里,为TreeView提供数据),只要dataTable的列名和TreeView节点+子节点的个数一样就OK。。。CSDN里面怎么给图片。。。这个我不知道。。。感兴趣的自己导出去看下。。。同时也求教高手。。。导出目录有什么思路提供没。。。QQ:619870447 欢迎指教
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Word导出
{
/// <summary>
///word导出
///编写人:
///日期:2012-5-5
/// </summary>
public partial class ToWord : Form
{
public ToWord()
{
InitializeComponent();
}
/// <summary>
/// 导出文件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDC_Click(object sender, EventArgs e)
{
//手动添加DataTable数据
DataTable tb = new DataTable();
//手动添加列数据
tb.Columns.Add("姓名");
tb.Columns.Add("喜欢");
tb.Columns.Add("讨厌");
tb.Columns.Add("农历");
tb.Columns.Add("阳历");
tb.Columns.Add("身高");
tb.Columns.Add("体重");
tb.Columns.Add("性别");
//手动添加行数据
tb.Rows.Add("***", "女人", "男人", "1992-11-18", "1992-12-11", "171cm","65kg", "男");
tb.Rows.Add("***", "女人", "男人", "1992-11-18", "1992-12-11", "171cm", "65kg", "男");
tb.Rows.Add("***", "女人", "男人", "1992-11-18", "1992-12-11", "171cm", "65kg", "男");