ottoshmidt
5th June 2011, 10:35
this code exports data from model (in my case displayed in QTableView) to csv text file, taking into regard the hidden columns;
void MainWindow::csvexport()
{
QString linki = QFileDialog::getSaveFileName(this, tr("Export CSV"),
QDesktopServices::storageLocation(QDesktopServices ::DesktopLocation)+"/base.csv",
tr("Comma Separated Values (*.csv)"));
int x = 0;
QString exportdata;
while (x < model->columnCount()){
if (!ui->tableView->isColumnHidden(x)) {
exportdata.append(model->headerData(x,Qt::Horizontal,Qt::DisplayRole).toStr ing());
//msgbox(exportdata);
if (model->columnCount() - x != 1)
exportdata.append(",");
else
exportdata.append("\n");
}
x++;
}
int z = 0;
while (z < model->rowCount()) {
x = 0;
while (x < model->columnCount()) {
if (!ui->tableView->isColumnHidden(x)) {
exportdata.append(model->data(model->index(z,x),Qt::DisplayRole).toString());
if (model->columnCount() - x != 1)
exportdata.append(",");
else
exportdata.append("\n");
}
x++;
}
z++;
}
QFile file;
if (!linki.isEmpty()) {
file.setFileName(linki);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
}
QByteArray ttext;
ttext.append(exportdata);
file.write(ttext);
}
void MainWindow::csvexport()
{
QString linki = QFileDialog::getSaveFileName(this, tr("Export CSV"),
QDesktopServices::storageLocation(QDesktopServices ::DesktopLocation)+"/base.csv",
tr("Comma Separated Values (*.csv)"));
int x = 0;
QString exportdata;
while (x < model->columnCount()){
if (!ui->tableView->isColumnHidden(x)) {
exportdata.append(model->headerData(x,Qt::Horizontal,Qt::DisplayRole).toStr ing());
//msgbox(exportdata);
if (model->columnCount() - x != 1)
exportdata.append(",");
else
exportdata.append("\n");
}
x++;
}
int z = 0;
while (z < model->rowCount()) {
x = 0;
while (x < model->columnCount()) {
if (!ui->tableView->isColumnHidden(x)) {
exportdata.append(model->data(model->index(z,x),Qt::DisplayRole).toString());
if (model->columnCount() - x != 1)
exportdata.append(",");
else
exportdata.append("\n");
}
x++;
}
z++;
}
QFile file;
if (!linki.isEmpty()) {
file.setFileName(linki);
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
}
QByteArray ttext;
ttext.append(exportdata);
file.write(ttext);
}