Microsoft.Office.Interop.Excel com o Visual C++.net
Tive que trabalhar com o Excel a partir de código Managed em C++.Net - Visual Studio 2005. Aqui fica um pequeno exemplo que desenvolvi, que cria um ficheiro, adiciona uma folha, altera o nome das duas folhas, escreve valor e depois fecha.
Utilizando o Microsoft.Office.Interop.Excel 1.5 do Office 2003.
Espero que vos seja útil.
// Abre o Excel
Excel::ApplicationClass^ pExcel = gcnew Excel::ApplicationClass();
System::Object^ oMissing = System::Reflection::Missing::Value;
// Mostra a janela do Excel
pExcel->Visible = true;
// Cria Ficheiro Excel novo
Excel::_Workbook^ pBook = pExcel->Workbooks->Add(oMissing);
//Abre ficheiro existente
//Excel::_Workbook^ pBook = pExcel->Workbooks->Open(FicheiroExcel, oMissing, /*ReadOnly*/false,
// oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
// /*Editable*/false, oMissing, oMissing, oMissing, oMissing, oMissing);
pBook->Activate();
// Objecto que representa folhas de um documento excel
Excel::Sheets^ sheets = pBook->Worksheets;
//Cria um objecto worksheet que representa a folha 1
_Worksheet^ worksheet1 = safe_cast<_Worksheet^>(sheets->Item[ (Object^)1 ]);
//Muda o nome da folha
worksheet1->Name = "FolhaNumero1";
// Cria objecto que representa as celulas da FolhaNumero1
// utiliza-se este objecto Range para escrever nas celulas
// Escreve na folha numero 1
Range^ range1 = worksheet1->Range["A1", oMissing];
range1->Value2 = "Valor1";
range1->ColumnWidth = 13;
range1 = worksheet1->Range["B1", "C1"];
range1->ColumnWidth = 2;
range1 = worksheet1->Range["D1", oMissing];;
range1->Value2 = "Valor2";
range1->ColumnWidth = 16;
// Adiciona mais uma folha ao documento a seguir à FolhaNumero1 com o nome FolhaNumero2
_Worksheet^ worksheet2 = safe_cast<_Worksheet^>(sheets->Add(oMissing,worksheet1,oMissing,oMissing));
worksheet2->Name = "FolhaNumero2";
// Prepara o cabeçalho na FolhaNumero2
Range^ range2 = worksheet2->Range["D1", oMissing];
range2->Value2 = "Valor1";
range2->ColumnWidth = 16;
range2 = worksheet2->Range["E1", oMissing];
range2->Value2 = "Valor2";
range2->ColumnWidth = 16;
.....
.....
//Fechar Excel
pBook->Close(true, oMissing, oMissing);
System::Runtime::InteropServices::Marshal::ReleaseComObject(pBook);
pExcel->Quit();
System::Runtime::InteropServices::Marshal::ReleaseComObject(pExcel);
GC::Collect();

sergionscarvalho@gmail.com




Enviar um comentário