Qt导出pdf格式表格

预期目标如下:在这里插入图片描述
头文件:

#include
#include
#include
#include
#include
#include
#include

private:
QString m_html;

调用:
QDateTime dateTime = QDateTime::currentDateTime(); //当前日期和时间
QString ExportTime = dateTime.toString(“yyyyMMddhhmmsszzz”); //导出时间
QString pdfPath = path + ExportTime + “ExoprtShotScreenFile.pdf”;//导出路径

QPrinter printer_html;
printer_html.setPageSize(QPrinter::A4);
printer_html.setOutputFormat(QPrinter::PdfFormat);
printer_html.setOutputFileName(pdfPath);
m_html = “”;
writePdf();
QTextDocument text_document;
text_document.setHtml(m_html);
text_document.print(&printer_html);
text_document.end();

void QTabTreatVerifyPanel::writePdf()
{
///添加基本信息
QList rowsValues;
QList<QList> values;

//导出t1
rowsValues.append(QStringLiteral("机构名称"));
rowsValues.append(QStringLiteral("科室"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("中医院"));
rowsValues.append(QStringLiteral("体检科"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("人民医院"));
rowsValues.append(QStringLiteral("急诊科"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("专科医院"));
rowsValues.append(QStringLiteral("发热门诊"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("中西医结合"));
rowsValues.append(QStringLiteral("骨科"));
values.append(rowsValues);

QList<int> width;
width.append(30);
width.append(70);
addTable(QStringLiteral("东海市医院列表"), QStringLiteral("招牌科室"), 5, 2, width, values);

//导出t2
rowsValues.clear();
values.clear();
rowsValues.append(QStringLiteral("患者姓名"));
rowsValues.append(QStringLiteral("地址"));
rowsValues.append(QStringLiteral("年龄"));
rowsValues.append(QStringLiteral("性别"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("张三"));
rowsValues.append(QStringLiteral("北京东郊"));
rowsValues.append(QStringLiteral("13"));
rowsValues.append(QStringLiteral("男"));
values.append(rowsValues);

rowsValues.clear();
rowsValues.append(QStringLiteral("李四"));
rowsValues.append(QStringLiteral("月球人"));
rowsValues.append(QStringLiteral("18"));
rowsValues.append(QStringLiteral("其他"));
values.append(rowsValues);

width.clear();
width.append(25);
width.append(25);
width.append(25);
width.append(25);

addTable(QStringLiteral("患者列表"), QStringLiteral("患者信息"), 3, 4, width, values);

}

void QTabTreatVerifyPanel::addTable(const QString& title, const QString& subTitle, int rows, int cols, QList colWidth, const QList<QList >& values)
{
m_html.append(“<table border=‘0.5’ cellspacing=‘0’ cellpadding=‘3’ width:100%>”);

//主标题
if (!title.isEmpty())
{
	m_html.append(QString("<tr><td align='center' style='vertical-align:middle;font-weight:bold;' colspan='%1'>").arg(cols));
	m_html.append(title);
	m_html.append("</td></tr>");
}

//副标题
if (!subTitle.isEmpty())
{
	m_html.append(QString("<tr><td align='left' style='vertical-align:middle;font-weight:bold;' colspan='%1'>").arg(cols));
	m_html.append(subTitle);
	m_html.append("</td></tr>");
}

//添加字段/字段值
for (int i = 0; i < rows; i++)
{
	m_html.append("<tr>");
	QList<QString> rowValues = values.at(i);
	for (int j = 0; j < cols; j++)
	{
		m_html.append(QString("<td width=%1% valign='center' style='vertical-align:middle;font-size:20px;'>").arg(colWidth.at(j)));
		m_html.append(rowValues.at(j));
		m_html.append("</td>");
	}
	m_html.append("</tr>");
}

m_html.append("</table><br /><br />");

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值