QTableWidget 导出到csv表格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lengyuezuixue/article/details/82502853
class TableToExcle : public QDialog  
{  
    Q_OBJECT  
  
public:  
    TableToExcle(QWidget *parent = 0, Qt::WFlags flags = 0);  
    ~TableToExcle();  
  
private:  
    Ui::TableToExcleClass ui;  
    private slots:  
        void addRowSlot();  
        void delRowSlot();  
        void exportSlot();  
};  
TableToExcle::TableToExcle(QWidget *parent, Qt::WFlags flags)
	: QDialog(parent, flags)
{
	ui.setupUi(this);
	ui.m_pTable->setColumnCount(4);
	 QTableWidgetItem * item = new QTableWidgetItem("0"); 
	ui.m_pTable->setHorizontalHeaderItem ( 0, item );
	item = new QTableWidgetItem("1"); 
	ui.m_pTable->setHorizontalHeaderItem ( 1, item );
	item = new QTableWidgetItem("2"); 
	ui.m_pTable->setHorizontalHeaderItem ( 2, item );
	item = new QTableWidgetItem("3"); 
	 ui.m_pTable->setHorizontalHeaderItem ( 3, item );
	ui.m_pTable->setSelectionBehavior(QAbstractItemView::SelectRows);
	connect(ui.m_pAddBtn,SIGNAL(clicked()),this,SLOT(addRowSlot()));
	connect(ui.m_pDelBtn,SIGNAL(clicked()),this,SLOT(delRowSlot()));
	connect(ui.m_pExportBtn,SIGNAL(clicked()),this,SLOT(exportSlot()));
}
 
TableToExcle::~TableToExcle()
{
 
}
 
void TableToExcle::addRowSlot()
{
   ui.m_pTable->insertRow(ui.m_pTable->rowCount());
 
}
 
void TableToExcle::delRowSlot()
{
   int index = ui.m_pTable->currentRow ();
   if (index > -1)
   {
	   ui.m_pTable->removeRow(index);
   }
}
 
void TableToExcle::exportSlot()
{
	QString fileName = QFileDialog::getSaveFileName(this, tr("Save File")," ",tr("file (*.csv)"));
	if (!fileName.isEmpty())
	{
		QFile file(fileName);
		bool ret = file.open( QIODevice::Truncate | QIODevice::WriteOnly);
		if(!ret)
			return;
 
		QTextStream stream(&file);
		QString conTents;		 		 
		QHeaderView * header = ui.m_pTable->horizontalHeader() ;
		if (header)
		{
			for ( int i = 0; i < header->count(); i++ )
			{
				QTableWidgetItem *item = ui.m_pTable->horizontalHeaderItem(i);
				if (!item)
				{
					continue;
				}
				conTents += item->text() + ",";
			}
			conTents += "\n";
		}
 
		for ( int i = 0 ; i < ui.m_pTable->rowCount(); i++ )
		{
			for ( int j = 0; j < ui.m_pTable->columnCount(); j++ )
			{
 
				QTableWidgetItem* item = ui.m_pTable->item(i, j);
				if ( !item )
					continue;
				QString str = item->text();
				str.replace(","," ");
				conTents += str + ",";
			}
			conTents += "\n";
		}
		stream << conTents;
		file.close();
	}
	if( QMessageBox::Yes == QMessageBox::information(0,QObject::tr("文件导出"),QString("文件导出成功,是否打开该文件?"),QMessageBox::Yes,QMessageBox::No) )
	{
 
		QSettings settings("HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Office",QSettings::NativeFormat); 
		QString szDefault, szPath;
		bool bSuccess;
		szPath = settings.value("12.0/Excel/InstallRoot/Path").toString();
		if (szPath.isEmpty())
			szPath = settings.value("11.0/Excel/InstallRoot/Path").toString();
		if (szPath.isEmpty())
			szPath = settings.value("10.0/Excel/InstallRoot/Path").toString();
		if (szPath.isEmpty())
			szPath = settings.value("9.0/Excel/InstallRoot/Path").toString();
		if (szPath.isEmpty())
			szPath = settings.value("14.0/Excel/InstallRoot/Path").toString();
 
		if (szPath.isEmpty())
		{
			QMessageBox::information(0, "提示", "系统没有安装Office, 不能查看故障报告,请您先安装Microsoft Office.");
			return;
		}
 
		QProcess * proce = new QProcess;
		QString szExcelexe = szPath + "excel.exe";
		QString szopen = "/safe";
		QString szDoc = fileName;
		QStringList list;
		list<<szDoc;
		if( proce )
		{
			proce->start(szExcelexe,list);
			 proce->waitForStarted(5000);        //需要等待完成启动
		}
        delete proce;

猜你喜欢

转载自blog.csdn.net/lengyuezuixue/article/details/82502853
今日推荐