El archivo de excel de muestra no lo dejo aquí, pero es un simple excel a 5 columnas donde los dos primeros campos los leo como strings y los otros 3 como double por ser cantidades.
Espero que les sea de ayuda.
static void grwReadExcel(Args _args)
{
SysExcelApplication application;
SysExcelWorkbooks workbooks;
SysExcelWorkbook workbook;
SysExcelWorksheets worksheets;
SysExcelWorksheet worksheet;
SysExcelCells cells;
COMVariantType type;
FilenameOpen filename;
int row = 1; //si el excel tiene nombres de columnas
str producto, descripcion;
int cantidadRecibida, documentoBase, numeroArticulosTotales = 0, existenDiscrepancias = 0;
real igi;
;
filename = "C:\\Users\\Desa\\Documents\\EJEMPLO.xlsx" ; // nombre de archivo
application = SysExcelApplication::construct();
workbooks = application.workbooks();
try
{
workbooks.open(filename);
}
catch (Exception::Error)
{
throw error("No se encontro el archivo" );
}
workbook = workbooks.item( 1);
worksheets = workbook.worksheets();
//nombre de la hoja dentro del excel
worksheet = worksheets.itemFromName( "EJEMPLO DE ARTICULOS");
cells = worksheet.cells();
//Iterando las celdas y sacando valores
do
{
//Incrementando a la siguiente fila en el excel
row++;
producto = cells.item(row, 1).value().bStr();
descripcion = cells.item(row, 2).value().bStr();
cantidadRecibida = real2int(cells.item(row, 3).value().double());
igi = cells.item(row, 4).value().double();
documentoBase = real2int(cells.item(row, 5).value().double());
info( strFmt("idproducto: %1, descr: %2, cant: %3, igi: %4, docBase: %5" , producto, descripcion, cantidadRecibida, igi, documentoBase));
numeroArticulosTotales++;
//Guardando el tipo de celda en una variable COMVariantType y validando si esta vacia o no
type = cells.item(row+ 1, 1 ).value().variantType();
}
while (type != COMVariantType::VT_EMPTY);
info( strFmt("numero de articulos: %1" , numeroArticulosTotales));
//Cerrando la app de excel
application.quit();
}