Qt中读写Excel
来源:互联网 发布:淘宝怎么投诉卖家版权 编辑:程序博客网 时间:2024/04/26 12:25
这两天需要写一个程序需要将统计结果写入Excel,搜索了相关资料,这里做个简单的记录:
首先创建一个Qt application工程,记得添加下面这两个库:
然后需要添加这个lib:qaxcontainerd.lib,如图:
头文件中记得添加这个:
#include <ActiveQt/QAxObject>以上步骤配置好之后就可以利用Qt对Excel进行读写了,下面这些具体的操作是引用自以下博客:http://blog.sina.com.cn/s/blog_a6fb6cc90101gv2p.html
Excel读取
主要读取内容:
- 标题
- 工作表数目
- 工作表名称
- 起始行
- 起始列
- 行数
- 列数
- 单元格内容
QAxObject excel("Excel.Application"); excel.setProperty("Visible", true); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_books->dynamicCall("Open (const QString&)", QString("E:/test.xlsx"));QVariant title_value = excel.property("Caption"); //获取标题qDebug()<<QString("excel title : ")<<title_value; QAxObject *work_book = excel.querySubObject("ActiveWorkBook"); QAxObject *work_sheets = work_book->querySubObject("Sheets"); //Sheets也可换用WorkSheetsint sheet_count = work_sheets->property("Count").toInt(); //获取工作表数目qDebug()<<QString("sheet count : ")<<sheet_count; for(int i=1; i<=sheet_count; i++) { QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", i); //Sheets(int)也可换用Worksheets(int)QString work_sheet_name = work_sheet->property("Name").toString(); //获取工作表名称QString message = QString("sheet ")+QString::number(i, 10)+ QString(" name");qDebug()<<message<<work_sheet_name; }if(sheet_count > 0){QAxObject *work_sheet = work_book->querySubObject("Sheets(int)", 1); QAxObject *used_range = work_sheet->querySubObject("UsedRange"); QAxObject *rows = used_range->querySubObject("Rows"); QAxObject *columns = used_range->querySubObject("Columns"); int row_start = used_range->property("Row").toInt(); //获取起始行 int column_start = used_range->property("Column").toInt(); //获取起始列int row_count = rows->property("Count").toInt(); //获取行数int column_count = columns->property("Count").toInt(); //获取列数for(int i=row_start; i{ for(int j=column_start; j{ QAxObject *cell = work_sheet->querySubObject("Cells(int,int)", i, j); QVariant cell_value = cell->property("Value"); //获取单元格内容QString message = QString("row-")+QString::number(i, 10)+QString("-column-")+QString::number(j, 10)+QString(":");qDebug()<<message<<cell_value; } } }
Excel增、删、改
主要操作:
- 设置标题
- 插入工作表(至最后一行)
- 设置工作表名称
- 删除工作表
- 设置单元格内容
- 设置单元格字体(类型、大小、加粗、斜体、下划线、颜色等)
- 设置单元格对齐方式
- 设置单元格高度、宽度
- 设置单元格背景色、边框色
- 合并/拆分单元格
- 清空单元格
QAxObject excel("Excel.Application"); excel.setProperty("Visible", true); QAxObject *work_books = excel.querySubObject("WorkBooks"); work_books->dynamicCall("Open(const QString&)", "E:\\test.xlsx");excel.setProperty("Caption", "Qt Excel");QAxObject *work_book = excel.querySubObject("ActiveWorkBook"); QAxObject *work_sheets = work_book->querySubObject("Sheets"); //Sheets也可换用WorkSheets//删除工作表(删除第一个)QAxObject *first_sheet = work_sheets->querySubObject("Item(int)", 1);first_sheet->dynamicCall("delete");//插入工作表(插入至最后一行)int sheet_count = work_sheets->property("Count").toInt(); //获取工作表数目QAxObject *last_sheet = work_sheets->querySubObject("Item(int)", sheet_count);QAxObject *work_sheet = work_sheets->querySubObject("Add(QVariant)", last_sheet->asVariant());last_sheet->dynamicCall("Move(QVariant)", work_sheet->asVariant());work_sheet->setProperty("Name", "Qt Sheet"); //设置工作表名称//操作单元格(第2行第2列)QAxObject *cell = work_sheet->querySubObject("Cells(int,int)", 2, 2);cell->setProperty("Value", "Java C++ C# PHP Perl Python Delphi Ruby"); //设置单元格值cell->setProperty("RowHeight", 50); //设置单元格行高cell->setProperty("ColumnWidth", 30); //设置单元格列宽cell->setProperty("HorizontalAlignment", -4108); //左对齐(xlLeft):-4131 居中(xlCenter):-4108 右对齐(xlRight):-4152cell->setProperty("VerticalAlignment", -4108); //上对齐(xlTop)-4160 居中(xlCenter):-4108 下对齐(xlBottom):-4107cell->setProperty("WrapText", true); //内容过多,自动换行//cell->dynamicCall("ClearContents()"); //清空单元格内容QAxObject* interior = cell->querySubObject("Interior");interior->setProperty("Color", QColor(0, 255, 0)); //设置单元格背景色(绿色)QAxObject* border = cell->querySubObject("Borders"); border->setProperty("Color", QColor(0, 0, 255)); //设置单元格边框色(蓝色)QAxObject *font = cell->querySubObject("Font"); //获取单元格字体font->setProperty("Name", QStringLiteral("华文彩云")); //设置单元格字体font->setProperty("Bold", true); //设置单元格字体加粗font->setProperty("Size", 20); //设置单元格字体大小font->setProperty("Italic", true); //设置单元格字体斜体font->setProperty("Underline", 2); //设置单元格下划线font->setProperty("Color", QColor(255, 0, 0)); //设置单元格字体颜色(红色)//设置单元格内容,并合并单元格(第5行第3列-第8行第5列)QAxObject *cell_5_6 = work_sheet->querySubObject("Cells(int,int)", 5, 3);cell_5_6->setProperty("Value", "Java"); //设置单元格值QAxObject *cell_8_5 = work_sheet->querySubObject("Cells(int,int)", 8, 5);cell_8_5->setProperty("Value", "C++");QString merge_cell;merge_cell.append(QChar(3 - 1 + 'A')); //初始列merge_cell.append(QString::number(5)); //初始行merge_cell.append(":");merge_cell.append(QChar(5 - 1 + 'A')); //终止列merge_cell.append(QString::number(8)); //终止行QAxObject *merge_range = work_sheet->querySubObject("Range(const QString&)", merge_cell);merge_range->setProperty("HorizontalAlignment", -4108);merge_range->setProperty("VerticalAlignment", -4108);merge_range->setProperty("WrapText", true);merge_range->setProperty("MergeCells", true); //合并单元格//merge_range->setProperty("MergeCells", false); //拆分单元格//work_book->dynamicCall("Save()"); //保存文件(为了对比test与下面的test2文件,这里不做保存操作) work_book->dynamicCall("SaveAs(const QString&)", "E:\\test2.xlsx"); //另存为另一个文件 work_book->dynamicCall("Close(Boolean)", false); //关闭文件excel.dynamicCall("Quit(void)"); //退出
顺便记录一下,在Qt中如果要让菜单显示中文方法:QString::fromLocal8Bit("需要显示的中文");
0 0
- Qt中读写Excel
- Qt 中读写Excel
- Qt读写Excel
- qt读写excel
- qt之读写excel
- VS+Qt读写Excel
- QT:QOdbc 读写 excel数据
- 【QT】读写excel(链接)
- python中读写excel
- java中读写Excel
- JAVA中读写EXCEL
- Qt 读写Excel,并显示到tablewidget
- Qt 读写Excel,并显示到tablewidget
- Qt 读写Excel,并显示到tablewidget
- Qt 下快速读写Excel指南
- Qt 读写Excel并显示到tablewidget
- Qt Windows 下快速读写Excel指南
- QT 中使用excel
- 移动端页面的尺寸设置
- 【ASP.NET】Webform与MVC开发比较
- js中push()的用法
- 高性能网站架构之负载均衡 Nginx+tomcat+redis实现tomcat集群
- js兼容性
- Qt中读写Excel
- 折线动画、渐变色
- java.lang.NoSuchFieldException: resourceEntries
- cc-day
- EJS学习总结
- 从头到尾写SQL(五)
- Linux版本openoffice4.1.2和SwfTools的安装(CentOS6.5-6.7)
- leetcode Longest Increasing Path in a Matrix
- 欢迎使用CSDN-markdown编辑器