C# 利用NPOI导出WORD

利用NPOI进行无office控件的导出,网上有很多关于excel的导出,但是对于word的导出很少,我现在将在工作中关于导出word的代码上传,希望对大家有所帮助。本文使用的NPOI2.1.3.1版本。温馨提示:如果导出的文件在word能打开,在office中打开报错,请检查文本是否设置style。

    public partial class ExpTableInfoManagerForm
    {
   
        public ExpTableInfoManagerForm()
        {
   
            InitializeComponent();
            initSystemData();
            initExpType();
            initAgency();
            initColumn();
        }

        //初始化子系统数据
        private void initSystemData()
        {
   
            List<object> sysInfos = ExpTableInfoServiceFactory.Instance.GetSystemInfo();
            this.systemBox.Properties.ValueMember = "Id";
            this.systemBox.Properties.DisplayMember = "Name";
            List<ComBoxItem> sys = ConvertUtil.convertHashTable<ComBoxItem>(sysInfos);
            if (sys != null)
            {
   
                sys = sys.OrderBy(n => n.Id).ToList();
            }
            this.systemBox.DataSource = sys;
            this.systemBox.EditValueChanged += new EventHandler(systemBox_EditValueChanged);
        }

        //初始化导出类型
        private void initExpType()
        {
   
            //初始化导出类型
            this.expType.ValueMember = "Id";
            this.expType.DisplayMember = "Name";
            ComBoxItem item1 = new ComBoxItem(1, "word文件");
            ComBoxItem item2 = new ComBoxItem(2, "dmp文件");
            List<ComBoxItem> expTypes = new List<ComBoxItem>();
            expTypes.Add(item1);
            expTypes.Add(item2);
            this.expType.DataSource = expTypes;
            this.expType.Value = 1L;
            //只显示某列,不设置会完全显示
            this.expType.ComboBoxEditor.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Name"));
            this.expType.ComboBoxEditor.Closed += new DevExpress.XtraEditors.Controls.ClosedEventHandler(ComboBoxEditor_Closed);
        }

        //初始化机构
        private void initAgency()
        {
   
            try
            {
   
                this.agency.Visible = false;
                this.agency.AddColumn("编码", "Code");
                this.agency.AddColumn("名称", "Name");
                List<object> table = ExpTableInfoServiceFactory.Instance.GetOrgs();
                List<ElementDTO> orgs = ConvertUtil.convertHashTable<ElementDTO>(table);
                orgs = orgs.OrderBy(n => n.Code).ToList();
                this.agency.DataSource = orgs;
                PopupContainerEdit container = (PopupContainerEdit)this.agency.editorControl;
                container.Closed += new DevExpress.XtraEditors.Controls.ClosedEventHandler(popupEditor_Closed);
                container.Properties.ButtonClick += new DevExpress.XtraEditors.Controls.ButtonPressedEventHandler(Properties_ButtonClick);
            }
            catch (Exception ex)
            {
   
            }
        }

        private void Properties_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
        {
   
            if (e.Button.Kind == DevExpress.XtraEditors.Controls.ButtonPredefines.Delete)
            {
   
                value.Clear();
            }
        }

        //存储组织机构的勾选值
        private List<object> value = new List<object>();

        //组织机构的值框关闭事件
        private void popupEditor_Closed(object sender, DevExpress.XtraEditors.Controls.ClosedEventArgs e)
        {
   
            value.Clear();
            TreeListNodes nodes = this.agency.treeList.Nodes;
            SetValue(nodes);
            this.agency.Value = value;
        }

        //设置组织机构的值
        private void SetValue(TreeListNodes nodes)
        {
   
            if (nodes != null)
            {
   
                foreach (TreeListNode node in nodes)
                {
   
                    if (node != null)
                    {
   
                        if (node.CheckState == CheckState.Checked)
                        {
   
                            object obj = this.agency.treeList.GetDataRecordByNode(node);
                            //这里来进行值设置
                            if (obj != null)
                            {
   
                                object id = GetFieldValue(obj, "Id");
                                if (id != null)
                                    value.Add(id);
                            }
                        }
                        SetValue(node.Nodes);
                    }
                }
            }
        }

        private object GetFieldValue(Object o, string property)
        {
   
            if (property == null)
            {
   
                return null;
            }

            Type t = o.GetType();
            PropertyInfo propInfo = t.GetProperty(property);
            if (propInfo == null)
                throw new Exception("目标对象未找到指定属性[" + property + ']');
            return propInfo.GetValue(o, null);
        }

        //初始化列表的列,主要是显示为当前的
        private void initColumn()
        {
   
            //表类型列
            List<ComBoxItem> tableTypes = new List<ComBoxItem>();
            tableTypes.Add(new ComBoxItem(0, "配置表"));
            tableTypes.Add(new ComBoxItem(1, "业务表"));
            this.tableType.DisplayMember = "Name";
            this.tableType.ValueMember = "Id";
            this.tableType.DataSource = tableTypes;
            //是否表列
            List<ComBoxItem> isTables = new List<ComBoxItem>();
            isTables.Add(new ComBoxItem(0, "否"));
            isTables.Add(new ComBoxItem(1, "是"));
            this.isTable.DisplayMember = "Name";
            this.isTable.ValueMember = "Id"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值