Riempire una QTableWidget da file CSV
La mia esigenza era quella di riempire una QTableWidget usando un file CSV.
Postare tutto il codice è un pò complicato, quindi vi posterò solo ciò che serve.
La mia esigenza era quella di riempire una QTableWidget usando un file CSV.
Postare tutto il codice è un pò complicato, quindi vi posterò solo ciò che serve.
Dalla descrizione, sembra che unoconv faccia parte della suite LibreOffice.
Comunque dovrebbe essere disponibile in tutti i repo, quindi potete installarlo facilmente.
Questo programma permette di convertire da XLS / XLSX a CSV e viceversa.
Il JSON ormai è una delle strutture più usate in circolazione, ma il CSV rimane comunque molto utilizzato per molti scopi.
Quindi vediamo come trasformare una stringa JSON in CSV usando Java.
Ci avvarremo anche di due librerie; se usate Maven:
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
Da un web service scritto in Node.js, ottengo tutta una serie di dati in formato JSON.
Ma ho la necessità di convertire quei dati in formato CSV, per poi darli in pasto ad un altro sistema.
La cosa è abbastanza semplice, in quanto c'è un modulo apposito: json2csv!
Aggiungetelo tra le dipendenze del vostro progetto nel file package.json:
{
"name": "NodeB2B", "version": "1.0.0", "keywords": ["util", "functional", "server", "client", "browser"], "author": "Mattepuffo", "contributors": [], "dependencies": {
"json2csv": "*"
}
}
Questo è il mio completo.
Oggi vediamo un semplice metodo per esportare una QTableWidget in CSV.
Sarà un esempio basico, nel senso che ci limiteremo a buttare dentro dati estratti, senza nessun tipo di formattazione.
Io mi sono creato una classe apposita (SaveTable) che in input si prende il path di salvataggio del file, e la QTableWidget de leggere.
Questo il file di intestazione:
#ifndef SAVETABLE_H
#define SAVETABLE_H
#include <QObject>
#include <QTableWidget>
#include <QFile>
#include <QDir>
#include <QTextStream>
class SaveTable {
public:
SaveTable(QString strFile, QTableWidget *tbl);
virtual ~SaveTable();
};
#endif // SAVETABLE_H
Abbiamo solo il costruttore, dove andremo a svolgere le operazioni.
Traformi un XLS in CSV su Windows, lo mandi su Unix (o Linux) e ti ritrovi con tutte le righe con il carriage return (^M).
Ovviamente un file del genere non è elaborabile; provate a darlo in pasto a Informix o a qualcosa del genere!
Soluzione: eliminare tutti carriage return.
Per farlo possiamo usare sed.