Oi Galera, Estou fazendo um programa no c++ builder no qual eu preciso ler uma planilha do excel e armazenar os dados em um banco de dados firebird. Atualmente estou usando o seguinte método: XL=Variant::CreateObject("excel.application"); // XL é Variant do sistema
XL.OlePropertySet("Visible",false);
XL.OlePropertyGet("Workbooks").OleProcedure("Open",path.c_str());
v0 = XL.OlePropertyGet("Sheets"); // ScTableSheetsObj
Variant nSheetCount = v0.OlePropertyGet("Count");
long max = nSheetCount;
v0=XL.OlePropertyGet("Sheets",1);
v1=v0.OlePropertyGet("Cells");
int i = INICIAL_LINE; //Linha inicial = 1 no caso
int count = 0;
AnsiString tmp;
char buffer[128];
for (int nlinha = 5; nlinha < row_count; nlinha++)
{
vcell=v1.OlePropertyGet("Item",nlinha,1);
tmp=vcell.OlePropertyGet("Value");
if (tmp == "")
{
this->m_NumRow = nlinha-1;
nlinha = row_count;
}
else
dados_colunas.push_back(tmp.c_str()); // dados_colunas - vetor
}
dados.push_back(dados_colunas); // dados - vetor<vetor> Após isso, eu insiro os dados no banco utilizando IBPP e insert normal, percorrendo os vetores de dados. Contudo, minha planilha possui aproximadamente 500 linhas, de forma que este método está muito lento. Gostaria de saber se alguém sabe de alguma outra forma mais rápida de importar dados do excel para firebird utilizando c++. Muito obrigada!