关于LabVIEW快速创建报表的一些方法

电子说

1.3w人已加入

描述

在测控应用上,一般都需要软件能够出报表,方便保存或打印测试信息、数据、图表等。出报表,这可以说是LabVIEW的拿手好戏了。在LabVIEW里出一份像样的报表,与代码编程比起来,那可真是事半功倍。

本篇推送里我给大家介绍三大类五六种出报表的方法——都是简单、快速、高效的方法。

1.使用图表控件导出数据功能快速创建数据报表

这个方法可以快速创建excel格式的数据报表,简易方便,几乎没有编程工作量。

例如下面这个代码,运行后自动产生一个excel临时文件,保存产生的信号数据。

编程

上述代码产生的Excel文件:

编程

这个本质上是通过图表控件导出数据方法创建的excel文件。其实也可以不用代码,用户可以在图表控件上单击鼠标右键,选择Export->Export Data to Excel也是可以生成和保存这个Excel文件的。

这个方法非常简便,但是缺点也很明显。例如不能自动保存报表、不能给报表添加表头信息、不能给报表增加其它数据等。

2.Report Generation VIs

想要创建正儿八经的报表,我们需要专业工具。

Report Generation VIs是一组LabVIEW自带的用于创建和修改报表的VI,在Programming->Report Generation分类下可以找到它们。

Report Generation VIs可以创建word、excel或者html格式的报表。

编程

1)Report Generation相关VI介绍

分类 VI名称 功能
/ Create Easy Text Report 创建简易文本报表,输出至打印机或者文件。报表格式可以为HTML、Word或Excel,报表内容为文本。可设置页眉、页脚、字体等。
/ Create Report 创建报表,输出报表引用。通过报表引用可以为报表增加文字、表格、图像等内容,也可以设置字体、页眉、页脚等。报表格式可以为HTML、Word或Excel。
/ Print Report 打印报表。
/ Save Report to File 保存报表。
/ Set Report Font 设置报表字体。
/ Append Report Text 添加文本至报表。
/ Append Table to Report 添加表格至报表。
/ Append List to Report 添加列表至报表。
/ Append Control Image to Report 添加控件图像至报表。
/ Append Image to Report 添加图像至报表。
/ Dispose Report 关闭报表并释放内存。
/ Report 提供设置对话框,设置好报表表头信息、数据、存储路径或打印机等,以预先设置好的格式创建报表。报表文件格式可以为HTML、Word或Excel。
/ MS Office Report 通过模板创建Word或Excel格式报表。
VI Documentation Append VI Block Diagram to Report等 一些可把程序框图、界面、子VI清单等信息加进报表的VI。
Report Layout Set Report Margin、Set Report Orientation等 一些设置报表布局的VI。
Word Specific Word Easy Title、Word Easy Table等 Word格式报表特定一些VI,例如给报表增加表格。
Excel Specific Excel Easy Table、Excel Easy Graph等 Excel格式报表特定的一些VI,例如给图表增加图表。
HTML REports Only Append Horizontal Line to Report、Open HTML Report in Browser等 HTML格式报表特定的一些VI,例如给报表增加横线、超链接、在浏览器中打开报表。
Advanced Report Generation Append File to Report、Querry Available Printers等 附加文件到报表、查询可用打印机等报表相关高级功能。

2)创建简易文本报表

下面代码使用Create Easy Text Report创建一个简易的HTML报表。

编程

报表的样式如下(截屏时调整了浏览器窗口大小):

编程

3)创建预先格式化报表

把Report Generation分类下的Report编程放置到程序框图中,双击按照下图设置好报表格式。

编程

代码如下:

编程

运行后产生的word格式报表如下图(部分)。

如果设置的时候不勾选Include Table就不会有长长的、保存数据的表格(100个数据,共8页)。

编程

4)使用模板创建报表

我们自己定义一个Excel模板,如下图。其中Author、Date、Time、Sigal Graph和Signal Data是需要写入的内容。

编程

放置一个MS Office Report到程序框图上,双击在设置中选择我们之前创建的模板文件,就会自动分析出该模板需要输入的数据。Report Contents里列出了我们可以输入的内容名称。我们把Signal_Graph输入在报表中的呈现形式(Input Apperance in Report)修改为Graph,把Signal_Data输入在报表中的呈现形式修改为Table,其它默认。

编程

这里插句话,前面的Excel模板是怎么制作的呢?LabVIEW怎么会知道我需要输入哪些数据的呢?其实很简单:新建一个Excel文件,填入固定信息(例如报表中公司名称、小标题等),使用公式中的“定义名称”定义需要输入的数据,为需要输入的数据指定输入起始单元格位置,最后保存为Excel模板文件(.xltx)即可。定义名称时输入的“名称”就是我们在LabVIEW里Configure MS Office Report时可以看到的报表内容(Report Contents)。

编程

我们用下面的代码按照上面设计的Excel模板创建一个报表。代码里我们把信号数据转成了一维数组,然后把一维数组转成了20x5的二维数组,目的是为了让excel报表中的数据不要那么长(否则就像前面word报表中一样,100个数据会需要好几页才能放得下)。

编程

产生的excel报表如下图。可以看到,正如我们期望的那样,在Signal Graph下面自动插入了信号波形图形;在Signal Data下自动插入了信号数据,第一列是自动输入的编号;Autor等输入的信息,也都填入了指定的位置。

编程

这个Excel报表,因为对信号数据的展示重新进行了编排,所以看上去更加美观了,整个报表只需要一页。这样一个报表我想已经能够满足很大一部分项目的使用需求了。然而如你所见,它的创建过程其实非常简单:制作模板、一个VI搞定。

5)使用VI创建报表

下面这个代码,使用Create Report、Append Text to Report、Append Control Image to Report、Append Table to Report、Excel Rename Worksheet、Save Report to File等VI创建并保存报表。

在调用Create Report时,我们制定了使用4)中创建的Excel模板。模板不是必须的,但是我觉得模板可以很方便地预先设定报表格式,可以简化不少工作。在有模板的情况下,Append Text to Report等VI可以使用模板中定义的名称(公式-定义名称)指定待写入内容在报表中的位置。

编程

产生的报表如下。截屏是包含报表的Excel电子表格,可以看到电子表格的名称已经重新命名为我们在代码中指定的名称。

编程

下面这个代码创建和上面类似的报表,但是不使用Excel模板;另外它除了将报表保存为电子表格,还保存为pdf。

编程

产生的excel报表如下。通过指定行、列值,我们把图表和数据放置到报表中间位置了。

编程

代码中我们调用Excel Get ActiveX References获得了Excel Workbook的ActiveX引用,然后调用ExportAsFixedFormat方法将报表保存为PDF格式。PDF格式的报表效果如下。

编程

使用Report Generation VIs根据需要可以创建多种格式和复杂度的报表,能够满足绝大多数的开发要求。但是,使用Report Generation VIs创建Word和Excel格式的报表时,以下几点需要特别注意:

a)计算机上必须安装有与文件格式对应的Offcie软件。

要创建Word格式报表,必须安装有Word软件;要创建Excel格式报表,必须安装有Excel软件。在没有安装这些软件的计算机上,运行产生Word或Excel格式报表的代码,无法产生报表,并可能会导致软件运行异常。

b)Office的版本需要是LabVIEW支持的版本。

c)32位的LabVIEW只能完美支持32位的Office。64位的LabVIEW能够支持64位的Office,是否能够完美支持32位的Office我没有测试过。32位的LabVIEW+64位的Office,会导致出现报表不能保存、保存报表时LabVIEW崩溃退出等问题。

d)如果不能保存报表、又不报任何错误,可以尝试下面这个方法。

在“C:Program Files (X86)National InstrumentsLabVIEW 2022vi.libaddons_office_exclsub.llb”路径下找到“Excel_Save_Workbook.vi”,打开可以看见一个灰色的调用节点,右键选择Relink,然后保存。

编程

Relink之后的变化:

编程

借助Report Generation VIs生成报表需要安装有Office软件,需要Office的版本是LabVIEW支持的,如果是32位的LabVIEW则不能使用64位的Office,这些条件在目标机器上是不一定能够满足的,计算机更新或维护后Office版本可能也会有变化。

有没有办法可以既能生成Word或Excel格式报表,又不依赖Office软件呢?我们可以使用下面介绍的工具。

3.Viewpoint Xlsx Toolkit/Viewpoint Docx Toolkit

从名称就可以看出来,这两个插件一个负责产生Excel格式的报表,另一个负责产生Word格式的报表。与Report Generation VIs不同的时,它们不需要部署的计算机上安装有Excel或Word软件。

这两个插件都可以在VIPM里找到。我们以Viewpoint Docx Toolkit为例,说明一下怎么生成word报表。

这个插件不是免费的,但是我觉得很便宜。一个License的价格是1865元,只需要开发端授权,使用该插件开发的功能可以免费部署到任意台计算机上,与每台应用端部署Office的成本比起来是不是很优惠?

编程

安装好之后,我们可以在Programming分类下找到Viewpoint Docx Toolkit。

编程

下面的代码使用Viewpoint Docx Toolkit提供的API函数创建word报表。

编程

创建的速度非常快,比使用Report Generation VIs创建报表要迅速得多,而且不需要计算机上安装有Office软件。创建好的报表如下。

编程

好了,以上是关于LabVIEW里快速创建报表的一些介绍,希望能够帮助到大家。因为使用Office的ActiveX创建报表,都比上面的方法复杂,就不详细说明了。文章如有不对的地方欢迎大家指正。

  审核编辑:汤梓红
 

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分