当前位置: 首页 > news >正文

做珠宝商城网站汉中市建设工程招投标信息网官网

做珠宝商城网站,汉中市建设工程招投标信息网官网,汽车美容网站开发,网站建设中 敬请期待 源码这是我记录Qt学习过程的第6篇心得文章,主要是方便自己编写的应用程序导出Excel数据的,走了不少弯路直接上代码。 实现代码: //人员信息导出 ui->pbtn2->setEnabled(false); // 打开文件对话框,选择 excel文件 QString fil…

这是我记录Qt学习过程的第6篇心得文章,主要是方便自己编写的应用程序导出Excel数据的,走了不少弯路直接上代码。

实现代码:
//人员信息导出
ui->pbtn2->setEnabled(false);
// 打开文件对话框,选择 excel文件
QString fileName = QFileDialog::getSaveFileName(this, "人员信息导出", "personnel", "excel文件(*.xlsx)");
if (fileName.isEmpty()) return;
this->fun_statusBar("人员信息导出 " + fileName);// 创建Excel应用程序对象
QAxObject *excel = new QAxObject("Excel.Application");
if (!excel->isNull())
{this->fun_statusBar("人员信息导出 创建Excel对象成功!");excel->setProperty("Visible", false);  //设置为false以在后台运行// excel->setProperty("SetVisible(bool)", false);  //设置为false以在后台运行// 新建工作簿QAxObject *workbooks = excel->querySubObject("Workbooks");this->fun_statusBar("人员信息导出 新建Excel工作簿成功!");// 添加一个工作簿QAxObject *workbook = workbooks->querySubObject("Add");this->fun_statusBar("人员信息导出 添加Excel工作簿成功!");QAxObject *worksheets = workbook->querySubObject("Worksheets");// 获取第一个工作簿// QAxObject *worksheet = worksheets->querySubObject("Item(int)", 1);QAxObject *worksheet = workbook->querySubObject("WorkSheets(int)", 1);this->fun_statusBar("人员信息导出 打开Excel获取第一个工作表成功!");// 设置工作表标题worksheet->setProperty("Name", "personnel");// 获取表格数据模型 根据自己表格使用的数据模型更改为 QAbstractItemModel获其他QSqlRelationalTableModel *itemModel = qobject_cast<QSqlRelationalTableModel *>(ui->tableView->model());if (itemModel){this->fun_statusBar("人员信息导出 打开数据表成功!");int rowCount = itemModel->rowCount();int colCount = itemModel->columnCount();QString str = "";// 写入表头for (int col = 1; col <= colCount; ++col){QString data = itemModel->headerData(col - 1, Qt::Horizontal).toString();QAxObject *cell = worksheet->querySubObject("Cells(int,int)", 1, col);cell->setProperty("Value", data);str += data + " ";// 设置文字格式QAxObject *range = cell->querySubObject("Characters()");QAxObject *font = range->querySubObject("Font");font->setProperty("Name", "黑体");                // 字体名称font->setProperty("Size", 12);                    // 字体大小font->setProperty("Color", 0x000000);             // 字体颜色(蓝色)cell->setProperty("HorizontalAlignment", -4108);  // 水平居中cell->setProperty("VerticalAlignment", -4108);    // 垂直居中//设置列宽QAxObject *column = worksheet->querySubObject("Columns(int)", col + 1);int columnWidth{};switch (col){case 0:case 2:case 3:columnWidth = 10;break;case 7:columnWidth = 12;break;case 8:columnWidth = 50;break;case 11:case 12:columnWidth = 14;break;default:columnWidth = 20;break;}column->setProperty("ColumnWidth", columnWidth);  // 设置每列的宽度根据实际自己调整delete font;delete range;delete column;delete cell;}qDebug() << "人员信息导出:表头写入 " + str << Qt::endl;// 写入数据for (int row = 2; row <= rowCount; ++row){str = "";for (int col = 1; col <= colCount; ++col){QVariant data = itemModel->index(row - 2, col - 1).data();QAxObject *cell = worksheet->querySubObject("Cells(int,int)", row, col);// 前缀单引号以确保作为文本处理if (data.toString().length() == 18 && data.toString().contains(QRegExp("\\d{18}"))){// 检查是否是身份证号(假设身份证号是18位数字)cell->dynamicCall("SetValue(const QVariant&)", QString("'") + data.toString());}else if (data.toString().length() == 11 && data.toString().contains(QRegExp("\\d{11}"))){// 检查是否是手机号码(假设手机号码是11位数字)cell->dynamicCall("SetValue(const QVariant&)", QString("'") + data.toString());}else{cell->dynamicCall("SetValue(const QVariant&)", data.toString());}// 设置单元格格式为文本cell->setProperty("NumberFormat", "@");           // "@" 表示文本格式cell->setProperty("HorizontalAlignment", -4108);  // 水平居中cell->setProperty("VerticalAlignment", -4108);    // 垂直居中str += data.toString() + " ";delete cell;}qDebug() << "人员信息导出:数据写入 " + str << Qt::endl;}this->fun_statusBar("人员信息导出 数据表数据写入成功!");// 保存工作簿if (!workbook->dynamicCall("SaveAs(const QString&)", QDir::toNativeSeparators(fileName)).toBool()){skysonya.messageBox("warning", wTitle, "保存Excel文件失败!");}}else{skysonya.messageBox("warning", wTitle, "打开数据表失败!");}// 关闭工作簿workbook->dynamicCall("Close (bool)", false);// 退出Excel应用程序excel->dynamicCall("Quit()");// 清理对象delete worksheet;delete worksheets;delete workbook;delete workbooks;delete excel;
}
else
{skysonya.messageBox("warning", wTitle, "创建Excel对象失败!");
}
ui->pbtn2->setEnabled(true);
this->fun_statusBar()为自己构建的函数,代码如下:
//状态栏信息显示
void MainWindow::fun_statusBar(QString str)
{str = " 提示信息:" + str;this->statusBar()->showMessage(str);qDebug() << str << Qt::endl;
}

skysonya.messageBox()函数前文中已有介绍。

http://www.yayakq.cn/news/436919/

相关文章:

  • 让别人看到自己做的网站房地产做网站不
  • 中国空间站朋友圈泰安网络推广 网站建设 网站优化
  • 做自己的卡盟网站正规分销平台哪个好
  • 怎么制作网站源码北京建设企业协会网站
  • 备案 增加网站深圳苏州旅游网站建设服务
  • 从江网站建设wordpress文本小工具栏
  • 网站建设前置审批西安网站建设公司哪有
  • html5手机网站分辩率网站开发微信支付
  • 江阴外贸网站建设公司官方网站下载qq音速
  • 一个虚拟主机怎么做多个网站微信管理
  • 做网站被骗3000企业营销策划论文
  • 邢台企业网站建设服务佛山网站上排名
  • 大秦建设集团有限责任公司官方网站苏州 互联网
  • 网站推广中h1标签的重要性小程序加盟代理优势
  • 公司做年审在哪个网站wordpress 微信打赏
  • 石嘴山网站seo中国招投标采购网官网
  • 网站后台和前台不一致新闻稿范文300字
  • 深圳电子商务网站有哪些抖音代运营业务介绍
  • 网站背景音乐怎么做动态型网站建设
  • 网站底部关键词指向杭州专业网站建设公司哪家好
  • 鞋店网站建设方案网站正在建设中界面设计
  • 服装网站首页设计福田蒙派克质量怎么样
  • 博罗做网站报价网站开发需要多长时间
  • 福田莲花网站建设营销网站建设平台
  • 网站怎么做实名认证吗制作网站设计的技术有
  • 如何用cms做网站新媒体seo培训
  • 专业网站制作网站公司编程语言
  • 网站开发整体制作流程平凉北京网站建设
  • 学校网站开发与设计wordpress面向开发
  • 我公司是做网站开发的怎么纳税网站建设需要大约多少钱