簡體   English   中英

如何將 QTable 導出到 .csv?

[英]How to export QTable to .csv?

如何將值從QTableWidget導出到 .csv 文件或 Excel 文件?

程序應該從 PLC 收集三個變量的值。 這個PLC是我公司的,有做這個收集的功能。

將項目插入到QTableWidget .cpp:

void MainWindow::on_pushInsert_clicked()
{
/*
the program already is connected to plc, 
so I just have to choose the address inside of the plc. 
*/
    WORD wAddress = 50001;
    WORD value1 = 0;
    WORD value2 = 0;
    WORD value3 = 0;
    CollectVariables(wAddress,wValue);
    int ID = 0;
    string Name = "";
    int Age = 0;
    QTableWidget *table = ui->tableWidget;
    for(i=0;i<10; i++) {
        //id
        CollectVariables(wAddress+i, value1);
        table->setItem(i, 0, new QTableWidgetItem(value1));

        //name
        CollectVariables(wAddress+10+i, value2);
        table->setItem(i, 1, new QTableWidgetItem(value2));

        //age
        CollectVariables(wAddress+20+i, value3);
        table->setItem(i, 2, new QTableWidgetItem(value3));
        tabela->selectRow(i);
    }
}

我以前將QTableWidget “導出”到 .csv 文件(我不能導出做 excel)的方法是在將項目插入到表中時將表上每個空間的值存儲到一個數組中。

QFile用於創建 .csv 文件, QTextStream用於在其上插入值。

為了改進代碼,我創建了一個按鈕來選擇應保存此 .csv 文件的目錄。

選擇目錄 .cpp:

void MainWindow::on_pushSelectDir_clicked()
{
    QFileDialog directory;
    ui->lineEditDir->setText(directory.getSaveFileName(this,"Choose an directory"));
    dir_name = ui->lineEditDir->text();
}

創建 .csv 文件 .cpp:

void MainWindow::on_pushExportCSV_clicked()
{
    QFile data(dir_name+".csv");
    if (data.open(QFile::WriteOnly | QIODevice::Append)) {
     }
    QTextStream output(&data);
    output <<"ID"<<","<<"Name"<<","<<"Age"<< '\n';
    for(i=0;i<10; i++) {   
        output << ID[i] <<","<< Name[i] <<","<< Age[i] << '\n';
    }
    data.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM