Qt读取excel文件

RT,Qt读取excel

#include "xlsIO.h"
#include <ActiveQt/QAxWidget>
#include <ActiveQt/QAxObject>
#include <QVariant>
#include <QFileDialog>
#include <QMainWindow>
#include <QTextCodec>
#include <QMessageBox>
#include <qDebug>
#include <vector>
#include "ui_teacherassistant.h"

using namespace std;

bool XlsIO::xlsReader(QString excelPath,vector<string> &stuNames)
{
	QAxObject excel("Excel.Application");
	excel.setProperty("Visible", false);
	QAxObject *work_books = excel.querySubObject("WorkBooks");
	work_books->dynamicCall("Open (const QString&)", excelPath);
	QAxObject *work_book = excel.querySubObject("ActiveWorkBook");
	QAxObject *work_sheets = work_book->querySubObject("Sheets");  //Sheets也可换用WorkSheets
	int sheet_count = work_sheets->property("Count").toInt();  //获取工作表数目

	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();  //获取起始行:1
		//int column_start = used_range->property("Column").toInt();  //获取起始列
		int row_count = rows->property("Count").toInt();  //获取行数
		//int column_count = columns->property("Count").toInt();  //获取列数

		QString StudentName;
		for(int i=row_start+4; i<=row_count;i++)
		{
			QAxObject *cell = work_sheet->querySubObject("Cells(int,int)", i, 3);
			StudentName = cell->dynamicCall("Value2()").toString();//获取单元格内容
// 			cell = work_sheet->querySubObject("Cells(int,int)", i, 3);
// 			StudentNum[i-1] = cell->dynamicCall("Value2()").toString();//获取(i,3)

			stuNames.push_back(StudentName.toStdString());
		}
	}

	work_books->dynamicCall("Close()");//关闭工作簿
	excel.dynamicCall("Quit()");//关闭excel

	return true;
}
时间: 2024-09-12 04:35:12

Qt读取excel文件的相关文章

关于qt读取xml文件并作为excel文件表头

问题描述 关于qt读取xml文件并作为excel文件表头 新使用Qt,求大神指点:如何使用Qt读取xml文件,然后将其节点属性作为excel文件的表头输出呢? 解决方案 http://blog.csdn.net/liyuanbhu/article/details/44062479

ADO.NET读取Excel文件并作为数据源

项目中需要用的功能,贴上代码了. 需要注意的地方:配置Web.config的时候要注意版本问题! //若是在Web.config中配置数据源,如下 <add key="ExcelConnectionString" value="Provider=Microsoft.Jet.OLEDB.4.0; Data Source='miroExcel/Info.xls';Extended Properties='Excel 8.0;HDR=yes;IMEX=2'"/>

直接读取Excel文件数据

前言 由于种种需要直接进行读取Excel文件数据,然而在网上Search多次也没有找到好的方法, 一般就通过ODBC或OLE方式进行读取,但这两种方法都具有局限性...(我相信大家都很清楚). 怎么办呢?没办法了,只好选择最艰难的路了--分析Excel文件格式. 介绍 MS Excel是众所周知的电子表格处理软件.Excel文件格式是特定的BIFF(Binary Interchange File Format),BIFF里存储了很多记录,第条记录包括记录头和记录体.记录头是4byte,前两位指定

使用Apache POI读取Excel文件

Apache POI是Apache软件基金会的开放源码函式库,用来帮助Java程序读写Microsoft Office的格式档案.POI提供了下面这几种类型对Microsoft Office的格式档案进行解析: HSSF - 提供读写Microsoft Excel XLS格式档案的功能. XSSF - 提供读写Microsoft Excel OOXML XLSX格式档案的功能. HWPF - 提供读写Microsoft Word DOC格式档案的功能. HSLF - 提供读写Microsoft

读取Excel文件时出现null的解决方法

在以往读取Excel文件时常常出现读取某些字段为null值,其实是有值,原因是读取文件时,Excel会以第一行的数据类型为参考,如果后边的与其不一致,则会出现些问题. 以下一个朋友的解决方案,他的Excel文件的连接串写作如下.据说可以强制数据为字符串,具体我没有再测试.仅供参考. string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + sPath + ";Extended Properties='

asp.net读取excel文件的三种方法示例

 这篇文章主要介绍了asp.net读取excel文件的三种方法示例,包括采用OleDB读取Excel文件.引用的com组件读取Excel文件.用文件流读取,需要的朋友可以参考下 方法一:采用OleDB读取Excel文件   把Excel文件当做一个数据源来进行数据的读取操作,实例如下:  代码如下: public DataSet ExcelToDS(string Path)    {    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;&q

php读取excel文件示例

 这篇文章主要介绍了php读取excel文件示例,还有更新修改功能,需要的朋友可以参考下  代码如下: //模板存放目录 $dir = $DOCUMENT_ROOT.'/backoffice/admin/oemcheck/';   $templateName = '1.xlsx'; $outputFileName = '模板.xlsx'; $txt='test';   //实例化Excel读取类 $PHPReader = new PHPExcel_Reader_Excel2007(); if(!

.NET读取Excel文件的三种方法的区别_实用技巧

ASP.NET读取Excel文件方法一:采用OleDB读取Excel文件: 把Excel文件当做一个数据源来进行数据的读取操作,实例如下: 复制代码 代码如下: public DataSet ExcelToDS(string Path)   {    string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Prop

java-在使用JXLS读取excel文件时,超过10位的数字格式错误

问题描述 在使用JXLS读取excel文件时,超过10位的数字格式错误 Hi,我正在使用jxls实现导入excel的功能.但现在遇到一个很棘手的问题:jxls在遇到长度超过10位的数字时,如12345678912,会将其转成1.2345678E10.有没有什么办法可以解决这个问题. 解决方案 excel中按右键 点击设置单元格格式 把这串数字编辑成为字符串文本格式 然后保存 解决方案二: 可以在excel中数字之前加上', 这样就可以把这个单元格的内容变成文本,程序里取字符串 不要取数字