BCDA-APS / mdaviz

Data visualization for mda
https://bcda-aps.github.io/mdaviz/
Other
3 stars 0 forks source link

enable export data #100

Open rodolakis opened 4 months ago

rodolakis commented 4 months ago

My friend chatGPT says: Yes, exporting data from a QTableView is possible and can be done in several ways depending on the format you wish to export to, such as CSV, Excel, or JSON.

Here's a simple example of how you could export the data from a QTableView to a CSV file using Python:

  1. Access the Model Data: Access the data from the model that's associated with the QTableView. You can loop through the model to retrieve the data.

  2. Write to CSV: Use Python's built-in csv module to write the data to a CSV file.

Here's a sample code snippet that demonstrates how to export the data:

import csv
from PyQt5.QtWidgets import QFileDialog

def export_to_csv(table_view):
    # Prompt user to select save location and file name
    path, _ = QFileDialog.getSaveFileName(
        table_view, "Save File", "", "CSV Files (*.csv);;All Files (*)"
    )

    if not path:
        # No file selected
        return

    model = table_view.model()
    with open(path, 'w', newline='') as file:
        writer = csv.writer(file)
        # Write headers
        headers = [model.headerData(i, QtCore.Qt.Horizontal) for i in range(model.columnCount())]
        writer.writerow(headers)
        # Write data
        for row in range(model.rowCount()):
            row_data = [model.data(model.index(row, column)) for column in range(model.columnCount())]
            writer.writerow(row_data)

# Use it like this:
export_to_csv(your_table_view_instance)

To call this function, you would need to pass your QTableView instance as the argument. When the function is called, it will prompt the user to select a save location, write the headers to the CSV file, and then write the data from each row in the model.

Note: This is a very basic CSV export. If your data contains complex types or needs special formatting, you may need to handle these cases in your data retrieval logic. Also, if your QTableView has any proxy models for sorting or filtering, you should ensure that you access the correct model that contains the data you want to export.