中关村在线

软件

FineReport文件控件教程

通过FineReport电子表格进行简要介绍。

1、 描述

2、 在填报报表时,通过文件控件上传文件,可利用公式提取文件名、类型及大小信息。

3、 提取文件名:从指定路径中获取文件名称信息。

4、 获取文件类型信息,判断文件的具体格式。

5、 获取指定文件的大小信息。

6、 单文件上传时三个公式返回字符串,多文件上传则返回数组。

7、 获取文件名称的功能由filename实现。

8、 所示,新建一个模板,在B2单元格插入文件控件,随后在C2单元格输入公式=filename(B2),即可获取所上传文件的名称。

9、 若同时上传多个文件,filename将获取所有文件名,各名称间以逗号分隔,返回结果为数组类型。例如,上传A.xls和B.txt两个文件时,filename的返回值即为包含这两个文件名的数组。

10、 filetype用于识别文件的类型。

11、 file:用于文件控件或包含文件的单元格。若为单个文件,返回其类型字符串;若为多个文件,返回类型数组;若非文件类型,则返回错误信息。

12、 单文件

13、 在D2单元格输入=filetype(B2),设置文件控件为仅支持单文件上传,预览模板后点击控件上传一张jpg图片,实际效果所示。

14、 文件控件获取的上传文件类型为jpg,因仅上传单个文件,返回结果为字符串形式。

15、 多文件

16、 取消勾选文件控件的单文件上传限制,填写并预览模板后,点击文件控件并选择三个文件,实际效果所示。

17、 函数filename(B2)返回一个数组,数组中包含文件名相关信息;同样,filetype(B2)也返回数组类型的数据,其内容表示对应文件的类型。两个函数均以B2为输入参数,输出结果均为数组结构,便于后续对文件名和文件类型进行批量处理与分析。

18、 filesize(file) 用于获取文件大小,返回值单位为 KB。

19、 file:表示文件控件或包含文件的单元格。若为单个文件,返回对应的文件类型字符串;若为多个文件,返回文件类型组成的数组;若输入内容非文件类型,则返回错误提示信息。

20、 单文件上传时filesize返回字符串,多文件上传则返回数组,类似于filetype的处理方式。

21、 在E2单元格输入公式=filesize(B2),填写并预览模板,效果所示。

22、 问题说明

23、 如何将上传的文件保存至指定目录,并仅将文件名存入数据库?

24、 思路实现

25、 通过自定义函数将文件上传至指定路径,并在按钮的填报事件中提交数据至数据库,同时调用该函数完成操作。

26、 创建自定义函数

27、 Commit3.java源文件的代码内容如下所示:

28、 定义用于提交作业的文件路径变量,存储文件所在位置信息。

29、 }

30、 valueState的0、1、2、3分别代表默认值、新增行、数值变更和删除行。

31、 }

32、 创建新文件夹,将附件列表中指定索引位置的附件内容读取为字节数组,并写入该文件夹中。确保文件路径存在并具有写入权限,操作完成后释放相关资源,避免内存泄漏。

33、 }

34、 }

35、 }

36、 }

37、 }

38、 }

39、 检查文件是否存在,若存在则执行后续操作。

40、 删除指定的文件。

41、 }

42、 在当前目录创建一个名为FileName的文件。

43、 }

44、 }

45、 将源数据写入新创建的文件后,关闭输出流。

46、 }

47、 }

48、 }

49、 }

50、 }

51、 编写自定义函数

52、 将编译生成的Commit3.class和Commit3$$1.class文件复制到FineReport安装目录中WEB-INF下的classes文件夹内。由于Commit3.java位于com.fr.data包中,需在classes目录下创建对应的路径结构,即将这两个class文件存放于classes/com/fr/data/目录中,以确保类路径正确,系统能够正常加载该类及其内部类,避免运行时出现类找不到的错误。

53、 设定模板格式

54、 表单样式配置

55、 按图调整表格样式

56、 A1单元格设置为文件上传控件,控件名称为attach;B1单元格放置一个名为上传的按钮,点击后触发文件上传操作;C1单元格为文本框,通过公式filename(A1)获取并显示所选文件的名称;D1单元格用于填写文件上传的目标路径,该单元格控件设为不可见,用户无法直接查看或编辑。

57、 自定义函数调用与数据入库处理

58、 为B1按钮添加点击事件,选择提交入库,并按图示进行配置。

59、 完成设置后,点击提交事件按钮,进入自定义事件添加界面。点击+号,选择自定义事件类型,并从中选定comfrdatacommit3.class文件。随后,点击增加属性按钮,依次添加两个属性:第一个属性名称为attach,值设为公式A1;第二个属性名称为filePath,值对应单元格D1的内容。这两个属性的命名需与commit3.java中所定义的文件路径变量保持一致。配置完成后,整体效果所示。

60、 由于attach在Commit3.java中被定义为Object类型,其属性值仅支持直接输入公式F(x)=A1,无法通过选择单元格方式赋值。而filePath在Commit3.java中定义为SubmitJobValue类型,因此其属性值必须通过选取具体单元格的方式进行设置,所示操作,不允许手动输入公式内容。两种字段因数据类型不同,在赋值时需遵循各自的规定方式,确保符合程序设计要求,避免类型不匹配导致的运行错误。

展开全文
人赞过该文
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具