Importar archivo de excel en c++ builder
Estoy realizando el proyecto de fin carrera, se trata de un programa en c++ builder. Tengo q realizar una interfaz q coja un archivo en excel, indicandole la ruta, lo abra y luego guarde los datos del archivo para poder hacer operaciones con esos datos.
Gracias
Gracias
Soluci贸n: Abrir el archivo Escel y guardarlo en formato DBase con el que puedes trabajar.
Creo un formulario.
Pego un control ExcelApplication1
Pego un control OpenDialog
Pego un boton
El c贸digo del evento generado al pulsar el bot贸n es:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
//Busco un fichero Excel y obtengo su nombre y ruta
TVariant FileName = OpenDialog1->FileName.c_str();
//Creo una cadena con la ruta completa
//(donde se halla la aplicaci贸n) y designo un
//nombre "Copia.Dbf" para el fichero a crear
TVariant Fiche=ExtractFilePath(Application->ExeName)+"Copiax.dbf";
WorkbooksPtr Libro;
SheetsPtr Hoja;
RangePtr Celdas;
_WorkbookPtr PLibro;
_WorksheetPtr PHoja;
TVariantInParam t;
t =EmptyParam;
//Abro la aplicaci贸n Excel
try {
ExcelApplication1->Connect();
ExcelApplication1->Workbooks->Open(FileName,
t,t,t,t,t,t,t,t,t,t,t,t) ;
Libro=ExcelApplication1->Get_Workbooks();
//
ExcelApplication1->Visible[0]=true;
}
catch (Exception &exception) {
Application->MessageBox(
"Esta aplicaci贸n necesita Excel 97 o superior",
"Aviso...",
MB_ICONSTOP);
return;
}
//Quito los mensajes de Excel
ExcelApplication1->DisplayAlerts[0]=false;
PLibro=ExcelApplication1->Workbooks->get_Item(1);;
Hoja = PLibro->get_Sheets();
PHoja = PLibro->get_ActiveSheet();
//Obtengo el rango de la 1ª celda
Celdas = PHoja->get_Range("A1","A1");
//Selecciono la 1ª celda
Celdas->Select();
//Salvo el libro como DBaseIII, par谩metro 8
// DBaseII es 7 y DBase IV =12)
PLibro->SaveAs(Fiche,8,t,t,t,t,0,t,t,t,t,t);
ExcelApplication1->Quit();
delete Libro;
delete Hoja;
delete Celdas;
delete PLibro;
delete PHoja;
if (!FileExists(FileName))
ShowMessage("No se ha creado el fichero Copiax.Dbf procedente de Excel");
else
ShowMessage("Creado el fichero con 茅xito");
}
}
Saludos
Creo un formulario.
Pego un control ExcelApplication1
Pego un control OpenDialog
Pego un boton
El c贸digo del evento generado al pulsar el bot贸n es:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (OpenDialog1->Execute())
{
//Busco un fichero Excel y obtengo su nombre y ruta
TVariant FileName = OpenDialog1->FileName.c_str();
//Creo una cadena con la ruta completa
//(donde se halla la aplicaci贸n) y designo un
//nombre "Copia.Dbf" para el fichero a crear
TVariant Fiche=ExtractFilePath(Application->ExeName)+"Copiax.dbf";
WorkbooksPtr Libro;
SheetsPtr Hoja;
RangePtr Celdas;
_WorkbookPtr PLibro;
_WorksheetPtr PHoja;
TVariantInParam t;
t =EmptyParam;
//Abro la aplicaci贸n Excel
try {
ExcelApplication1->Connect();
ExcelApplication1->Workbooks->Open(FileName,
t,t,t,t,t,t,t,t,t,t,t,t) ;
Libro=ExcelApplication1->Get_Workbooks();
//
ExcelApplication1->Visible[0]=true;
}
catch (Exception &exception) {
Application->MessageBox(
"Esta aplicaci贸n necesita Excel 97 o superior",
"Aviso...",
MB_ICONSTOP);
return;
}
//Quito los mensajes de Excel
ExcelApplication1->DisplayAlerts[0]=false;
PLibro=ExcelApplication1->Workbooks->get_Item(1);;
Hoja = PLibro->get_Sheets();
PHoja = PLibro->get_ActiveSheet();
//Obtengo el rango de la 1ª celda
Celdas = PHoja->get_Range("A1","A1");
//Selecciono la 1ª celda
Celdas->Select();
//Salvo el libro como DBaseIII, par谩metro 8
// DBaseII es 7 y DBase IV =12)
PLibro->SaveAs(Fiche,8,t,t,t,t,0,t,t,t,t,t);
ExcelApplication1->Quit();
delete Libro;
delete Hoja;
delete Celdas;
delete PLibro;
delete PHoja;
if (!FileExists(FileName))
ShowMessage("No se ha creado el fichero Copiax.Dbf procedente de Excel");
else
ShowMessage("Creado el fichero con 茅xito");
}
}
Saludos
Hola Cecilio Mateo Longarela!
Estoy intentando utilizar tu codigo en un sencillo programita que convierta Excel a DBF pero no logro hacer que cree el archivo DBF. Ademas tengo una duda en el ultimo if ya que me parece que deberia ir Fiche que es la que apunta al DBF. Me podrias ayudar? Muchisimas gracias....
Estoy intentando utilizar tu codigo en un sencillo programita que convierta Excel a DBF pero no logro hacer que cree el archivo DBF. Ademas tengo una duda en el ultimo if ya que me parece que deberia ir Fiche que es la que apunta al DBF. Me podrias ayudar? Muchisimas gracias....
