#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
**Implement QTableView QTableWidget import and export**
#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();
}