Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Advanced Developers Conference     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: C++/CLI mit .NET ::  Visual Cplusplus -> Excel 2007     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
M_i_c_h_a_e_l
Unregistrierter




Beitrag M_i_c_h_a_e_l Unregistrierter 13:47:43 30.08.2010   Titel:   Visual Cplusplus -> Excel 2007            Zitieren

Hallo, folgendes Problem: Ich schreibe an einem Programm mit dem ich meine Messdaten auswerten kann. Die grafische Auswertung sowie einige Anpassungen werden in Excel gemacht. Excel erhält zur Zeit die Daten noch von Origin. Da dies sehr lange dauert und umständlich ist möchte ich meine Quelldaten TXT-Dateien mit C++ umrechnen und dann in Excel schreiben. Das umrechnen klapp auch sehr gut nur leider kann ich die Ergebnisse nur in TXT-Dateien ausgeben und ich möchte sie in eine ganzbestimmte Excel Tabelle haben. Bis jetzt habe ich folgenden Code gefunden:

C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace Microsoft::Office::Interop;

try {
  Microsoft::Office::Interop::Excel::ApplicationClass^ ExcelApp =  gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
  ExcelApp->Visible=true;  
  Object^ NoArg = System::Reflection::Missing::Value;  
  // hier die Anweisungen von unten einfügen
    Microsoft::Office::Interop::Excel::Workbook^ wb=ExcelApp->Workbooks->Add(NoArg);
    Microsoft::Office::Interop::Excel::Worksheet^ ws=dynamic_cast<Microsoft::Office::Interop::Excel::Worksheet^>(ExcelApp->Workbooks[1]->Worksheets[1]);
    ws->Cells[1,1]="123";
    Microsoft::Office::Interop::Excel::Range^ c=  dynamic_cast<Microsoft::Office::Interop::Excel::Range^>(ws->Cells[1,1]);
    c->Font->Size=12;
}
catch ( Exception^ e) {
  MessageBox::Show(e->Message);
}
C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace Microsoft::Office::Interop;

try {
Microsoft::Office::Interop::Excel::ApplicationClass^ ExcelApp = gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
ExcelApp->Visible=true;
Object^ NoArg = System::Reflection::Missing::Value;
// hier die Anweisungen von unten einfügen
Microsoft::Office::Interop::Excel::Workbook^ wb=ExcelApp->Workbooks->Add(NoArg);
Microsoft::Office::Interop::Excel::Worksheet^ ws=dynamic_cast<Microsoft::Office::Interop::Excel::Worksheet^>(ExcelApp->Workbooks[1]->Worksheets[1]);
ws->Cells[1,1]="123";
Microsoft::Office::Interop::Excel::Range^ c= dynamic_cast<Microsoft::Office::Interop::Excel::Range^>(ws->Cells[1,1]);
c->Font->Size=12;
}
catch ( Exception^ e) {
MessageBox::Show(e->Message);
}
C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using namespace Microsoft::Office::Interop;

try {
  Microsoft::Office::Interop::Excel::ApplicationClass^ ExcelApp =  gcnew Microsoft::Office::Interop::Excel::ApplicationClass();
  ExcelApp->Visible=true;  
  Object^ NoArg = System::Reflection::Missing::Value;  
  // hier die Anweisungen von unten einfügen
    Microsoft::Office::Interop::Excel::Workbook^ wb=ExcelApp->Workbooks->Add(NoArg);
    Microsoft::Office::Interop::Excel::Worksheet^ ws=dynamic_cast<Microsoft::Office::Interop::Excel::Worksheet^>(ExcelApp->Workbooks[1]->Worksheets[1]);
    ws->Cells[1,1]="123";
    Microsoft::Office::Interop::Excel::Range^ c=  dynamic_cast<Microsoft::Office::Interop::Excel::Range^>(ws->Cells[1,1]);
    c->Font->Size=12;
}
catch ( Exception^ e) {
  MessageBox::Show(e->Message);
}


der schreibt mir 123 in die 1. Spalte und Zeile. Das klappt auch ganz gut nur leider habe ich unzählige warnungen c4691 nach dem Compilieren. Ich bin leider nur ein Copy-Past Codeschreiber der den Code immer nur anpasst. Ich habe mit Projekt - Eigenschaften - Verweise: Excel 12.0 ObjetLibary hinzugefügt weil ich das wo gelesen habe.

Suche ein Beispiel mit dem ich ein ganz besitmmte Excel Tabelle ansprechen kann und dann da Werte auf dem ersten Worksheet mit ner Schleife aus Arrays reinschreibe. Ich habe auf der Seite http://www.codeproject.com tolle Beispiele gefunden leider habe ich immer nur Fehlermeldungen gehabt wenn ich compiliert habe. Vielleich hat jemand ein laufendes Beispiel oder weiß rat?!?
audacia
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.02.2005
Beiträge: 3802
Beitrag audacia Mitglied 14:25:10 30.08.2010   Titel:   Re: Visual Cplusplus -> Excel 2007            Zitieren

M_i_c_h_a_e_l schrieb:
Ich bin leider nur ein Copy-Past Codeschreiber der den Code immer nur anpasst.
LOL. Dann sag doch deinem Chef, er solle einen richtigen Programmierer einstellen.

_________________
"Hey, it compiles! Ship it!"
C++Builder Pages · Typsichere Format-Strings
M_i_c_h_a_e_l
Unregistrierter




Beitrag M_i_c_h_a_e_l Unregistrierter 14:57:49 30.08.2010   Titel:              Zitieren

Leider hilft mir dieser Tip nicht weiter! Würde mich mehr über einen unterstüzenden Beitrag freuen. Vielleicht werde ich dann selbst zu einem Programmierer!
Chef II
Unregistrierter




Beitrag Chef II Unregistrierter 19:15:03 30.08.2010   Titel:              Zitieren

M_i_c_h_a_e_l schrieb:
Leider hilft mir dieser Tip nicht weiter! Würde mich mehr über einen unterstüzenden Beitrag freuen. Vielleicht werde ich dann selbst zu einem Programmierer!


Aber vielleicht Deinem Chef :p
teddds
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2010
Beiträge: 45
Beitrag teddds Mitglied 08:04:42 31.08.2010   Titel:              Zitieren

Servus!

Hab derzeit auch mit Automation von Excel zutun!

ich kann dir gerne mal hier ein Teil meiner Klasse als Beispiel dafür geben. Allerdings verwende ich, da Office 2003, die Excel 11.0 ObjectLibary.

Sollte aber kaum Unterschiede machen.

C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Microsoft::Office::Interop::Excel::Application^ oXl;
Microsoft::Office::Interop::Excel::_Workbook^ oWB;
Microsoft::Office::Interop::Excel::Range^ oRng;

try
    {
        // Excel Starten
        oXl    = gcnew Excel::Application();
        oXl->Visible        = false; //Sichtbarkeit von Excel
        oXl->DisplayAlerts    = false; //Zeigt Warnunge innerhalb Excel an
       
        // Template laden

        oWB                = oXl->Workbooks->Add(local); //local ist mein Dateipfad für eine template.xls file
        oSheet            = (Excel::_Worksheet^)oWB->ActiveSheet;

        //Jetzt kannst du über
        oSheet->Cells[3 , 3] = "fgjdfkj";
        oSheet->Cells[5 , 3] = "fdsjhdkfjg";
        oSheet->Cells[6 , 3] = "blasd";
        oSheet->Cells[8 , 2] = "asdasd";
         //werte eintragen

        //Um neue sheets anzulegen gehts du so vor:

        oWB->Sheets->Add(Type::Missing,oSheet,Type::Missing,Type::Missing);

        //Um jetzt in das neue Sheet was zu schreiben musst du es erst auswählen
        oSheet    = (Excel::_Worksheet^)oWB->Worksheets[SheetName]; //SheetName ist der Name des auszuwählenden Sheets
    oSheet    ->Select(Type::Missing);
    oSheet    = (Excel::_Worksheet^)oWB->ActiveSheet;

        //Jetzt kannst du wieder über
        oSheet->Cells[4,6] = "fsdfsdf";
        //sachen in die Zellen schreiben

        //Um eine TextLink von einem sheet zum nächsten einzufügen gehst du so vor:

        oRng = (Excel::Range^)oSheet->Range["A1",Type::Missing];
        Where = sheetNameWithoutNumber + "1!A1"; //"1!A1 gibt die Sheetnumber und die Zelle an wo der Link hin führt
        oSheet->Hyperlinks->Add(oRng,"",Where,"Zurück zur Tabelle","Zurück");

//Zum Speichern und beenden das hier ausführen
oWB->SaveCopyAs("C:\\bla\\test.xls"));
oXl->Quit();
C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Microsoft::Office::Interop::Excel::Application^ oXl;
Microsoft::Office::Interop::Excel::_Workbook^ oWB;
Microsoft::Office::Interop::Excel::Range^ oRng;

try
{
// Excel Starten
oXl = gcnew Excel::Application();
oXl->Visible = false; //Sichtbarkeit von Excel
oXl->DisplayAlerts = false; //Zeigt Warnunge innerhalb Excel an

// Template laden

oWB = oXl->Workbooks->Add(local); //local ist mein Dateipfad für eine template.xls file
oSheet = (Excel::_Worksheet^)oWB->ActiveSheet;

//Jetzt kannst du über
oSheet->Cells[3 , 3] = "fgjdfkj";
oSheet->Cells[5 , 3] = "fdsjhdkfjg";
oSheet->Cells[6 , 3] = "blasd";
oSheet->Cells[8 , 2] = "asdasd";
//werte eintragen

//Um neue sheets anzulegen gehts du so vor:

oWB->Sheets->Add(Type::Missing,oSheet,Type::Missing,Type::Missing);

//Um jetzt in das neue Sheet was zu schreiben musst du es erst auswählen
oSheet = (Excel::_Worksheet^)oWB->Worksheets[SheetName]; //SheetName ist der Name des auszuwählenden Sheets
oSheet ->Select(Type::Missing);
oSheet = (Excel::_Worksheet^)oWB->ActiveSheet;

//Jetzt kannst du wieder über
oSheet->Cells[4,6] = "fsdfsdf";
//sachen in die Zellen schreiben

//Um eine TextLink von einem sheet zum nächsten einzufügen gehst du so vor:

oRng = (Excel::Range^)oSheet->Range["A1",Type::Missing];
Where = sheetNameWithoutNumber + "1!A1"; //"1!A1 gibt die Sheetnumber und die Zelle an wo der Link hin führt
oSheet->Hyperlinks->Add(oRng,"",Where,"Zurück zur Tabelle","Zurück");

//Zum Speichern und beenden das hier ausführen
oWB->SaveCopyAs("C:\\bla\\test.xls"));
oXl->Quit();
C++/CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
Microsoft::Office::Interop::Excel::Application^ oXl;
Microsoft::Office::Interop::Excel::_Workbook^ oWB;
Microsoft::Office::Interop::Excel::Range^ oRng;

try
    {
        // Excel Starten
        oXl    = gcnew Excel::Application();
        oXl->Visible        = false; //Sichtbarkeit von Excel
        oXl->DisplayAlerts    = false; //Zeigt Warnunge innerhalb Excel an
       
        // Template laden

        oWB                = oXl->Workbooks->Add(local); //local ist mein Dateipfad für eine template.xls file
        oSheet            = (Excel::_Worksheet^)oWB->ActiveSheet;

        //Jetzt kannst du über
        oSheet->Cells[3 , 3] = "fgjdfkj";
        oSheet->Cells[5 , 3] = "fdsjhdkfjg";
        oSheet->Cells[6 , 3] = "blasd";
        oSheet->Cells[8 , 2] = "asdasd";
         //werte eintragen

        //Um neue sheets anzulegen gehts du so vor:

        oWB->Sheets->Add(Type::Missing,oSheet,Type::Missing,Type::Missing);

        //Um jetzt in das neue Sheet was zu schreiben musst du es erst auswählen
        oSheet    = (Excel::_Worksheet^)oWB->Worksheets[SheetName]; //SheetName ist der Name des auszuwählenden Sheets
    oSheet    ->Select(Type::Missing);
    oSheet    = (Excel::_Worksheet^)oWB->ActiveSheet;

        //Jetzt kannst du wieder über
        oSheet->Cells[4,6] = "fsdfsdf";
        //sachen in die Zellen schreiben

        //Um eine TextLink von einem sheet zum nächsten einzufügen gehst du so vor:

        oRng = (Excel::Range^)oSheet->Range["A1",Type::Missing];
        Where = sheetNameWithoutNumber + "1!A1"; //"1!A1 gibt die Sheetnumber und die Zelle an wo der Link hin führt
        oSheet->Hyperlinks->Add(oRng,"",Where,"Zurück zur Tabelle","Zurück");

//Zum Speichern und beenden das hier ausführen
oWB->SaveCopyAs("C:\\bla\\test.xls"));
oXl->Quit();


So, das sollte fürs erste reichen.
Und an die anderen, denk bitte daran das ihr genauso mal so angefangen habt und bevormundet nicht die "Anfänger" (wobei Excel-Automation nicht gerade was für den Anfänger ist, jedenfalls nicht mit CLI)

Hoffe konnte helfen.


Zuletzt bearbeitet von teddds am 14:40:03 31.08.2010, insgesamt 3-mal bearbeitet
M_i_c_h_a_e_l
Unregistrierter




Beitrag M_i_c_h_a_e_l Unregistrierter 13:33:32 31.08.2010   Titel:              Zitieren

Super genial mit den Anmerkungen. Ich habe das Programm jetzt auch so weit das er mir die Daten da sauber reinschreibt.

Mit Excel::Workbook^ wb=ExcelApp->Workbooks->Add("C:\\Test.xls"); öffnet das Programm ja die Excel-Datei und ein Abbild von der Datei wird erstellt Test1.xls Gibt es auch eine Befehl der diese neue Datei unter einem neu Definierten Dateinamen und Pfad abspeichert und Excel wieder schließt?
audacia
Mitglied

Benutzerprofil
Anmeldungsdatum: 05.02.2005
Beiträge: 3802
Beitrag audacia Mitglied 14:10:50 31.08.2010   Titel:              Zitieren

teddds schrieb:
Und an die anderen, denk bitte daran das ihr genauso mal so angefangen habt
Sicherlich, im Kenntnisstand waren wir da auch mal. Aber mit einem Statement wie "Ich bin leider nur ein Copy-Past Codeschreiber der den Code immer nur anpasst" oder damit einhergehenden Einstellungen kann ich mich damals wie heute nicht identifizieren. Das Statement ist nicht nur etwas traurig, sondern insbesondere eine Steilvorlage.

Wenn Michael etwas lernen will, wäre es am besten, wenn er die Dokumentation läse, Tutorien durcharbeitete und dann dedizierte Fragen zu einzelnen Unklarheiten stellte. Aber mit "habe ich immer nur Fehlermeldungen gehabt wenn ich compiliert habe. Vielleich hat jemand ein laufendes Beispiel oder weiß rat?!?", d.h., ohne ausreichende Eigeninitiative, wird er nicht weit kommen.

_________________
"Hey, it compiles! Ship it!"
C++Builder Pages · Typsichere Format-Strings
teddds
Mitglied

Benutzerprofil
Anmeldungsdatum: 26.04.2010
Beiträge: 45
Beitrag teddds Mitglied 14:36:53 31.08.2010   Titel:              Zitieren

audacia schrieb:
teddds schrieb:
Und an die anderen, denk bitte daran das ihr genauso mal so angefangen habt
Sicherlich, im Kenntnisstand waren wir da auch mal. Aber mit einem Statement wie "Ich bin leider nur ein Copy-Past Codeschreiber der den Code immer nur anpasst" oder damit einhergehenden Einstellungen kann ich mich damals wie heute nicht identifizieren. Das Statement ist nicht nur etwas traurig, sondern insbesondere eine Steilvorlage.

Wenn Michael etwas lernen will, wäre es am besten, wenn er die Dokumentation läse, Tutorien durcharbeitete und dann dedizierte Fragen zu einzelnen Unklarheiten stellte. Aber mit "habe ich immer nur Fehlermeldungen gehabt wenn ich compiliert habe. Vielleich hat jemand ein laufendes Beispiel oder weiß rat?!?", d.h., ohne ausreichende Eigeninitiative, wird er nicht weit kommen.


Okay, da gebe ich dir recht. Allerdings stand ich vor kurzem vor genau dem selben Problem, denn Tutorials bzw. Bücher für Excel Automation mit CLI sind äußers selten. Ich hab mir das auch nur durch Tutorials mit C# erarbeiten können und wenn M_i_c_h_a_e_l schon sagt das er Null Ahnung hat wirds sicher nix professionelles sein und da geb ich gerne mal ein paar Zeilen Code als Inspiration raus.

@M_i_c_h_a_e_l
Die Befehle habe ich oben hinzugefügt.
C/C++ Forum :: C++/CLI mit .NET ::  Visual Cplusplus -> Excel 2007   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.