前言
这篇博客基于《NCReport Definitive Guide》3.4节进行翻译,如需要更完整理解可自行翻译。
添加NCReport库到项目
在关于NCReport报表的第一博客中就详细介绍了如何将NCReport库添加到VS工程,如有需要请翻阅前面博客。
(1)初始化NCReport类,添加如下头文件
#include "ncreport.h"
#include "ncreportoutput.h"
#include "ncreportpreviewoutput.h"
#include "ncreportpreviewwindow.h"
创建NCReport类,正如创建其他Qt对象。
NCReport *report = new NCReport();
如果NCReport已经被创建,可以用reset()函数进行重设。
report->reset();
//or
report->reset(true);
NCReport::reset()函数将删除所有对象信息,确定报表引擎可以再次运行一个报表。
(2)设置报表的源
报表源指的是定义的报表XML文件。在我们的例子里我们用File作为报表源。
report->setReportFile(fileName);
这行代码等价于:
report->setReportSource(NCReportSource::File);
report->setportSource(fileName);
(3)增加参数
使用addParameter 函数增加一个参数到NCReport。参数“id”是一个字符串,值是一个QVariant对象。
report->addParameter( "id", QVariant("value") );
你也可以使用相似的不同数据类型:
report->addParameter( "par1", "String Parameter" );
report->addParameter( "par2", 5.687 );
report->addParameter( "par3", 1024 );
report->addParameter( "par4", QDate::currentDate() );
(4)运行报表
运行报表到打印机
report->runReportToPrinter();
运行报表到PDF
QString fileName("mypdffile.pdf");
report->runReportToPDF( fileName );
运行报表到打印预览
report->runReportToPreview();
如果你采取预览报表,结果将保存在一个NCReportPreviewOutput对象。在预览报表之前我们要检查是否报表有错误发生。
if ( !report->hasError() ) {
NCReportPreviewWindow *pv = new NCReportPreviewWindow();
pv->setOutput( (NCReportPreviewOutput*)report->output() );
pv->setWindowModality( Qt::ApplicationModal );
pv->setAttribute( Qt::WA_DeleteOnClose );
pv->setReport( report ); // sets the report objects
pv->exec();
} else {
QMessageBox::warning( tr("Error");
}
(5)错误处理
使用下面函数捕获发生的错误。
bool error = report->hasError();
QString errormsg = report->lastErrorMsg();
(6)删除报表对象
当NCReport对象被删除所有的子对象也将被删除。
delete report;
警告:不要删除NCReport对象,如果NCReportPreviewWindow对象一直存在,如果你想再一次使用报表对象那就不要删除,仅仅使用MCReport::reset()函数即可。
结语
这篇博客对常用语法进行了讲解。