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();
}
Hola amigo muy buen Pos me fue de gran ayuda, crees me puedas echar la mano con eso deseo leer un exel que tengo data en dos libros distintos como lo podria hacer ??
ResponderBorrarSi son dos archivos de excel tendrias que aplicar el proceso para cada uno, indicando en el filename el nombre de cada archivo, si a lo que te refieres son dos hojas en un archivo de excel puedes indicar el nombre de cada hoja en la línea:
Borrarworksheet = worksheets.itemFromName( "EJEMPLO DE ARTICULOS");
worksheet2 = worksheets.itemFromName( "Hoja2MismoArchivoExcel");