1.安装Perl
我采用的是源码安装,相关文档如下(亲测可用,有的文章写的不太对),这个方式的前提是你的虚拟机Linux可以上网(不能上网的可以查看我的往期文章)
Ubuntu18.04 上源码方式安装 perl-5.14.2_ubuntu18.04 兼容多个perl_ChingDawn的博客-CSDN博客2.下载QtXlsx源码并编译生成动态链接库,相关文档如下(亲测可用)
Ubuntu QT Xlsx库的安装与使用_IL97的博客-CSDN博客
编译成功后你会得到两个文件夹 include和lib,如下所示:最好看看这里面的生成文件的日期是不是刚刚编译好的时间生成的,否则就代表没有编译成功哈。
3.将 生成的include文件夹、lib文件夹和src文件夹(src文件夹也要,否则会报错)放到自己的项目生成目录中去
步骤如下:
并在.pro文件中动态链接相关库
在项目中使用如下:
我的项目是导出一个xlsx文件,相关代码如下,感兴趣的小伙伴可以参考一下:
void onExportClicked()
{
QXlsx::Document xlsx;
QXlsx::Format formatHead; //格式
formatHead.setBorderStyle(QXlsx::Format::BorderThin);
formatHead.setFont(QFont("微软雅黑")); //字体
formatHead.setFontBold(true); //加粗
formatHead.setFontSize(10);
formatHead.setHorizontalAlignment(QXlsx::Format::AlignHCenter); //对齐方式
QXlsx::Format formatText; //格式
formatText.setBorderStyle(QXlsx::Format::BorderThin);
formatText.setFont(QFont("微软雅黑")); //字体
formatText.setFontSize(10);
formatText.setHorizontalAlignment(QXlsx::Format::AlignHCenter); //对齐方式
xlsx.addSheet("出入库记录"); //添加sheet表
xlsx.selectSheet("出入库记录"); //选择sheet表
xlsx.write(1, 1, "序号", formatHead);
xlsx.setColumnWidth(1, 10);
xlsx.write(1, 2, "条形码", formatHead);
xlsx.setColumnWidth(2, 20);
xlsx.write(1, 3, "出入库类型", formatHead);
xlsx.setColumnWidth(3, 16);
xlsx.write(1, 4, "出入库时间", formatHead);
xlsx.setColumnWidth(4, 18);
xlsx.write(1, 5, "工单号", formatHead);
xlsx.setColumnWidth(5, 14);
xlsx.write(1, 6, "操作人", formatHead);
xlsx.setColumnWidth(5, 12);
xlsx.write(1, 7, "操作人工号", formatHead);
xlsx.setColumnWidth(5, 14);
for (int i = 0; i < m_ltIORecord.size(); i++)
{
int row = i+2;
IORecord* iorecord = m_ltIORecord[i];
xlsx.write(row, 1, QString::number(i + 1), formatText);
xlsx.write(row, 2, iorecord->BAR_CODE, formatText);
xlsx.write(row, 3, iorecord->IO_TYPE, formatText);
xlsx.write(row, 4, iorecord->IO_DATETIME.toString("yyyy-MM-dd hh:mm:ss"), formatText);
xlsx.write(row, 5, iorecord->IO_TASK, formatText);
xlsx.write(row, 6, iorecord->USER, formatText);
xlsx.write(row, 7, iorecord->USER_NO, formatText);
}
QString filename = QFileDialog::getSaveFileName(this, "文件另存为", "出入库记录.xlsx", "*.xlsx");
if (!filename.isEmpty())
{
if (xlsx.saveAs(filename))
{
DialogMessagebox::Instance()->information("提示", "导出成功!", "确定", "");
}
else
{
DialogMessagebox::Instance()->information("提示", "导出失败!", "确定", "");
}
}
}
最后,成功利用QtXlsx库导出Xlsx文件: