QtableWidget中的表格数据导出成*.csv文件

这里是我使用的一个方法,取出所有单元格数据,保存为用逗号间隔,保存为csv格式,就可以用excel打开。

代码如下:

bool TableToExcle::exportExecl(QTableWidget *tableWidget, QString dirName, QString fileName)
{
    QDir dir(dirName);
    QString fullDirName = QDir::currentPath() + "/output/" + dirName;
    if (!dir.exists())
    {
        dir.mkdir(fullDirName);
    }

    QString dirFile = fullDirName + "/" + fileName + ".csv";
    QFile file(dirFile);
    bool ret = file.open(QIODevice::Truncate | QIODevice::ReadWrite);
    if(!ret)
    {
        qDebug() << "open failure";
        return ret;
    }

    QTextStream stream(&file);
    QString conTents;
    // 写入头
    QHeaderView * header = tableWidget->horizontalHeader() ;
    if (NULL != header)
    {
        for (int i = 0; i < header->count(); i++)
        {
            QTableWidgetItem *item = tableWidget->horizontalHeaderItem(i);
            if (NULL != item)
            {
                conTents += item->text() + ",";
            }
        }
        conTents += "\n";
    }

    // 写内容
    for (int row = 0; row < tableWidget->rowCount(); row++)
    {
        for (int column = 0; column < tableWidget->columnCount(); column++)
        {
            QTableWidgetItem* item = tableWidget->item(row, column);
            if (NULL != item )
            {
                QString str;
                if ((1 == column) || (2 == column))
                {
                    str = QDateTime::fromString(item->text(), "yyyy-MM-dd hh:mm:ss").toString("yyyyMMdd-hhMMss");
                }
                else
                {
                    str = item->text();
                }

                str.replace(","," ");
                conTents += str + ",";
            }
        }
        conTents += "\n";
    }
    stream << conTents;

    file.close();
    return true;
}

保存到csv文件为:


转载于:https://my.oschina.net/TomShine/blog/394753

CSV(Comma-Separated Values)文件是一种常用的文本文件格式,用于存储表格数据,其每一行代表一行记录,每列用逗号分隔。在QtQTableWidget是一个可视化的表格控件,你可以将CSV数据加载到这个控件或直接写入。 如果你想将CSV数据写入到QTableWidget,首先你需要读取CSV文件的内容,并将其转换为QTableWidget支持的数据结构。这里是一般的步骤: 1. **导入必要的库**: ```python import csv from PyQt5.QtWidgets import QApplication, QTableWidget, QTableWidgetItem ``` 2. **打开和读取CSV文件**: ```python def read_csv(file_path): with open(file_path, 'r', newline='') as file: reader = csv.reader(file) header = next(reader) # 获取表头 data = [row for row in reader] # 所有数据行 return header, data ``` 3. **创建并初始化QTableWidget**: ```python app = QApplication([]) table_widget = QTableWidget() table_widget.setColumnCount(len(header)) table_widget.setRowCount(len(data)) # 假设数据按行对齐 table_widget.setHorizontalHeaderLabels(header) ``` 4. **填充QTableWidget**: ```python for i, row in enumerate(data): for j, value in enumerate(row): item = QTableWidgetItem(value) table_widget.setItem(i, j, item) ``` 5. **显示QTableWidget**: ```python table_widget.show() app.exec_() ``` 6. **保存修改后的QTableWidgetCSV**(如果需要,这一步通常是读取操作的一部分,因为QTableWidget本身没有直接导出功能): ```python if you_want_to_save: new_file_path = "output.csv" with open(new_file_path, 'w', newline='') as file: writer = csv.writer(file) writer.writerow(table_widget.horizontalHeaderLabels()) # 写入表头 for row_index in range(table_widget.rowCount()): row_data = [table_widget.item(row_index, col_index).text() for col_index in range(table_widget.columnCount())] writer.writerow(row_data) ``` 记得根据实际应用调整代码,例如错误处理、界面布局等。如果你只是想一次性加载CSVQTableWidget,那么只需要`read_csv`和填充部分即可。如果你想要双向交互(即在GUI编辑后也能保存),则需要处理用户修改后的事件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值