PDA

Visualizza la versione completa : [C]scrivere su foglio excel in c


17RoiDavid
02-01-2008, 22:44
ciao a tutti...si può scrivere sulle celle di un foglio excel usando il linguaggio C?? o bisogna per forza passare da visual basic??

pallinopinco
02-01-2008, 22:51
usando il linguaggio C?? o bisogna per forza passare da visual basic??

Tutto ciò che risulta fattibile in Visual Basic si può fare anche in C, non vale il viceversa... :)

Cosa vuoi fare di preciso? Creare un file Excel da zero? Aggiornarne uno esistente (in tal caso devi specificare la versione di Excel utilizzata per crearlo)? Sulle macchine che eseguiranno il tuo programma è installato Office?

17RoiDavid
02-01-2008, 23:02
per ora vorrei fare solo cose semplicissime...tipo che ne so fare un ciclo che mi permetta di riempire una colonna di 32 celle con numeri a caso...quindi immagino dovrò fare una sorta di open su un file excel...solo non so quali funzioni usare e come scrivere nelle celle...
ovviamente sulla mia macchina c'e office(2007)

pallinopinco
02-01-2008, 23:20
Per scrivere su un file Excel con un programma sviluppato in C hai diverse possibilità:

1) Studi il formato Excel BIFF (http://chicago.sourceforge.net/devel/docs/excel/) e fai tutto a manina (in bocca al lupo!)

2) Usi la COM Automation (richiede una versione installata di Excel per funzionare)

3) Ti affidi a librerie di terze parti (spesso sono a pagamento)

Se sei alle prime armi con la programmazione ti consiglio di dedicare il tuo tempo ad attività più amene... :)

17RoiDavid
02-01-2008, 23:26
la prima mi sembra un suicidio...la terz nemmeno la consideriamo :) ....cosa è la COM Automation??

17RoiDavid
02-01-2008, 23:34
sarebbero graditissimi esempietti stupidi di qualche riga di codice :)....qualsiasi cosa va bene...anche scrivere un helloworld nella cella A1 :)...ciao a tutti e grazie 1000

pallinopinco
02-01-2008, 23:36
È una tecnica di automazione (http://support.microsoft.com/?scid=kb;en-us;222101) basata sulle interfacce COM (http://msdn2.microsoft.com/en-us/library/dt80be78.aspx), non è una passeggiata di salute, soprattutto se affrontata in vanilla C.

QUI (http://www.codeproject.com/KB/COM/#COM/DCOM/COM+ - Automation) trovi un po' di esempi.

Esempio minimale:



HRESULT hres;
CLSID clsid;
CLSIDFromProgID(L"Excel.Application", &clsid);
IDispatch *excelApp;

// Start Excel as a COM server in a separate process
hres = CoCreateInstance(&clsid, 0, CLSCTX_LOCAL_SERVER, IID_IDispatch, (void **)&excelApp);

if(FAILED(hres))
{
// error handling
}

DISPID dispidVisible;
OLECHAR *propertyName = "Visible";
hres = excelApp->GetIDsOfNames(IID_NULL, &propertyName, 1, LOCALE_SYSTEM_DEFAULT, &dispidVisible);

if(FAILED(hres))
{
// error handling
}

unsigned returnArg;
VARIANT varTrue;
DISPPARAMS params = { &varTrue, 1, 0, 0 };

// set the variant to a boolean true
varTrue.vt = VT_BOOL;
varTrue.boolVal = 0xFFFF;

// make the window visible: excelApp.Visible = True
hres = excelApp->Invoke(dispidVisible, IID_NULL, LOCALE_SYSTEM_DEFAULT, DISPATCH_PROPERTYPUT, params, 0, 0, &returnArg);

if(FAILED(hres))
{
// error handling
}

// ... use the object

// free the object
excelApp->Release();

17RoiDavid
02-01-2008, 23:41
grazie 1000 ancora per il tuo tempo...

pallinopinco
02-01-2008, 23:45
Su MSDN (ma non solo) trovi molti articoli sull'automazione COM con MFC (C++), per esempio How to use MFC to automate Excel and create and format a new workbook (http://support.microsoft.com/kb/179706/en-us). Ovviamente dovrai fare riferimento alla documentazione ufficiale per scoprire quali metodi usare per leggere/scrivere file Excel. In C le cose diventano ancora più complicate...

NB. Ti ricordo che un programma basato sull'Office Automation *richiede* la presenza di Excel per funzionare.

Loading