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
Daten aus Excel in Qtable, volle Genauigkeit
Daten aus Excel in Qtable, volle Genauigkeit
Die Sprache des Technikers ist die Skizze
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Daten aus Excel in Qtable, volle Genauigkeit
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
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Daten aus Excel in Qtable, volle Genauigkeit
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
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
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Daten aus Excel in Qtable, volle Genauigkeit
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
'Funktioniert nicht' ist keine Fehlerbeschreibung
Re: Daten aus Excel in Qtable, volle Genauigkeit
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"
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
-
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Re: Daten aus Excel in Qtable, volle Genauigkeit
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
'Funktioniert nicht' ist keine Fehlerbeschreibung