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();
}
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老汉憨憨1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值