IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

ouvrir fichier Excel avec VC++


Sujet :

C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    224
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par d�faut ouvrir fichier Excel avec VC++
    Bonjour,
    Je cherche � ouvrir un fichier Excel existant sans utiliser les outils .Net.
    Le fichier ne veut pas s'ouvrir il retourne l'exception.

    Si je fais ceci �a me cr�� bien un fichier Excel et �a me remplit la cellule :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    43
    44
    45
    46
    47
    48
    49
    #include <iostream>
     
    #import "F:\Program Files\Fichiers communs\Microsoft Shared\Office10\MSO.DLL" no_namespace rename("DocumentProperties","DocumentPropertiesXL")
    #import "F:\Program Files\Fichiers communs\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB" no_namespace
    #import "F:\Program Files\Microsoft Office\Office10\Excel.exe" rename("ExitWindows", "ExitWindowsWD") rename("DialogBox", "ExcelDialogBox") rename("RGB", "ExcelRGB") no_dual_interfaces
     
    using namespace std;
     
    int main()
    {
    	// Initialize COM
    	CoInitialize(NULL);
    	try
    	{
    		Excel::_ApplicationPtr excel;
     
    		HRESULT hr = excel.CreateInstance(L"Excel.Application");
    		if(FAILED(hr))
    		{
    		char msg[1024] = {0};
    		sprintf(msg, "E: There was an error initializing Excel: %d", hr);
    		printf(msg);
    		}
    		excel->PutVisible (true);
     
    		//ajoute un workbook		
    		Excel::_WorkbookPtr workbook = excel->Workbooks->Open("F:\Documents and Settings\Jérôme\Mes documents\Visual Studio 2008\Projects\PROGRAMME_MAC_BU\PROGRAMME_MAC_BU\Debug\PROGBU.xls"); // Create the workbook
     
    		//prendre le nom de la feuille active
    		Excel::_WorksheetPtr worksheet = excel->ActiveSheet; // Get the active sheet
     
    		//nommer la feuille
    		//worksheet->PutName ("Nom de la feuille");
     
    		// on remplit une cellule
    		//worksheet->Range["A1"]->Value = "Hello";
     
    		//worksheet->SaveAs("c:\\test.xls");
    		//workbook->Close(); // Close the workbook
    		//excel->Quit(); // Quit excel
    	}
     
    	catch(_com_error &ce)
    	{
    		 MessageBox (NULL, "Erreur !!!", "Error", 0x10010);
    	}
     
    	CoUninitialize();
    }
    Pourquoi cela ne marche pas ?
    Merci de m'aider.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    J'ai du mal � comprendre ton post.
    Peux-tu pr�ciser exactement ce qui marche ou pas ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    224
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par d�faut
    En fait le fichier Excel n'est pas ouvert et donc l'exception est retourn�e (ouverture de la MessageBox).

    Je mets le message du debugger :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    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
    'testExcel.exe' : Chargé 'F:\Documents and Settings\Jérôme\Mes documents\Visual Studio 2008\Projects\testExcel\Debug\testExcel.exe', Les symboles ont été chargés.
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\ntdll.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\kernel32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\user32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\gdi32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\ole32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\advapi32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\rpcrt4.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\secur32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\msvcrt.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\oleaut32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\WinSxS\x86_Microsoft.VC90.DebugCRT_1fc8b3b9a1e18e3b_9.0.21022.8_x-ww_597c3456\msvcr90d.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\imm32.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\MSCTF.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\SynTPFcs.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\version.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\clbcatq.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\comres.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\msi.dll'
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\xpsp2res.dll', Le fichier binaire n'a pas été généré avec les informations de débogage.
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\sxs.dll'
    Exception de première chance à 0x7c812a5b dans testExcel.exe : Exception Microsoft C++ : _com_error à l'emplacement mémoire 0x0012f824..
    'testExcel.exe' : Chargé 'F:\WINDOWS\system32\MSCTFIME.IME'
    Le thread 'Thread de rappel RPC' (0x6f4) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread de rappel RPC' (0xd44) s'est arrêté avec le code 0 (0x0).
    Le thread 'Thread Win32' (0xddc) s'est arrêté avec le code 0 (0x0).
    Le programme '[540] testExcel.exe: Natif' s'est arrêté avec le code 0 (0x0).

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    As-tu d�bogu� pas � pas ?
    � quel moment a lieu l'erreur exactement ? Dans le Open() ?
    Quel est le contenu de l'exception ? (HRESULT ? Message ?)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    224
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par d�faut
    L'erreur est effectivement dans l'ouverture.
    Si je commente la ligne du Open() l'exception n'est pas retourn�e.
    Le message est celui de l'exception ("Erreur !!!").

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par jerome71300 Voir le message
    Le message est celui de l'exception ("Erreur !!!").
    Je pensais avoir �t� assez clair dans mon pr�c�dent post:
    La classe _com_error contient tout plein d'infos sur l'erreur, comme son HRESULT et une interface IErrorInfo...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  7. #7
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    224
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par d�faut
    Up !

  8. #8
    Membre chevronn� Avatar de stephdim
    Profil pro
    Inscrit en
    Ao�t 2007
    Messages
    462
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2007
    Messages : 462
    Par d�faut
    tu regardes dans la doc de Qt comment tu peux extraire un const char * ou un const wchar_t * depuis ton QString et le tour est jou�. autrement dit, recuperer un pointeur sur une chaine de type C (avec un '\0' pour finir la chaine)
    de pr�f�rence un const wchar_t *, �a �vite des conversions ...

    @+

  9. #9
    Membre confirm�
    Inscrit en
    Mars 2007
    Messages
    224
    D�tails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 224
    Par d�faut
    Apr�s un passage par la rubrique "Qt" :
    Il me manquait la ligne pour la conversion :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    std::wstring ws = tableau->item(1, 1)->text().toStdWString();
    const wchar_t *bb = ws.c_str(); //je parle de celle-ci
    Merci � tout le monde.

  10. #10
    Invit� de passage
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    1
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 1
    Par d�faut Ecriture dans une ou plusieurs cellules
    On peut aussi inserer du texte en masse comme �a :

    Excel::RangePtr pRange = worksheet->GetRange( _bstr_t( _T("A1") ), _bstr_t( _T("Z255" ) ) );
    pRange->Cells->PutValue2(_bstr_t( _T("TEST") ));

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [XL-2010] Ouvrir fichier Excel avec une partie de son nom
    Par juluseless dans le forum Macros et VBA Excel
    R�ponses: 2
    Dernier message: 20/10/2014, 14h12
  2. [XL-2007] Ouvrir fichier excel avec vba
    Par Traputaca dans le forum Macros et VBA Excel
    R�ponses: 3
    Dernier message: 25/05/2013, 16h22
  3. Ouvrir fichier excel avec accents
    Par allergique dans le forum VB 6 et ant�rieur
    R�ponses: 6
    Dernier message: 20/05/2011, 14h03
  4. [OpenOffice][Tableur] Ouvrir fichier EXCEL avec OO dans IE
    Par hittony dans le forum OpenOffice & LibreOffice
    R�ponses: 0
    Dernier message: 19/04/2011, 11h38
  5. Ouvrir fichier Excel avec macro
    Par zephirsoul dans le forum Macros et VBA Excel
    R�ponses: 1
    Dernier message: 30/11/2007, 18h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo