利用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"