欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

QT文件保存--excel、txt

程序员文章站 2022-03-31 19:17:59
...

对excel数据保存,一下为部分代码:

void savedatatoexcel(QString &fileName, QString &ss)
{
    newExcel(fileName);
    setCellValue(j - y + 1, i - x + 1, ss);
	saveExcel(fileName);
	freeExcel();	
}

void Thread::newExcel(const QString &fileName)
{
	HRESULT r = OleInitialize(0);
	CoInitialize(0);
	if (r != S_OK && r != S_FALSE) {
		qWarning("Qt: Could not initialize OLE (error %x)\n", (unsigned int)r);
	}
	pApplication = new QAxObject("Excel.Application");
	if (pApplication == NULL) {
		qWarning("pApplication\n"); return;
	}
	pApplication->dynamicCall("SetVisible(bool)", false);	//false不显示窗体
	pApplication->setProperty("DisplayAlerts", false);		//不显示任何警告信息。
	pWorkBooks = pApplication->querySubObject("Workbooks");
	QFile file(fileName);
	if (file.exists())
	{
		pWorkBook = pWorkBooks->querySubObject("Open(const QString &)", fileName);
	}
	else
	{
		pWorkBooks->dynamicCall("Add");
		pWorkBook = pApplication->querySubObject("ActiveWorkBook");
	}
	pSheets = pWorkBook->querySubObject("Sheets");
	pSheet = pSheets->querySubObject("Item(int)", 1);
}

void Thread::appendSheet(const QString &sheetName, int cnt)
{
	QAxObject *pLastSheet = pSheets->querySubObject("Item(int)", cnt);
	pSheets->querySubObject("Add(QVariant)", pLastSheet->asVariant());
	pSheet = pSheets->querySubObject("Item(int)", cnt);
	pLastSheet->dynamicCall("Move(QVariant)", pSheet->asVariant());
	pSheet->setProperty("Name", sheetName);
}

void Thread::setCellValue(int row, int column, const QString &value)
{
	QAxObject *pRange = pSheet->querySubObject("Cells(int,int)", row, column);
	pRange->dynamicCall("Value", value);
	QAxObject *interior = pRange->querySubObject("Interior");
	//设置单元格字体颜色
	interior->setProperty("Color", QColor(cl.r, cl.g, cl.b));
}

void Thread::saveExcel(const QString &fileName)
{
	pWorkBook->dynamicCall("SaveAs(const QString &)",
		QDir::toNativeSeparators(fileName));
}

void Thread::freeExcel()
{
	if (pApplication != NULL)
	{
		pApplication->dynamicCall("Quit()");
		delete pApplication;
		pApplication = NULL;
	}
	emit over();
}

对txt数据保存,一下为部分代码:

#include <iostream>
#include <QVector>
#include <string>
#include <fstream>
using namespace std;

void savetxt(QVector<double> vec,string sr)
{
	//将最终结果保存为xml或txt文档
	ofstream outfile;
	outfile.open(sr);
	for (int i = 0; i < vec.size(); i++)
	{
		outfile << vec[i] << endl;
	}
	outfile.close();
}

以及涉及一些文件名和系统时间命名规则,部分代码如下:

char Outname[200];
QDateTime dt;
QTime time;
QDate date;
dt.setTime(time.currentTime());
dt.setDate(date.currentDate());
QString qcurrentDate = dt.toString("yyyy.MM.dd.hh.mm.ss");
sprintf(Outname, "%s.xlsx", qcurrentDate.toLatin1().data());
QString vbvb = QString("%1").arg(Outname);
//其中前两个为参数,可随实际更改
QString fileNametmp = telecentricity1 + telecentricitypara1 + vbvb;