Probleme mit Zugriff auf ein Excelfile über Visual C++
-
Hallo,
ich habe ein Problem mit dem Zugriff und dem ändern eines Excelfiles und deren Inhalt.
Ich versuche in eine Exceltabelle Daten einzutragen, was auch funktioniert. Nun ist das Problem, dass ich gerne die Zellengröße ändern würde. Manuell funktioniert das, also ich kann über C++ sagen, dass die Zellen Höhe den Wert x bekommen soll und die Zellenbreite den Wert y.
Leider weiß ich im Voraus nicht, wie lang der Text ist und wieviel in so einer Zelle steht, damit müsste ich die Zellengröße variabel wählen.
Im Makroteil von Excel habe ich herausgefunden, dass der Befehl Autofit heißt. Diesen gibt es auch in C++, doch er gibt mir immer den Fehler" Die AutofitMethode des Range-Objectes konnte nicht ausgeführt werden"
aus.
Aufgerufen wird das Ganze durch:Range range; // hier wird ein Tabellenblatt mit dem Namen "Protokoll" erstellt m_ExcelFile.sheet = m_ExcelFile.sheets.GetItem(COleVariant("Protokoll")); range = m_ExcelFile.sheet.GetRange(COleVariant("A1"), COleVariant("A1")); range.AutoFit();Falls jmd. eine Idee hat, wäre ich sehr dankbar, wenn er mir helfen könnte.
Ein zweites Problem habe ich noch mit dem Einfügen von Zeilen, aber da teste ich erst noch ein bischen, bevor ich mich verzweifelt wieder an euch wende

MfG Thorsten
-
hmm versteh ich dich richtig du willst über ne variable Text in die exceldatei schreiben, und anhand der länge des textes gleich die spaltengröße setzen.
versuch mal folgendes.
CClientDC dc(this); CString sString = "Text der in die Tabele geschrieben wird"; CSize size = dc.GetTextExtent(sString .GetBuffer(sString .GetLength()));//Gibt die Länge & Höhe der Schrift zurück //size.cx <--gleich länge der Schrift //size.cy <--gleich höher der Schriftist allerdings ein bischen ungenau denn mit zunehmender länge des textes dichtet da GetTextExtent nochwas dazu.
mfg
LowFly
-
Hi,
mein Problem war, dass ich eine Tabelle habe, in die ich Text eingefügt habe. Also es stehen in mehreren Zellen und Spalten Text in unterschiedlicher Länge und ganz zum Schluss, nachdem der ganze Text eingefügt wurde wollte ich durch Autofit das Ganze übersichtlich machen.Das hatte ich nicht hinbekommen, doch dann habe ich eine Lösung gefunden:
Range range; Range cols; // Anpassen der Größen der Spalten range = m_ExcelFile.sheet.GetRange(COleVariant("A1"), COleVariant("J1")); //AutoFit columns A:J. cols = range.GetEntireColumn(); cols.AutoFit();und dann gleich zu meiner zweiten (noch nicht gestellten) Frage, wie man Zeilen einfügen kann:
range.Insert(COleVariant((long)-4121));// to shift downNur, falls es für irgendwen noch interessant sein könnte.
Vielen Dank für deine Antwort!
Gruß, Thorsten