VS+Qt配置QtXlsx庫實現execl文件導入導出(全教程)

一、配置QtXlsx

1.1 下載解壓QtXlsxWriter(在github下載即可)

網址:https://github.com/dbzhang800/QtXlsxWriter

1.2 使用qt運行

  1. 點擊qtxlsx.pro運行QtXlsxWriter

  2. 選擇DesktopQt51211MSVC201564bit編譯器(選擇自己本地電腦qt安裝的編譯器即可)

  3. 編譯運行(debug或release都行)

1.3 移植

1、拷貝 D:\xlsxtool\QtXlsxWriter-master\build-qtxlsx-DesktopQt51211MSVC201564bit-Debug\include\ 里的QtXlsx到C:\Qt\Qt5.12.11\5.12.11\msvc201564\include。

2、拷貝 D:\xlsxtool\QtXlsxWriter-master\QtXlsxWriter-master\src\xlsx的所有頭文件到C:\Qt\Qt5.12.11\5.12.11\msvc201564\include\QtXlsx中。

3、拷貝 D:\xlsxtool\QtXlsxWriter-master\build-qtxlsx-DesktopQt51211MSVC201564bit-Debug\lib 的Qt5Xlsx.lib,Qt5Xlsxd.lib,Qt5Xlsx.prl,Qt5Xlsxd.prl到C:\Qt\Qt5.12.11\5.12.11\msvc201564\lib。

4、拷貝 D:\xlsxtool\QtXlsxWriter-master\build-qtxlsx-DesktopQt51211MSVC201564bit-Debug\mkspecs\modules中的qtlibxlsx.pri文件到C:\Qt\Qt5.12.11\5.12.11\msvc201564\mkspecs\modules中。

5、拷貝D:\xlsxtool\QtXlsxWriter-master\build-qtxlsx-DesktopQt51211MSVC201564bit-Debug\lib 的Qt5Xlsx.dll,Qt5Xlsxd.dll到C:\Qt\Qt5.12.11\5.12.11\msvc201564\bin中

1.4 打開vs配置項目屬性

如上配置完成后就能調用#include 了。

二、execl的導入導出

//導入動作槽函數
void SMachine::on_importAct_slot()
{QString filePath = QFileDialog::getOpenFileName(this, tr("打開文件"), m_programPath, "*.xlsx *.xls");if (!filePath.isEmpty()) {openProgramFile(filePath);  //調用實際執行導入操作的函數}
}//導出動作作槽函數
void SMachine::on_exportAct_slot()
{if (m_tableWidget == nullptr) return;// 獲取表格數據QList<QStringList> tableData;for (int row = 0; row < m_tableWidget->rowCount(); row++) {QStringList rowData;for (int column = 0; column < m_tableWidget->columnCount(); column++) {QTableWidgetItem* item = m_tableWidget->item(row, column);if (item != NULL) {rowData.append(item->text());}else {rowData.append("");}}tableData.append(rowData);}// 創建Excel文件QXlsx::Document xlsx;//1、遍歷表頭int columnCount = m_tableWidget->columnCount();for (int col = 0; col < columnCount; ++col){QTableWidgetItem* headerItem = m_tableWidget->horizontalHeaderItem(col);if (headerItem){QString text = headerItem->text();xlsx.write(1, col + 1, headerItem->text());}elsexlsx.write(1, col + 1, "");}//2、遍歷內容for (int row = 0; row < tableData.size(); row++){for (int column = 0; column < tableData[row].size(); column++)xlsx.write(row + 2, column + 1, tableData[row][column]);}//3、另存為QString filePath = QFileDialog::getSaveFileName(this, tr("另存為"), m_programPath, "*.xlsx *.xls");if (filePath.isEmpty()) return;xlsx.saveAs(filePath);//4、順便打開已導出(即已另存為)的文件openProgramFile(filePath);
}//根據文件名執行導入excel文件操作的函數
void SMachine::openProgramFile(QString file)
{if (file.isEmpty()) return;QFileInfo fileInfo(file);m_programName = fileInfo.fileName();    //更新文件名if (m_tableWidget != nullptr){ui.tableLayout->removeWidget(m_tableWidget);m_tableWidget->clearContents();m_tableWidget->clear();}//初始化表if (m_tableWidget == nullptr){m_tableWidget = new QTableWidget(this);//m_tableWidget->verticalHeader()->setHidden(true);   //隱藏垂直表頭}//設置表頭QTableWidgetItem* headerItem;QStringList headerText;headerText << tr("序號") << tr("X軸") << tr("Y軸") << tr("角度") << tr("站位") << tr("腳位") << tr("元件名稱") << tr("元件類型") << tr("腳寬");m_tableWidget->setColumnCount(headerText.count());for (int i = 0; i < m_tableWidget->columnCount(); i++) {headerItem = new QTableWidgetItem(headerText.at(i));QFont font = headerItem->font();font.setPointSize(9);  //設置字體字號headerItem->setTextColor(Qt::blue); //設置顏色headerItem->setFont(font);m_tableWidget->setHorizontalHeaderItem(i, headerItem);}m_tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); //設置列寬自適應//打開文件Document xlsx(file);QXlsx::Workbook* workBook = xlsx.workbook();QXlsx::Worksheet* workSheet = static_cast<QXlsx::Worksheet*>(workBook->sheet(0));//第一個標簽頁QString value;int rows = workSheet->dimension().rowCount();int cols = workSheet->dimension().columnCount();for (int i = 2; i <= rows; i++){int row = m_tableWidget->rowCount();m_tableWidget->insertRow(row);for (int j = 1; j <= cols; j++){QXlsx::Cell* cell = workSheet->cellAt(i, j);if (cell != nullptr){value = cell->value().toString();QTableWidgetItem* item = new QTableWidgetItem(value);m_tableWidget->setItem(i - 2, j - 1, item);}}}ui.tableLayout->addWidget(m_tableWidget);ui.programLE->setText(m_programName);
}

三、調用本地系統默認程序打開/修改execl文件

void SMachine::on_modifyAct_slot()
{QString filePath = QFileDialog::getOpenFileName(this, "選擇 Excel 文件", m_programPath, "Excel 文件 (*.xlsx *.xls)");if (filePath.isEmpty()) {QMessageBox::warning(this, "警告", "未選擇文件!");return;}//利用系統默認程序打開文件bool success = QDesktopServices::openUrl(QUrl::fromLocalFile(filePath));if (!success) {QMessageBox::critical(this, "錯誤", "無法打開 Excel 文件!");}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76430.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76430.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76430.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Golang的文件處理優化策略

Golang的文件處理優化策略 一、Golang的文件處理優化策略概述 是一門效率高、易于編程的編程語言&#xff0c;它的文件處理能力也非常強大。 在實際開發中&#xff0c;需要注意一些優化策略&#xff0c;以提高文件處理的效率和性能。 本文將介紹Golang中的文件處理優化策略&…

自學-C語言-基礎-數組、函數、指針、結構體和共同體、文件

這里寫自定義目錄標題 代碼環境&#xff1a;&#xff1f;問題思考&#xff1a;一、數組二、函數三、指針四、結構體和共同體五、文件問題答案&#xff1a; 代碼環境&#xff1a; Dev C &#xff1f;問題思考&#xff1a; 把上門的字母與下面相同的字母相連&#xff0c;線不能…

VMware+Ubuntu+VScode+ROS一站式教學+常見問題解決

目錄 一.VMware的安裝 二.Ubuntu下載 1.前言 2.Ubuntu版本選擇 三.VMware中Ubuntu的安裝 四.Ubuntu系統基本設置 1.中文更改 2.中文輸入法更改 3. 輔助工具 vmware tools 五.VScode的安裝ros基本插件 1.安裝 2.ros輔助插件下載 六.ROS安裝 1.安裝ros 2.配置ROS…

PostgreSQL pg_repack 重新組織表并釋放表空間

pg_repack pg_repack是 PostgreSQL 的一個擴展&#xff0c;它允許您從表和索引中刪除膨脹&#xff0c;并可選擇恢復聚集索引的物理順序。與CLUSTER和VACUUM FULL不同&#xff0c;它可以在線工作&#xff0c;在處理過程中無需對已處理的表保持獨占鎖定。pg_repack 啟動效率高&a…

5G_WiFi_CE_射頻輸出功率、發射功率控制(TPC)和功率密度測試

目錄 一、規范要求 1、法規目錄&#xff1a; &#xff08;1&#xff09;RF Output Power (2)Transmit Power Control (TPC) &#xff08;3&#xff09;Power Density 2、限值&#xff1a; 二、EIRP測試方法 &#xff08;1&#xff09;測試條件 &#xff08;2&#xff…

掃描線離散化線段樹解決矩形面積并-洛谷P5490

https://www.luogu.com.cn/problem/P5490 題目描述 求 n n n 個四邊平行于坐標軸的矩形的面積并。 輸入格式 第一行一個正整數 n n n。 接下來 n n n 行每行四個非負整數 x 1 , y 1 , x 2 , y 2 x_1, y_1, x_2, y_2 x1?,y1?,x2?,y2?&#xff0c;表示一個矩形的四個…

Java項目之基于ssm的簡易版營業廳寬帶系統(源碼+文檔)

項目簡介 簡易版營業廳寬帶系統實現了以下功能&#xff1a; 此營業廳寬帶系統利用當下成熟完善的SSM框架&#xff0c;使用跨平臺的可開發大型商業網站的Java語言&#xff0c;以及最受歡迎的RDBMS應用軟件之一的Mysql數據庫進行程序開發。實現了營業廳寬帶系統基礎數據的管理&…

從入門到入土,SQLServer 2022慢查詢問題總結

列為,由于公司原因,作者接觸了一個SQLServer 2022作為數據存儲到項目,可能是上一任的哥們兒離開的時候帶有情緒,所以現在項目的主要問題就是,所有功能都實現了,但是就是慢,列表頁3s打底,客戶很生氣,經過幾周摸爬滾打,作以下總結,作為自己的成長記錄。 一、索引問題…

PDF處理控件Aspose.PDF教程:在Python、Java 和 C# 中旋轉 PDF 文檔

您是否希望快速輕松地在線旋轉PDF文檔&#xff1f;無論您需要修復文檔的方向還是只想重新排列頁面&#xff0c;本指南都能滿足您的需求。有簡單的方法可以解決此問題 - 無論您喜歡在線工具還是編程解決方案。 在本指南中&#xff0c;我們將向您展示如何免費在線旋轉 PDF&#…

編譯原理:first集和follow

一、First 集&#xff08;首符號集&#xff09; 定義&#xff1a; 對于符號&#xff08;非終結符或終結符&#xff09;或符號串&#xff0c;First 集是該符號串能夠推導出的所有可能開頭的終結符的集合。若符號串可以推導出空串&#xff08;ε&#xff09;&#xff0c;則 ε 也…

python實現簡單fast-cgi服務,對接到nginx

python代碼 import socket import struct import threading# FastCGI 頭格式&#xff08;8 字節&#xff09; FCGI_HEADER_FORMAT "!BBHHBx" FCGI_VERSION 1 FCGI_TYPE_BEGIN_REQUEST 1 FCGI_TYPE_PARAMS 4 FCGI_TYPE_STDIN 5 FCGI_TYPE_STDOUT 6 FCGI_TYPE_E…

vue開始時間小于等于結束時間,且開始時間小于等于系統時間,時間格式:年月日時分

// 日期配置 export const DATA_CONFIGS [{itemKey: "startDate",startDateKey: "startDate",endDateKey: "endDate",isStart: true,},{itemKey: "endDate",startDateKey: "startDate",endDateKey: "endDate",is…

PyCharm 下載與安裝教程:從零開始搭建你的 Python 開發環境

PyCharm 是一款專為 Python 開發設計的集成開發環境&#xff08;IDE&#xff09;&#xff0c;它提供了強大的代碼編輯、調試、版本控制等功能&#xff0c;是 Python 開發者的必備工具之一。如果你是初學者&#xff0c;或者正在尋找一款高效的開發工具&#xff0c;這篇文章將幫助…

Qt線程等待條件QWaitCondition

Qt 線程等待條件 概念 Qt提供了QWaitCondition類實現“等待條件”式的線程控制方法&#xff0c;它讓線程阻塞在等待條件的地方&#xff0c;直到條件滿足后才繼續執行下去。也就是說&#xff0c;QWaitCondition可以使一個線程在滿足一定條件時通知其他多個線程&#xff0c;使它…

RAG 和 RAGFlow 學習筆記

一、RAG&#xff08;檢索增強生成&#xff09; 1. RAG 的定義與核心思想 RAG&#xff08;Retrieval-Augmented Generation&#xff0c;檢索增強生成&#xff09; 是一種結合 信息檢索&#xff08;Retrieval&#xff09; 和 文本生成&#xff08;Generation&#xff09; 的技術…

Windows連接服務器Ubuntu_MobaXterm

通過 SSH 遠程連接&#xff08;命令行方式&#xff09; &#x1f527; 所需工具&#xff1a; Windows&#xff1a;MobaXterm&#xff08;強烈推薦&#xff09;或 PuTTY Ubuntu&#xff1a;已開啟 SSH 服務 Ubuntu 開啟 SSH 服務&#xff08;僅需一次&#xff09; 在 Ubuntu …

Rust 中的高效視頻處理:利用硬件加速應對高分辨率視頻

引言 在視頻處理領域&#xff0c;隨著4K、8K甚至更高分辨率內容的普及&#xff0c;傳統的CPU計算方式逐漸顯得力不從心。無論是視頻剪輯、直播流處理還是格式轉換&#xff0c;高負載場景下CPU占用過高的問題常常讓開發者頭疼。硬件加速技術通過利用GPU等專用硬件分擔編解碼任務…

大模型提示工程中,提示、補全、指令、上下文和樣本這幾個概念的區別是什么?

提示 (Prompt) 定義&#xff1a;輸入給大模型的完整文本刺激&#xff0c;是與模型交互的主要方式。 特點&#xff1a; 是最廣義的概念&#xff0c;包含其他幾個元素整體輸入的總和&#xff0c;包括指令、上下文和樣本等內容決定模型如何理解和處理請求 示例&#xff1a; 分…

AI的未來演進

企業數字IP實戰&#xff1a;創始人分身如何實現品宣獲客雙贏&#xff1f; ——從量子化建模到聯邦學習的全鏈路技術拆解 一、行業痛點&#xff1a;品牌信任與獲客效率的雙重困局 2025年數據顯示&#xff0c;73%的企業因傳統營銷模式效率低下錯失市場機遇&#xff08;家居品牌…

軟件定義無線電39

13.8 RFSoC上PYNQ的SDR設計流程 本節中詳細介紹的設計過程可以分為六個獨立的步驟&#xff0c;如圖13.16所示&#xff0c;并在接下來的幾頁中進行討論。 13.8.1 初始設計過程 。在這里&#xff0c;系統設計人員必須考慮許多因素&#xff0c;例如RFDC接收和/或發送的頻率范圍…