Mais links

As imagens deste blog são alojadas por HostImage - Serviço gratuíto

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();

0 comentários