Daten aus Excel in Qtable, volle Genauigkeit

Alles rund um die Programmierung mit Qt
Antworten
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Chri »

Hi

Ich möchte einen in Excel markierten Bereich in eine Qtable kopieren.

Was ich bis jetzt gemacht habe:

QClipboard *clipboard = QApplication::clipboard();
QStringList pasteString = clipboard->text().split('\n')
QLocale oe(QLocale::German, QLocale::Austria);

und dann ein "foreach" über die Elemente von pasteString:

ui->tableWidget->setItem(i,col,new QTableWidgetItem(QString::number(oe.toDouble(ding)) ));

OK, die Tabelle wird gefüllt. Aber nur mit der in Excel gerade angezeigten Genauigkeit.
Ich möchte aber die volle Genauigkeit. Nicht nur für die Tabelle, sondern auch zum Weiterrechnen.
Und außerdem: Wenn die Zellen in Excel erweitert formatiert sind (z.B. 23,4 kWh/a), dann gibt's überhaupt Probleme.

Wie kann man das lösen?

LG
Chri
Die Sprache des Technikers ist die Skizze
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Christian81 »

Ich schätze das Excel das so in die Zwischenablage schiebt. Ggf. geht es über den Umweg einer csv-Datei besser.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Chri »

Das Problem ist nur:
Es soll der Anwender die Möglichkeit haben, in Excel einen Bereich markieren, kopieren,
in die qtableview klicken und dort einfügen (bzw. auf einen Button klicken, der einfügt)

LG
Chri
Die Sprache des Technikers ist die Skizze
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Christian81 »

Wenn Excel das nicht anders exportiert - was soll Qt dann machen? Man könnte mal schauen ob Excel es noch in einem anderen Clipboard-Format in die Zwischenablage kopiert -> QClipboard::mimeData() und QMimeData::formats()
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

Re: Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Chri »

Hi

Habe aus dem Internet folgenden Code zusammengebastelt:

QMimeData * mimeCopy = new QMimeData();
const QMimeData * mimeReference;
QClipboard *clipboard = QApplication::clipboard();
const QMimeData *mimeData = clipboard->mimeData();

foreach(QString format, mimeData->formats())
{
qDebug()<< mimeData->formats();
// QByteArray data = mimeReference->data(format);

if(format.startsWith("application/x-qt"))
{
// Retrieving true format name
int indexBegin = format.indexOf('"') + 1;
int indexEnd = format.indexOf('"', indexBegin);
format = format.mid(indexBegin, indexEnd - indexBegin);
}
qDebug()<< Format;
// mimeCopy->setData(format, data);
}

Auskommentiert sind die Zeilen, weil durch
QByteArray data = mimeReference->data(format);
das Programm abstürzt. Wie komme ich also zu den Daten?

Das 2. qDebug() liefert jedenfalls:
"Biff8", "Biff5", "Biff4", "Biff3", "Biff", "Wk1", "XML Spreadsheet", "text/html", "text/plain", "Csv", "Rich Text Format", "Embed Source", "Object Descriptor", "Link Source", "Link Source Descriptor", "Link"
Die Sprache des Technikers ist die Skizze
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Daten aus Excel in Qtable, volle Genauigkeit

Beitrag von Christian81 »

Also speichert Excel das in verschiedenen Formaten in der Zwischenablage. CSV und XML Spreadsheet hören sich gut an. Wie das dann aber intern wirklich aufgebaut ist musst Du selbst herausfinden.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten