电子说
在测控应用上,一般都需要软件能够出报表,方便保存或打印测试信息、数据、图表等。出报表,这可以说是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创建报表,都比上面的方法复杂,就不详细说明了。文章如有不对的地方欢迎大家指正。
全部0条评论
快来发表一下你的评论吧 !