View Full Version : [C++]Memorizzare i dati in celle specifiche di un foglio excel
Ciao a tutti
Mi sapreste dire come fare (se c'è un modo) x far sì ke i dati immessi in un programmino c++ siano memorizzati i in un foglio di calcolo excel?
Per essere + chiari, l'idea è questa: quando nel programmino c++ viene inserita una serie di dati, questi automatiamente devono essere salvati in un foglio excel già preparato, ed inseriti in celle specifiche in base, fondamentalmente, alla data ed all'ora d'inserimento.
Nel foglio excel ci sono una serie di colonne, una x ogni ora del giorno, ed una serie di righe, una x ogni giorno del mese (+ altre cosucce...)
Come faccio a far sì ke il programmino inserisca correttamente un dato, mettiamo, nella cella D4, ed un altro in quella F6, ...?
Voglio dire, finora avevo fatto in modo ke il programma iniziasse a scrivere sempre dall'inizio ed inserisse un numero di tabulazioni opportuno in modo da raggiungere la cella desiderata, ma è ovvio ke fare questo su 210 celle è assurdo.
Nn ci sarebbe, x es. un modo per posizionare il cursore direttamente nella cella adatta in fase di scrittura?
Spero di essere stato abb kiaro
Grazie
Fenomeno85
29-12-2005, 13:31
prova a vedere con questo esempio:
#import "C:\Program Files\Microsoft Office\Office\MSO9.DLL"
#import "C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB"
#import "C:\Program Files\Microsoft Office\Office\EXCEL9.OLB" \
rename("DialogBox", "ExcelDialogBox") \
rename("RGB", "ExcelRGB") \
no_dual_interfaces
using namespace std;
int main()
{
// Initialize COM
CoInitialize(NULL);
try
{
Excel::_ApplicationPtr excel;
// Initialize Excel and make sure it's initialized
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);
throw std::runtime_error(msg);
}
Excel::_WorkbookPtr workbook = excel->Workbooks->Add(static_cast<long>(Excel::xlWorksheet)); // Create the workbook
Excel::_WorksheetPtr worksheet = excel->ActiveSheet; // Get the active sheet
// This is how you put the values into the worksheet
worksheet->Range["A1"]->Value = "Hello"; // Set a value
worksheet->SaveAs("c:\\test.xls"); // Save it
workbook->Close(); // Close the workbook
excel->Quit(); // Quit excel
}
catch(_com_error &ce)
{
// Handle the error
}
CoUninitialize();
return 0;
}
~§~ Sempre E Solo Lei ~§~
Fenomeno85
29-12-2005, 17:18
ms visual basic, giusto?
ha scritto c++ non vb
~§~ Sempre E Solo Lei ~§~
si si
ma VBA6 cos'è allora? nn è qcs ke ha a ke fare con le librerie di vb?
cmq grazie :)
riuscissi a trovare anke ste librerie sarei a posto...
Fenomeno85
30-12-2005, 13:16
vb != c++
son due linguaggi di programmazioni differenti. Lavorare con vb su excel è molto più easy basta che ti connetti sul foglio di lavoro e poi usi l'istruzione Cells per accedere a una determinata cella del foglio.
~§~ Sempre E Solo Lei ~§~
no, io vb nn lo so usare
io mi riferivo a quello ke c'è scritto dopo #import nel file ke haipostato
dove le trovo quelle cose? se provo a compilarlo così com'è, (naturalmente) nn va
nn avendo ms Office ma solo open office posso fare qualcosa?
però ho visual studio, nel caso servissero librerie particolari di zio Bill :)
nn avendo ms Office ma solo open office posso fare qualcosa?
però ho visual studio, nel caso servissero librerie particolari di zio Bill :)
grazie mille.
Io purtroppo nn ho trovato nemmeno uno di quei files :( (ho ofice xp)
se puoi, potresti fare una ricerca tu?
anke se penso ke forse il II file è una libreria di Visual Studio. Gli altri mi sembravano files di Office, ke purtroppo io nn ho.
Quindi nn so cosa fare :cry:
Fenomeno85
04-01-2006, 17:59
allora ho trovato questo
http://www.codeproject.com/cpp/miniexcel.asp
altrimenti se non ricordo male su exel ci si può connettere con gli ado
~§~ Sempre E Solo Lei ~§~
nn avendo ms Office ma solo open office posso fare qualcosa?
però ho visual studio, nel caso servissero librerie particolari di zio Bill :)
mi servirebbe un tuo aiuto
dovrei trovare la libreria VBE6EXT.OLB (normalmente si trova seguendo il percorso in C:\Program Files\Common Files\Microsoft Shared\VBA\VBA6\VBE6EXT.OLB)
sono riuscito a trovare le corrispondenti versioni in Office XP e 2003 x gli altri files di libreria - indicati da Fenomeno85 - ke dovrei includere (ke quindi ho), ma questo è una libreria di visual studio, ke purtroppo nn ho :(
se potessi passarmela mi faresti un grande favore :)
tnx
se ti interessa visual studio c'è la versione 2005 express scaricabile gratuitamente sul sito di microsoft (cerca il topic su questo forum sui regali di natale delle software house e dovresti trovare tutte le info)
cmq adesso provo a cercare il file (ke però dal nome mi pare sia si visual basic 6 ke nn ho, io ho 2003 e 2005express) e se lo trovo lo posto qui.
ciao
se ti interessa posso darti il file vsext.olb, l'unico che si avvicina a quallo richiesto da te. fammi sapere
grazie!!!
magari domani provo
ti do la mia mail: skater AT nafura.it
in alternativa ho trovato cmq ke x office 97 (ke dovrei avere se nn erro) va bene questa:
C:\Program Files\Common Files\Microsoft Shared\VBA\VBEEXT1.OLB
ma tu dici quindi ke la VBE6EXT.OLB è della versione 6 di visual studio?
ho provato a ricercare del topic ke mi hai detto, ma cercando con google nn sono riuscito a trovare nulla. ti ricordi x caso se è un topic di questa sez? al max domani scorro i 3d direttamente
grazie mille :)
il link per visual studio è questo http://msdn.microsoft.com/vstudio/express/support/install/
hai la mia mail.
caio
ti ringrazio sei stato gentilissimo!!!
domani provo :sperem:
ah scusa x visual studio c++ 2005 express nn ho capito una cosa: me l'hai segnalato xkè potrei provare a trovare lì la libreria opp nn serve x questo (se ho ben capito ce l'hai anke tu e nn ti risulta ci sia lì questa libreria)?
in ogni caso ti ringrazio, penso cmq ke ne approfitterò di questa promozione fino a nov 2006 :sofico:
edit: notte :zzz:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.