1. 首页
  2. 全部文档
  3. 开发框架模块手册
  4. 下载CSV文件成熟模块

下载CSV文件成熟模块

下载CSV文件成熟模块

  • 模块项目下载地址:https://pan.baidu.com/s/12xgvjIGOkxL0oWUvnYu0SA
  • 下载元件本身用于下载各类文件,我们此例是合成CSV文件来下载
  • 正常使用时,应通过一个逻辑来触发下载文件元件运行处理,此模块项目中我们是将下载元件添加到一个按钮中了,实际开发中,也可以通过基本一个逻辑处理结果或空值的完成“Done”输出元件连至下载元件来触发下载功能
  • 下载CSV文件功能不涉及显示元件开发内容和样式设计,只在一个下载文件元件中进行开发处理,主要包括CSV文件内容制作、标题行与内容行合并、文件内容转为二进制传入文件对象中、生成带当前操作时间的文件名称并传入下载文件对象,为文件对象传入文件类型这些逻辑开发处理
  • 注意下载元件本身是一个服务器端元件,其中的逻辑是在服务器端执行的,所以如果有服务器中的处理元件,可以不再用Service服务器行为处理元件来设计

下载CSV文件逻辑设计

  • 首先我们应将要下载的CSV文件每行内容进行生成,正常的业务中,用得最多的是将数据库中符合条件的记录查询传入一个复数的行为元件中,此行为元件中将一条条记录用“模板生成字符串”元件来转为一个个的字符串
    • 注意“模板生成字符串”元件中,输入元件可以改为非必须输入项的黄色状态(快捷键为英文输入法下小写的“m”)
    • 如果传入输入元件的字符串中,有“,”逗号符号,需去除用其他字符标记,因为CSV文件就是逗号区分每列的文件,逗号是分隔符,如果输入字符中有分隔符,则输出文件会显示为多加一列显示
    • 默认是将所有类型数据转为字符型的,所以如果日期要输入,有必要先转为某个格式的文本,然后再行输入,此方式也可避免日期类型导致的某些日期为空值时无法直接传入生成字符串的问题(如果为空值,且日期变量直接传入模板输入项,则执行时会有报错框)
  • 字符串输出后,用一个字符串“合并”元件来合并为字符串型的CSV文件内容,注意:
    • 在此处理中,合并元件中间隔符号输入的是文本换行符号“\n”
    • 记录转换后的字符串可以输入第二个字符输入元件中,并将此输入元件改为复数状态(快捷键为英文输入法下小写的“r”)
  • 全部文件字符串型内容传入一个字符“转二进制”元件,输入编码方式转为CSV文件的二进制内容
  • 生成文件名称中,我们是将前日期时间值、输入的文件名、预定义一个非必须输入的文件前缀输入项目全部传入一个“模板生成字符串”元件中,来生成文件名称
  • 用字符常量定义CSV文件的类别,注意这个定义是固定的,属行业规范(请参考“http://www.iana.org/assignments/media-types/media-types.xhtml”
  • 最后将以上这些输出内容传入一个文件对象中,执行时即下载一个CSV文件
  • 以上逻辑也可以参考我们1. “无代码开发手册”的“从需求出发的开发”中“Office相关文档处理”一节中上传数据下载为CSV文件说明

快速复用指导

  • 1、下载成熟模块项目,开发工具中导入项目
  • 2、打开导入的项目,可以修改文件中的表头、查询记录逻辑修改来查自己想要的库表、生成字符串的模板中删除不必要的入项,或添加更多输入项、修改文件史称
  • 3、各位置修改添加时处理说明:
    • Show File—Action—Action 2中,我们需要添加或删除传值连线、输入项元件、模板名称用于控制顺序,我们直接用a,b,c,d…来命名更加方便,这个名称只是控制各输入字符在整行记录的显示字符串的位置,没有其他意义,也可以改为1,2,3,4,5…
    • 文件名称字符常量中定义文件第一行显示的名称,注意和输入的数据库记录的每列的名称保持一致
  • 4、修改内容保存后可以试运行一下,可以测试一下显下载是否正常,可以为合并字符串的第二个输入元件的输入一串字符或名称字符来测试功能,因为这个输入元件是必须输入项,如果没有输入内容,则不会往下处理
  • 5、开发区中点选按钮、或按钮中点击事件行为元件中的“下载Show File”元件,右键单击选复制,在新的项目的某个页面中粘贴复用,选“导入粘贴”(paste import)的方式
  • 6、调整导入的模块在新项目中的文件目录中文件位置,将模块的内容全部拖放到新项目对应的目录位置

注意

  • 可用以上方式,多次添加来为新项目定义多个CSV文件下载模块,实际上如果导入后操作第6步的目录位置修改,则就会在新项目中生成完全独立的两个或多个CSV文件下载的模块,如果不修改目录,则会认为是复用

复用案例

请参考“增删改查成熟模块”中菜单栏的”序号下载”按钮中的处理