QT linux导出csv表格

#ifndef EXCELHELPER_H
#define EXCELHELPER_H
//#include<QAxObject>
#include<QDir>
#include<QFile>
#include<QTableWidget>
#include<QFileDialog>
#include<QFile>
#include<QApplication>
class ExcelHelper
{
    
    

public:
    ///传入字符串导出换行+‘/n’ 换单元格加,
    static  void ExportQString(QString string);
    ///传入QTableView或者QTableWidget指针
    static void ExportQtableViewOrQtableWidget(QTableView *table);
    static QList<QStringList> ImportQString();
    static void ImportQtableViewOrQtableWidget(QTableWidget *table);

};

#endif // EXCELHELPER_H

**实现QTableView QTableWidget 导入导出 **

#include "excelhelper.h"
#include<QTableWidget>
#include<QFileDialog>
#include<QMessageBox>
#include<QStandardPaths>
#include<QDesktopServices>
#include<QString>
#include<QStandardItem>
void ExcelHelper::ExportQString(QString string){
    
    
    QString fileName = QFileDialog::getSaveFileName(NULL, QObject::tr("Excel file"), qApp->applicationDirPath (),

                                                    QObject::tr("Files (*.csv)"));

    if (fileName.isEmpty())
        return;

    QFile file(fileName);

    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))

    {
    
    
        return;

    }
    QTextStream out(&file);

    QString Stmp;
    out << string<<"\n";
    QMessageBox::informationn(nullptr, "导出数据成功", QString("信息已保存在%1!").arg(fileName))
   
    file.close();
}
void ExcelHelper::ExportQtableViewOrQtableWidget(QTableView *table){
    
    
    QString fileName = QFileDialog::getSaveFileName(NULL, QObject::tr("Excel file"), qApp->applicationDirPath (),

                                                    QObject::tr("Files (*.csv)"));

    if (fileName.isEmpty())
        return;

    QFile file(fileName);

    if(!file.open(QIODevice::WriteOnly | QIODevice::Text))

    {
    
    
        return;

    }

    QTextStream out(&file);

    QString Stmp;
    for (int s=0;s<table->model()->columnCount();s++)
    {
    
    
        Stmp=table->model()->headerData(s,Qt::Horizontal,Qt::DisplayRole).toString()+",";
        out<<Stmp;
    }
    out<<"\n";
    int row =table->model()->rowCount();
    int colount=table->model()->columnCount();
    for(int i = 0; i < row; i ++)
    {
    
    

        for(int j = 0; j < colount; j++)
        {
    
    
            QModelIndex index =table->model()->index(i, j);
            QString strdata=table->model()->data(index).toString();
            out << strdata << ",";
        }
        out << "\n";

    }
      QMessageBox::informationn(nullptr, "导出数据成功", QString("信息已保存在%1!").arg(fileName))
   
 
    file.close();
}
QList<QStringList> ImportQString(){
    
    
    QList<QStringList> listImport;

    QString fileName = QFileDialog::getOpenFileName(NULL, QObject::tr("Excel file"), qApp->applicationDirPath (),

                                                    QObject::tr("Files (*.csv)"));

    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
    
    
        return listImport;
    }
    QStringList list;
    list.clear();
    QTextStream in(&file);
    while(!in.atEnd())
    {
    
    

        QString fileLine = in.readLine();
        list = fileLine.split(",", QString::SkipEmptyParts);
        listImport.append(list);
    }

    file.close();

    return listImport;
}
void ExcelHelper::ImportQtableViewOrQtableWidget(QTableWidget *table){
    
    

    QString fileName = QFileDialog::getOpenFileName(NULL, QObject::tr("Excel file"), qApp->applicationDirPath (),

                                                    QObject::tr("Files (*.csv)"));

    QFile file(fileName);
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
    
    
        return;
    }

    QStringList list;
    list.clear();
    QTextStream in(&file);
    int i =0;
    while(!in.atEnd())
    {
    
    

        QString fileLine = in.readLine();
        list = fileLine.split(",", QString::SkipEmptyParts);
        if(i == 0) table->setHorizontalHeaderLabels(list);

        //表内容
        //        int row =table->model()->rowCount();
        //        int colount=table->model()->columnCount();
        //        if(i == 1)

        //        {
    
    

        //            for(int a = 0; a < list.size(); a++)

        //            {
    
    

        //                table->setItem(0, a, new QTableWidgetItem(list.at(a)));

        //            }

        //        }

        if(i > 1)

        {
    
    

//            QStandardItem *item=new QStandardItem(i);
//            QVariant v;
//            v.setValue(list);
//            item->setData(v);
            for(int b = 0; b < list.size(); b++)
            {
    
    

                table->setRowCount(i-1);//设置添加一行
                table->setItem(i-2, b, new QTableWidgetItem(list.at(b)));

            }

        }

        i++;

    }

    file.close();
}

猜你喜欢

转载自blog.csdn.net/qq_15559927/article/details/115002019
今日推荐