zoukankan      html  css  js  c++  java
  • 详解如何利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入

    我们先来简单了解一下WinForm和FarPoint,WinForm是·Net开发平台中对Windows Form的一种称谓。而FarPoint是一款模拟EXCEL的控件。它可以根据用户的要求实现很大部份的EXCEL操作,且包括多个子表、表格风格定义、公式计算、排序、分组等等都可以实现。本文主要是介绍利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入。

      在Winform界面中以类似Excel表格界面中录入相关的数据,其中界面需要录入图片信息,基础信息,列表信息等,综合这些后界面的效果就如下面这样。而本文主要针对如何利用FarPoint Spread表格控件实现类似Excel界面丰富数据的保存及显示,以及希望在使用过程中的一些经验对大家在开发Winform的Excel数据录入和显示方面的开发有一定帮助。

    Winform的Excel数据录入和显示

      根据上面的界面分类能够看到,这个界面大概能怪划分的数据类型分别是基础字段数据、多行的列表数据、图片数据和备注信息的显示录入。那么下面我们根据分类介绍如何实现这些功能。

      1、类似Excel的列表总体界面设计

      首先,在这个列表中需要在Winform的界面中进行设计拖入一个Farpoint控件到Winform界面上后,然后设置好布局等属性,接着在右键菜单上启动Spread Designer,这样就可以设计相关的Excel样式表格的内容了。

    Spread Designer

      注意:一般情况下,这个界面是在窗体中设计的,当然你的内容可以通过拷贝的方式复制过来,从Excel文档中复制粘贴过来,如果从效果上来看是一样的。不过,虽然Farpoint Spread控件提供了一个另存为Xml文件的操作,并且可以通过API,Open一个XML文件,不过Open的XML文件后,好像内容不能进行修改的,而且类型CellType也是Null(空值)的,所以如果要在一个窗体上动态加载布局是没办法实现的。不过对于开发来说,我们在设计时就把Excel样式的列表界面设计好,这也是一个不错的选择。

    成衣工艺单

      2、下拉列表的绑定

      大多数情况下我们为了输入的便利性,我们会选择在Excel列表中通过下拉列表方式输入内容,如此便可以提高速度和用户体验,但这些内容必须是通过数据库内容进行绑定的,Farpoint Spread控件通过输入很多的内容且包括ComoBox类型数据来绑定下拉列表的数据。如下所示。

    ComoBox类型

      当我们下拉类型被指定后,Excel列表的显示方式随之变化,比如像下面一样来显示。

    Excel列表

      上面打上对勾的就我们下一步需要绑定列表数据的列表了,绑定列表的数据也不麻烦,但是需要明确Cell的序号,绑定给他数据源就可以了,可实际上的话,经常要数着Cell的行列号上的数字是非常费心神且很不方便。

    Cell的序号

      对于BindDictItems代码,我使用了扩展方法,所以这个我们是能通过对象直接调用,具体的函数代码如下所示,这个就是调用字典业务类获取数据,但是需要给Items属性赋值,注意其中的Edittable最好选择为true,否则它只会类似于DropdownList那样只显示里面列表的内容。

    Items属性

    下拉列表控件

      3、如何构造界面自定义录入

      为了能够很方便的输入内容,在对于一些例如弹出框选择内容,图片编辑,备注内容(很长的时候)的编辑来说,我们通常是通过自定义界面来录入比较好,比较Excel样式的界面,录入单元格很小,有时候也实现不了的。所以通过制定控件单元格的单击事件,用来处理特殊录入信息的操作。

    录入信息操作

    图片操作

      下面是展开界面部分内容给大家看看,如下面所示:

    展开界面

      例如,对于下拉列表内容,我们需要进行弹出式选择内容,如下界面所示。

    下拉列表内容

      对于图片单元格,我们单击就可以弹出下面的窗体才能够很方便编辑或者查看。

    图片编辑

      对于备注内容,我们让他弹出一个窗体,更好展现和编辑。

    编辑内容

      4、数据的显示和保存

      在显示普通的主表数据字段这方面是非常的简单的,就是把内容赋值给对应的单元格Text属性即可,如下所示。

    内容赋值

         当我们需要保存的时候,就是把对应的内容保存到实体类进行数据保存操作即可。

    内容保存

      但是在数据比较多的时候,我们需要把内容保存分开,各个函数负责不同的部分即可,在主表保存后继续保存其他部分的内容,例如红色部分就是其他部分的保存操作。

    更多数据

      例如工艺过程是一个列表数据,我们在保存的时候是需要指定行列的属性进行操作,而且我们添加一个Seq的序列号,这样是用来保存内容的顺序,这样加载的时候,我们就按照这个循序进行加载显示,否则会出现问题。 

    属性操作

      其中GetProcess函数,这个就是一个列表中查找对应顺序的内容,如果有,那么我们需要更新这个对应顺序的内容,否则我们认为它是新的数据,这样就新增到数据库中,所以最后用了InserUpdate就是这个道理。其中GetProcess函数逻辑代码如下所示。

    重新调整顺序号

      另外有一点是需要注意的是有些单元格是合并列的,所以它的行列号一定要注意,因为有些地方可能需要跳行。

    合并单元格

      5、Excel表格的数据打印及导出。

      对于使用Farpoint Spread的空间,我们能够非常方便地对里面的内容进行打印或者导出Excel,重要的是代码不繁琐,如下所示。

    导出Excel导出Excel代码

      我们导出的效果和界面显示的效果基本上一致的,而且图片等特殊的格式,也是正常保留在Excel里面,从感觉上来说是非常的不错的。

      那么在最后我们附上这个系统的一些截图作为补充了解。

    导出的效果图

         到这里,我们基本上是介绍完了利用FarPoint Spread表格控件来构造Winform的Excel表格界面输入的内容了,在上文我们通过了五个部分来介绍的,一是类似Excel的列表总体界面设计的基本内容,二是下拉列表的绑定,三是如何构造界面自定义录入,四是数据的显示和保存,五是Excel表格的数据打印及导出。

  • 相关阅读:
    C# 比较多个数组(lambda,匿名比较器)
    JPA javax.persistence.TransactionRequiredException
    JPA:identifier of an instance of was altered from
    JPA 连表查询
    java json转换(二)
    java querydsl使用
    SpringCloud 过滤器
    Android : Resource is not a Drawable (color or path)
    springcloud 新增微服务
    序列化二叉树
  • 原文地址:https://www.cnblogs.com/zyjj/p/7146143.html
Copyright © 2011-2022 走看看