Foros del Web » Programando para Internet » Javascript »

abrir archivo excel en una hoja específica

Estas en el tema de abrir archivo excel en una hoja específica en el foro de Javascript en Foros del Web. Hola a todos. Tengo un enlace el cual abre un archivo excel que contiene varias hojas, quiero abrirlo en una hoja específica. como puedo hacer ...
  #1 (permalink)  
Antiguo 11/02/2009, 14:20
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
abrir archivo excel en una hoja específica

Hola a todos.

Tengo un enlace el cual abre un archivo excel que contiene varias hojas, quiero abrirlo en una hoja específica.

como puedo hacer eso?

asi tengo el enlace: <a href= d:/fuentes.xls>Abrir XLS</a>
  #2 (permalink)  
Antiguo 11/02/2009, 14:34
Avatar de ElJavista
Colaborador
 
Fecha de Ingreso: marzo-2007
Ubicación: Lima Perú
Mensajes: 2.231
Antigüedad: 17 años, 1 mes
Puntos: 67
Respuesta: abrir archivo excel en una hoja específica

Del modo como estás queriendo hacer no se puede. En primer lugar a ese link le faltan las comillas, aunque funcione está mal, en segundo lugar los links a archivos que no pueden ser abiertos por un navegador se descargan, y si le eliges la opción abrir, pues lo abre en la primera hoja. No veo solución a tu problema, lo lamento.
  #3 (permalink)  
Antiguo 11/02/2009, 14:37
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

Gracias por contestar.
  #4 (permalink)  
Antiguo 11/02/2009, 15:01
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

mmmm... todo es posible. Dame 5 minutos y te puedo plantear solución.
Te lo podría implementar para Iexplorer, unicamente?
  #5 (permalink)  
Antiguo 11/02/2009, 15:16
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
De acuerdo Respuesta: abrir archivo excel en una hoja específica

Tu puedes crear tus propios componentes ActiveX en VisualBasic(Si alguna vez programaste en ello, hoy ya existe .NET), y con tu propio componente personalizado puedes hacer lo que quieras con windows...


Mira ha ver si esto te funciona, pero recuerda solo sera compatible con IExplorer...Para Firefox puedes crear tus propios componentes y en la practica sería algo parecido... En la página de Firefox puedes encontrar algunas especificaciones del como hacerlo... Un saludo.
Código:
<html>
<head>
<script language="javascript">
//defino la función que hace la operación
function MIexcel(){
var IEx='';//is IE
var Hoja;
var Libro;
var Vcols;
var ObjetoXLS;//Objeto excel

IEx=document.all?1:0; //is IE confirm

	if(IEx==1){
		ObjetoXLS = new ActiveXObject('Excel.Application');
		Libro = ObjetoXLS.Workbooks.Add; //Libro
		Hoja = Libro.Worksheets(1); //Hoja
		Hoja.Activate(); //Activar la hoja
		ObjetoXLS.ActiveSheet.Cells(2,2).Value = 'Hola';
		ObjetoXLS.Application.Visible = true;
	}else{//Crear un complemento para firefox
		alert('Esto solo es compatible para iexplorer');
	}
}
MIexcel();
</script>
</head>
<body>
</html>
  #6 (permalink)  
Antiguo 11/02/2009, 15:21
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

En tu caso podrías crear una opción de descarga en un botón o link, Creas un popup de configuración de descarga del archivo y al finalizar activas la hoja donde deseas que se muestre la información.

Y espero hayas solucionado tus problemas con los Check.

Un saludo.
  #7 (permalink)  
Antiguo 11/02/2009, 15:30
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

me falto esto...

ObjetoXLS = new ActiveXObject("Excel.Application");
RUTA = "c:\Documento.xls";
Libro = ObjetoXLS.Workbooks.OPEN(RUTA,false,false);
Hoja = Libro.Worksheets(1);
Hoja.Application.Visible = true;


//Mostrar excel una vez ejecutado
ExcelAp.visible = true;
//Abrir un archivo específico
var excBook = ExcelAp.Workbooks.open("c:\Documento.xls");

//Libro.Close(true);//Cerrar libro
//ObjetoXLS.Application.Quit();//cerrar aplicacion
  #8 (permalink)  
Antiguo 11/02/2009, 15:46
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

Hola, te agradezco muchisimo tu respuesta, lo voy a probar espero interpretarlo bien.

y sobre los check pues no lo solucione como quisiera, estoy en lo de cambiar el cursor del mouse por el relojito, aunque si lo cambia después de un buen rato transcurrido después de darle clic en el enlace de "seleccionar todos".

voy a probar la rutina y te comento como me fue
  #9 (permalink)  
Antiguo 11/02/2009, 15:51
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

hola lo puse asi y no aparece nada

<html>
<head>
<script language="javascript">
//defino la función que hace la operación
function MIexcel(){
var IEx='';//is IE
var Hoja;
var Libro;
var Vcols;
var ObjetoXLS;//Objeto excel

IEx=document.all?1:0; //is IE confirm

if(IEx==1){
ObjetoXLS = new ActiveXObject('Excel.Application');
Libro = ObjetoXLS.Workbooks.Add; //Libro
Hoja = Libro.Worksheets(1); //Hoja
Hoja.Activate(); //Activar la hoja
ObjetoXLS.ActiveSheet.Cells(2,2).Value = 'Hola';
ObjetoXLS.Application.Visible = true;
}else{//Crear un complemento para firefox
alert('Esto solo es compatible para iexplorer');
}
}
ObjetoXLS = new ActiveXObject("Excel.Application");
RUTA = "d:/fuentes.xls";
Libro = ObjetoXLS.Workbooks.OPEN(RUTA,false,false);
Hoja = Libro.Worksheets(2);
Hoja.Application.Visible = true;


//Mostrar excel una vez ejecutado
ExcelAp.visible = true;
//Abrir un archivo específico
var excBook = ExcelAp.Workbooks.open("c:\Documento.xls");

//Libro.Close(true);//Cerrar libro
//ObjetoXLS.Application.Quit();//cerrar aplicacion
MIexcel();
</script>
</head>
<body>
</html>


Estaré haciendo algo mal?
  #10 (permalink)  
Antiguo 11/02/2009, 15:51
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

pero si recorres la lista en ambos sentidos, te reduce el tiempo a la mitad, y la carga de memoria... ya no tendrías un ciclo que va de cero a 1000, sino de 0 ha 500... Y si retiras el if, colocando id's de cada check...puede reducir aun mas. No se si no entendiste mi explicación. Si gustas me pasas el código y te hago un ejemplo.

Bueno, al final no se como lo solucionaste, pero la opción del relojito no me parece la mejor.
  #11 (permalink)  
Antiguo 11/02/2009, 16:00
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

A mi tampoco me gusta la idea del relojito, además de que no funciona como quisiera.
Así tengo el ciclo para los check:

J=500;
if (dato == "Todo") {
for (I=1; I<=500; I++) {
Nom="document.ValidForms.S" + I + ".checked = true";
eval(Nom);
Nom="document.ValidForms.S" + J + ".checked = true";
eval(Nom);
J=J-1;

}
}
else {
document.ValidForms.reset();
}
  #12 (permalink)  
Antiguo 11/02/2009, 16:09
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

Hola otra vez

ya funciona la rutina del archivo excel solo que no lo abre en la hoja que quiero, asi lo tengo:

<html>
<head>
<script language="javascript">
//defino la función que hace la operación
function MIexcel(){

var IEx='';//is IE
var Hoja;
var Libro;
var Vcols;
var ObjetoXLS;//Objeto excel

IEx=document.all?1:0; //is IE confirm

if(IEx==1){
ObjetoXLS = new ActiveXObject("Excel.Application");
RUTA = "d:/fuentes.xls";
Libro = ObjetoXLS.Workbooks.OPEN(RUTA,false,false);
Hoja = Libro.Worksheets(2);
Hoja.Application.Visible = true;


//Mostrar excel una vez ejecutado
ExcelAp.visible = true;
//Abrir un archivo específico
var excBook = ExcelAp.Workbooks.open("d:/fuentes.xls");

//ObjetoXLS = new ActiveXObject('Excel.Application');
//Libro = ObjetoXLS.Workbooks.Add; //Libro
//Hoja = Libro.Worksheets(2); //Hoja
//Hoja.Activate(); //Activar la hoja
//ObjetoXLS.ActiveSheet.Cells(2,2).Value = 'Hola';
//ObjetoXLS.Application.Visible = true;
}else{//Crear un complemento para firefox
alert('Esto solo es compatible para iexplorer');
}
}


//Libro.Close(true);//Cerrar libro
//ObjetoXLS.Application.Quit();//cerrar aplicacion
//MIexcel();
</script>
</head>
<body>
<a href= "javascript:MIexcel();">Abrir Excel</a>
</body>
  #13 (permalink)  
Antiguo 11/02/2009, 16:33
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
De acuerdo Respuesta: abrir archivo excel en una hoja específica

Cita:
Iniciado por Betina232022 Ver Mensaje
A mi tampoco me gusta la idea del relojito, además de que no funciona como quisiera.
Así tengo el ciclo para los check:

J=500;
if (dato == "Todo") {
for (I=1; I<=500; I++) {
Nom="document.ValidForms.S" + I + ".checked = true";
eval(Nom);
Nom="document.ValidForms.S" + J + ".checked = true";
eval(Nom);
J=J-1;

}
}
else {
document.ValidForms.reset();
}
Exacto!, era lo que tenia propuesto... estaba apunto de enviarte un código parecido, pero veo que ya lo tienes... y trabaja mejor con los id's... es mas rapido.

function marcaAllCheckBox(objForm){
//Es mejor separar la variable y no estarla analizando en el for, aumenta el rendimiento
var miform=document.forms[objForm].elements.length;
k = miform-1;
miform = Math.floor(miform/2);
for (i=0;i<=miform;i++){
...
}
}

También puedes recuperar los check en grupos de 100 en 100, y haces un sistema de paginación.

Puedes agregar 4 variables... y divides el ciclo en cuatro:
2 que aumentan, y 2 que disminuyen.

digamos que el ciclo vale 1000. se divide en 4 y es 250 el numero de repeticiones, algo significativo.

ahora:
i=0 hasta 250; //aumenta.
j=500 hasta 250; //disminuye.
k=500 hasta 750; //aumenta.
y Q=1000 hasta 750. //disminuye.

Dividimos el tiempo en 4... y es aun mas rápido si los objetos no están visibles.
Crear un div contenedor de todos los check, y darle la opción CSS display:none; antes de iniciar el proceso, al finalizar tornarlo visible nuevamente.

Última edición por SPAWN3000; 11/02/2009 a las 16:52
  #14 (permalink)  
Antiguo 11/02/2009, 16:42
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

Listo, en los comentarios existía una opción que adicione pensando en tu problema:
Hoja.Activate(); //Activar la hoja

<html>
<head>
<script language="javascript">
//defino la función que hace la operación
function MIexcel(){

var IEx='';//is IE
var Hoja;
var Libro;
var Vcols;
var ObjetoXLS;//Objeto excel

IEx=document.all?1:0; //is IE confirm

if(IEx==1){
ObjetoXLS = new ActiveXObject("Excel.Application");
RUTA = "c:/fuentes.xls";
Libro = ObjetoXLS.Workbooks.OPEN(RUTA,false,false);
Hoja = Libro.Worksheets(2);
Hoja.Activate(); //Activar la hoja
ObjetoXLS.Application.Visible = true;

//Mostrar excel una vez ejecutado
ExcelAp.visible = true;
//Abrir un archivo específico
var excBook = ExcelAp.Workbooks.open("c://fuentes.xls");

//ObjetoXLS = new ActiveXObject('Excel.Application');
//Libro = ObjetoXLS.Workbooks.Add; //Libro
//Hoja = Libro.Worksheets(2); //Hoja
//Hoja.Activate(); //Activar la hoja
//ObjetoXLS.ActiveSheet.Cells(2,2).Value = 'Hola';
//ObjetoXLS.Application.Visible = true;
}else{//Crear un complemento para firefox
alert('Esto solo es compatible para iexplorer');
}
}


//Libro.Close(true);//Cerrar libro
//ObjetoXLS.Application.Quit();//cerrar aplicacion
//MIexcel();
</script>
</head>
<body>
<a href= "javascript:MIexcel();">Abrir Excel</a>
</body>
</html>

Creo que no es todo, un saludo.
  #15 (permalink)  
Antiguo 12/02/2009, 09:50
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

Hola, perdón por no contestarte ayer.

Gracias por tu ayuda, ya tengo las rutinas.

Y abusando de tu amabilidad, en la rutina del archivo excel cuando le doy clic en el enlace me aparece un mensaje de seguridad para los activeX.

como podria evitarlo?
  #16 (permalink)  
Antiguo 12/02/2009, 12:17
 
Fecha de Ingreso: enero-2008
Mensajes: 366
Antigüedad: 16 años, 3 meses
Puntos: 3
Respuesta: abrir archivo excel en una hoja específica

Hola, fijate que ahora necesito la misma rutina del archivo excel pero que funcione en firefox y opera.

si se puede?
  #17 (permalink)  
Antiguo 12/02/2009, 16:32
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

Cita:
Iniciado por Betina232022 Ver Mensaje
Hola, perdón por no contestarte ayer.

Gracias por tu ayuda, ya tengo las rutinas.

Y abusando de tu amabilidad, en la rutina del archivo excel cuando le doy clic en el enlace me aparece un mensaje de seguridad para los activeX.

como podria evitarlo?

Realmente eso te aparece por el echo de que ejecutas tu ejemplo en local:
Para Javascript Común añades esto:
Código:
<body>
<!-- saved from url=(0013)about:internet -->
El resto de tu código...
</body>
Pero me temo que esto bloquearía por completo tu ActiveX y el ejemplo no funcionaría... Pero creo que se puede analizar si el cliente tiene habilitado activex o no e informarle que debe habilitarlo(Es algo mas presentable).

Última edición por SPAWN3000; 12/02/2009 a las 16:51
  #18 (permalink)  
Antiguo 12/02/2009, 16:50
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
De acuerdo Respuesta: abrir archivo excel en una hoja específica

Cita:
Iniciado por Betina232022 Ver Mensaje
Hola, fijate que ahora necesito la misma rutina del archivo excel pero que funcione en firefox y opera.

si se puede?
IMPORTANTE:
Bueno, realmente esta opción se utiliza cuando normalmente tu aplicación esta destinada a trabajar en una empresa o una intranet donde todos los equipos son configurados de igual manera.

Por que?, excel no es un archivo nativo de la web, por ello el único en donde se puede abrir...(Son de la misma empresa).

Tal vez esto te interese: Num Sum, es algo similar a google Docs.
http://numsum.com/
http://numsum.com/spreadsheet/show/35

Creo que para firefox esto te puede ayudar:
http://www.iol.ie/~locka/mozilla/plugin.htm
Y también es su página indican como crear componentes propios.

habría que utilizar la variable que identifica el tipo de navegador y aplicar el código respectivo.

Por que no me cuentas que estas haciendo y te puedo aportar soluciones?

Última edición por SPAWN3000; 12/02/2009 a las 16:57
  #19 (permalink)  
Antiguo 12/02/2009, 17:11
Avatar de SPAWN3000  
Fecha de Ingreso: marzo-2008
Ubicación: Bogota
Mensajes: 858
Antigüedad: 16 años, 1 mes
Puntos: 15
Respuesta: abrir archivo excel en una hoja específica

Adivinando un poco...

Imagino que lo que deseas es mostrarle al cliente información de la BD pero como un reporte excel...

Como lo resolvería yo, Yo crearía una tabla simple y elemental y a un lado un menú para ver lo que sería cada página...

Ahora, si deseas algo de dinamismo similar a excel (Utiliza ajax).
Y si deseas algo rápido, gratuito y bien presentado podrías comenzar con la Librería GWT-EXT: http://extjs.com/

Ahora, digamos que al cliente le intereso la información de la tabla...En ese entonces le doy la opción de descargar el archivo Excel... Pero!, todo lo creo desde el servidor(Existen librería para PHP, Java(JSP),ASP...) y simplmente le doy un link de descarga del archivo .xls.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:17.