Selektierten Bereich in einem Excel-Arbeitsblatt mit OleAutomation auf Währung festlegen
-
Hallo,
kann mir jemand helfen wie ich mit Ole das Cell-Format auf Währung setzen kann ? Bis "Select" läuft der Code ohne Fehler, aber das NumberFormat für Währung bekomme ich nicht zum Laufen.
#include <vcl.h> #include <comobj.hpp> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" const String sgMonthLong[] = {"N/A", "Januar","Februar","März","April","Mai","Juni", "Juli","August","September","Oktober","November","Dezember"}; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { SetBounds( 0, 0, 284, 324 ); TBorderIcons tempBI = BorderIcons; tempBI >> biMaximize >> biMinimize; BorderIcons = tempBI; BorderStyle = bsSingle; Position = poDesigned; FormStyle = fsNormal; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { TColor Color1 = (TColor)0xeaf1fd; // Ausgaben TColor Color11 = (TColor)0xd6e4fc; // Ausgaben 1 TColor Color2 = (TColor)0xecd2c4; // Monat TColor Color3 = (TColor)0xf8efeb; // Beträge TColor Color31 = (TColor)0xf2e1d9; // Beträge 1 int iZeilenhöhe1 = 10; int iZeilenhöhe2 = 30; // Überschrift int iZeilenhöhe3 = 10; // Zellen int iZeilenhöhe4 = 20; // Überschrift Monate int iFontSize1 = 8; // int iFontSize2 = 8; // Überschrift Monate int iFontSize3 = 8; // Zellen int iColumnWidth1 = 2.14; int iColumnWidth2 = 15; int iColumnWidth3 = 9; int iColumnWidth4 = 9; // Excel starten MyEx = CreateOleObject( "Excel.Application" ); // Excel sichtbar machen MyEx.OlePropertySet( "Visible", true ); // Zugriff auf die Workbooks MyWB = MyEx.OlePropertyGet( "Workbooks" ); // Neues Workbook erstellen MyWB.OleFunction("Add"); // Zugriff auf das erste Worksheet MyWS = MyWB.OlePropertyGet( "Item", 1 ); MyWB = MyWS.OlePropertyGet( "Worksheets" ); // Dem Worksheet einen Namen geben MyWB.OlePropertyGet( "Item", 1 ).OlePropertySet( "Name", "Vorlage" ); // Zugriff auf das erste Worksheet MyWS = MyWB.OlePropertyGet( "Item", 1 ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet("Font"). OlePropertySet( "Name", WideString("Calibri") ); // Font auswählen MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", 1, 1 ). OlePropertyGet("Font").OlePropertySet( "Size", iFontSize1 ); // Font size MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", 1, 1 ). OlePropertyGet("Font").OlePropertySet( "Bold" , true ); // Font Style MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Rows", "1:24" ). OlePropertySet("RowHeight", iZeilenhöhe3 ); // Zeilenhöhe MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Rows", "3" ). OlePropertySet("RowHeight", iZeilenhöhe2 ); // Zeilenhöhe MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Rows", "4" ). OlePropertySet("RowHeight", iZeilenhöhe4 ); // Zeilenhöhe MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Rows", "3:4" ). OlePropertySet("VerticalAlignment", -4108); // Text vertikal mittig ausrichten MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", 3, "A" ). OlePropertySet( "Value" , "Kategorie" ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", 3, "B" ). OlePropertySet( "Value" , "Ausgaben" ); int row = 4; int col; // Überschrift Monat for ( int i = 1; i <= 12; i++ ) { col = i + 1; if ( col%2 != 0 ) { MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertyGet( "Interior" ).OlePropertySet( "Color", Color2 ); } MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertyGet( "Font").OlePropertySet( "Color" , clNavy ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertyGet( "Font").OlePropertySet( "Size", iFontSize1 ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertyGet( "Font").OlePropertySet( "Bold" , true ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertySet( "Value" , sgMonthLong[i] ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertySet( "HorizontalAlignment", -4108 ); MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertySet( "VerticalAlignment", -4108 ); } for ( int col = 3; col <= 13; col += 2 ) { for ( row = 5; row <= 12; row++ ) { MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Item", row, col ). OlePropertyGet( "Interior" ).OlePropertySet( "Color", Color3 ); } } MyWS.OlePropertyGet( "Cells" ).OlePropertyGet( "Rows", "5:12" ). OlePropertyGet( "Font").OlePropertySet("Size", iFontSize3 ); MyWS.OlePropertyGet( "Range", "B5:N12" ).OleFunction( "Select" ); //MyWS.OlePropertySet( "NumberFormat", "€#,##0.00_);[Red](€#,##0.00)" ); MyWS.OlePropertySet( "NumberFormat", "-1.234,10 €" ); // MyWS.OlePropertyGet("Cells").OlePropertyGet("Item", "B5:N12").OlePropertySet("NumberFormat", "#.###,## €" ); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { if ( !MyEx.IsEmpty() ) { String sFile = "C:\\Temp\\Test Tabelle.xlsx"; MyEx.OlePropertySet( "DisplayAlerts", false ); MyEx.OlePropertyGet( "Workbooks").OlePropertyGet( "Item" , 1 ). OleProcedure( "SaveAs" , sFile ); MyEx.OleFunction( "Quit" ); MyEx = Unassigned; } } //--------------------------------------------------------------------------- ```h #ifndef Unit1H #define Unit1H //--------------------------------------------------------------------------- #include <System.Classes.hpp> #include <Vcl.Controls.hpp> #include <Vcl.StdCtrls.hpp> #include <Vcl.Forms.hpp> //--------------------------------------------------------------------------- class TForm1 : public TForm { __published: // Von der IDE verwaltete Komponenten TButton *Button1; TButton *Button2; void __fastcall Button2Click(TObject *Sender); void __fastcall Button1Click(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); private: // Benutzer-Deklarationen Variant MyEx; Variant MyWB; Variant MyWS; public: // Benutzer-Deklarationen __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------- #endif
-
Habs hinbekommen, Select ist nicht notwendig und WideString war der Knackpunkt.
MyWS.OlePropertyGet( "Range", "B5:N12" ). OlePropertySet( "NumberFormat", WideString("#.###.##0,00 €") );