Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >QTableView输出另存为.csv或.txt

QTableView输出另存为.csv或.txt
EN

Stack Overflow用户
提问于 2014-12-08 07:08:20
回答 3查看 10.1K关注 0票数 9

我为qt编写了以下代码,以便在QTableView(面向模型的)中查看查询输出。现在,我想将此输出保存为.csv或.txt文件。有人建议使用QTableWidget(面向项目),但我想坚持基于模型的方法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void MainWindow::on_pushButton_clicked()
{
db = QSqlDatabase::addDatabase("QOCI");
db.setHostName("host");
db.setDatabaseName("db");
db.setUserName("uid");
db.setPassword("pw");
db.setPort(port);

QString MyQuery = ui->lineEdit->text();

if (db.open())
{
    qDebug()<<QDateTime::currentDateTime()<<"QUERY DONE SUCCESSFULLY ";

    this->model=new QSqlQueryModel();
    model->setQuery(MyQuery);
    ui->tableView->setModel(model);

}
else
{
    qDebug()<<QDateTime::currentDateTime()<<"YOU FORGOT THE QUERY "<<db.lastError().text();
}

}

有什么指导原则吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-08 07:22:26

您可以根据自己的实际需求进行定制:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// [Collect model data to QString]
QString textData;
int rows = model->rowCount();
int columns = model->columnCount();

for (int i = 0; i < rows; i++) {
    for (int j = 0; j < columns; j++) {

            textData += model->data(model->index(i,j)).toString();
            textData += ", "      // for .csv file format
    }
    textData += "\n";             // (optional: for new line segmentation)
}

// [Save to file] (header file <QFile> needed)
// .csv
QFile csvFile("test.csv");    
if(csvFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {

    QTextStream out(&csvFile);
    out << textData;

    csvFile.close();
} 

// .txt
QFile txtFile("test.txt");    
if(txtFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) {

    QTextStream out(&txtFile);
    out << textData;

    txtFile.close();
} 
票数 12
EN

Stack Overflow用户

发布于 2014-12-08 07:43:56

可以通过以下方法将模型保存到文本文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
QFile f( "table.txt" );
if( f.open( QIODevice::WriteOnly ) )
{
    QTextStream ts( &f );
    QStringList strList;
    for (int i=0; i<model->rowCount(); i++)
    {
        strList.clear();

        for (int j=0; j<model->columnCount(); j++)
            strList << model->data(model->index(i,j)).toString();

        ts << strList.join(" ") + "\n";
    }
    f.close();
}

在这里,模型数据在每一行中保存一行,用空格分隔。如果你想用逗号之类的其他字符来分隔它们,你只需替换连接上的参数,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ts << strList.join(",") + "\n";
票数 4
EN

Stack Overflow用户

发布于 2017-09-15 09:49:47

下面是一种将qtableview导出到csv的方法,其中包括使用qt的列名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   void staticmethods::exportTableViewToCSV(QTableView *table) {
            QString filters("CSV files (*.csv);;All files (*.*)");
            QString defaultFilter("CSV files (*.csv)");
            QString fileName = QFileDialog::getSaveFileName(0, "Save file", QCoreApplication::applicationDirPath(),
                               filters, &defaultFilter);
            QFile file(fileName);

            QAbstractItemModel *model =  table->model();
            if (file.open(QFile::WriteOnly | QFile::Truncate)) {
                QTextStream data(&file);
                QStringList strList;
                for (int i = 0; i < model->columnCount(); i++) {
                    if (model->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString().length() > 0)
                        strList.append("\"" + model->headerData(i, Qt::Horizontal, Qt::DisplayRole).toString() + "\"");
                    else
                        strList.append("");
                }
                data << strList.join(";") << "\n";
                for (int i = 0; i < model->rowCount(); i++) {
                    strList.clear();
                    for (int j = 0; j < model->columnCount(); j++) {

                        if (model->data(model->index(i, j)).toString().length() > 0)
                            strList.append("\"" + model->data(model->index(i, j)).toString() + "\"");
                        else
                            strList.append("");
                    }
                    data << strList.join(";") + "\n";
                }
                file.close();
            }

        }
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27353026

复制
相关文章
python txt转换csv 快速
import csv csvFile = open("/Users/wyc/work/geneSearch/server/search/datas_train.csv",'w',newline='',encoding='utf-8') writer = csv.writer(csvFile) csvRow = [] f = open("/Users/wyc/work/geneSearch/server/search/test-20220607.txt",'r') for line in f: cs
Wyc
2022/06/12
1.5K0
python对CSV、Excel、txt
或者,可以把Excel文件转换成csv格式文件,直接修改后缀名,好像会出错,还是建议另存为修改成csv文件。
py3study
2020/01/09
1.8K0
python pandas.read_csv参数整理,读取txt,csv文件
pandas.read_csv参数整理 读取CSV(逗号分割)文件到DataFrame 也支持文件的部分导入和选择迭代 更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html 参数: filepath_or_buffer : str,pathlib。str, pathlib.Path, py._path.local.LocalPath or any object with a read() method (such as a file handl
学到老
2018/03/16
6.4K0
python pandas.read_csv参数整理,读取txt,csv文件
更多帮助参见:http://pandas.pydata.org/pandas-docs/stable/io.html
学到老
2019/02/14
3.8K0
使用Django输出CSV
这篇文档阐述了如何通过使用Django视图动态输出CSV (Comma Separated Values)。 你可以使用Python CSV 库或者Django的模板系统来达到目的。
菲宇
2022/12/21
8980
【python】读取csv xlsx xlx txt文件 类
只需修改path class Reader: """ 可读取的文件格式: .csv .tsv .xlsx .xlx .txt """ @staticmethod def change_1d_array(array, header_cut=None, str_to_float=None): """ 为一维数组去掉第一个值;将字符串转为数值 :param array: type:<class 'numpy.ndarray'
司六米希
2022/11/15
1.1K0
Python输出csv、excel表格
在机器学习应用过程中,最重要的部分之一是数据可视化。换句话,如何说服别人或者自己? 环境:python3.5
py3study
2020/01/07
4.1K0
Python 将数据写入文件(txt、csv、excel)
一、将列表数据写入txt、csv、excel 1、写入txt def text_save(filename, data):#filename为写入CSV文件的路径,data为要写入数据列表. file = open(filename,'a') for i in range(len(data)): s = str(data[i]).replace('[','').replace(']','')#去除[],这两行按数据不同,可以选择 s = s.replace
菲宇
2019/07/31
41.3K0
R语言读取txt,csv和xlsx文件
刚刚数据分析的上机课自己学了一下怎么在R环境下读取文件,本来是很简单的事情,但是因为各种原因踩了很多坑,现在来总结一下,防止以后忘记。
mumumu
2022/12/26
1.4K0
QTableView样式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128552.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/28
9020
【python】读取和输出到txt
python常用的读取文件函数有三种read()、readline()、readlines()
py3study
2020/01/14
2.4K0
Python 读取txt、csv、mat数据并载入到数组
这里结合上一篇博文的数据来讲怎么方便的载入.txt文件到一个数组,数据如下所示:
全栈程序员站长
2022/07/23
4.6K0
Python 读取txt、csv、mat数据并载入到数组
PHP输出(打印)日志到txt文本
测试回传数据有奇效!!!! public function createlog(Request $request){ if (!is_dir('log')){ mkdir('log',0777,true); } $path="log/".date('Y-m-d H:i:s').".log"; file_put_contents($path, "【" . date('Y-m-d H:i:s') . "】" . $reque
用户8099761
2023/05/11
1.7K0
Spring Batch:文件的批量读写Flatfile(XML,CSV,TXT)
继杨小强童鞋的《Spring Batch入门篇》之后,继续为大家分享第二篇关于Spring Batch的系列教程。 更多内容请持续关注:spring4all.com,更多spring技术干货与交流学习期待您的参与! Spring Batch:文件的批量读写Flatfile(XML,CSV,TXT) ⏩ 该系列课程中的示例代码使用springBatch 版本为3.0.7;讲解可能会讲一些4.0.X的特性 示例代码地址:https://git.oschina.net/huicode/sp
程序猿DD
2018/02/01
3.9K0
Spring Batch:文件的批量读写Flatfile(XML,CSV,TXT)
深入理解pandas读取excel,txt,csv文件等命令
文档操作属于pandas里面的Input/Output也就是IO操作,基本的API都在上述网址,接下来本文核心带你理解部分常用的命令
梦想橡皮擦
2019/03/15
12.3K0
深入理解pandas读取excel,txt,csv文件等命令
【小工具】txt和csv互转,一键搞定~
根据产品需求,我需要将准备好的txt文件放到sftp上面,并且核对解析的txt入库是否正确。
用户9913368
2022/07/26
1.7K0
Mysql语句方法导出导入txt、csv、xls、xlsx2022.3.17
查看是否有权限 没有的话找到my.ini修改 show variables like '%secure%' 导出 SELECT * FROM `20220317` INTO OUTFILE "20220317.txt" SELECT * FROM `20220317` INTO OUTFILE "20220317.csv" SELECT * FROM `20220317` INTO OUTFILE "20220317.xlsx" 导入, Error Code: 1300,把xlsx用笔记本打开,另存为
用户7138673
2022/09/22
2.9K0
MySQL LOAD DATA INFILE—从文件(csv、txt)批量导入数据
 最近做的项目,有个需求(从Elastic Search取数据,业务运算后),每次要向MySQL插入1300万条数据左右。最初用MySQL的executemany()一次插入10000条数据,统计的时间如下:
NaughtyCat
2020/10/09
7.8K0
MySQL LOAD DATA INFILE—从文件(csv、txt)批量导入数据
将Maple输出的LaTex导出到txt文件
注意: LambertW erf arctanh这几个命令会导致Latex命令报错,需要在使用的时候替换掉
Enjoy233
2019/03/05
2.3K0
点击加载更多

相似问题

上传.csv或.txt文件以填充QTableView

14

另存为myfile.csv.txt的myfile.csv文件

13

将不等输出保存到csv或txt文件中。

21

如何将powershell查询的输出写入txt或csv文件?

35

Powershell -将.txt数据输出到CSV

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文