Streams y Buffered en java Escucha este post

0 comentarios

Una de las prioridades de cualquier programa es el intercambio de información, ya sea desde la memoria, desde un disco duro o memoria, en algún lugar en la red o incluso desde otro programa. Para dicho propósito se abre un Stream . Estas clases se alojan en el paquete java.io. Para el usoi de estas clases es necesario usar una excepción

Para la lectura de un Stream desde un archivo tenemos la clase FileInputStream cuyo metodo de lectura es read() y ciere es close. Cuando read devuelve -1 significa que a leído el ultmo byte de lo contrario devuelve dicho byte

import java.io.*;
public class InputStremDemo {
public static void main(String[] args) {
try { //excepsion
FileInputStream archivo = new FileInputStream("c:\\1.txt"); // instacia de la clase y constructor
boolean eof = false;//fin del archive negativo
int contador = 0;
while (!eof){//leer hasta eof sea true
int entrada = archivo.read();//leer
System.out.print(entrada+" ");
if (entrada==-1)// si la lectura devuelve -1 eof es verdadero
eof = true;
else
contador++;
}
archivo.close();
System.out.println("\n Bytes leidos "+contador);
} catch (IOException ex) {

System.out.println(ex.toString);
}
}
}

Para la escritura de datos es algo similar usamos la clase OutputStream y escribimos con el método write

import java.io.*;

public class FileOutputStreamDemo {
public static void main(String[] args) {
//bytes a escribir
int [] datos = {71,73,70,56,57,97,13,0,12,0,145,0,0,255,255,255,255,255,0,0,0,0,0,0,0,44,0,0,0,0,13,0,12,0,0,2,38,132,45,121,11,25,175,150,120,20,162,132,51,110,106,239,22,8,160,56,137,96,72,77,33,130,86,37,219,182,230,137,89,82,181,50,220,103,20,0,29};

try {//exception
FileOutputStream archivo = new FileOutputStream("pic.gif");// instancia y clase
for (int i=0;i
archivo.write(datos[i]);// escribir el item en cuestion
}
archivo.close();//cerramos
}catch (IOException e){// en caso de error
System.out.println("Error--"+e.toString());
}
}
}

Ahora la cuestión del buffered. Como digo alguien por ahí: “En la cuestión de comunicaciones la velosidad es lo importante”.Para esto usamos un bufered . Es tan simple como después de instanciar una clase pasarla por un buffered y luego leer o escribir desde dicho bufferred.

package streams;

import java.io.*;

public class EjemploBuffer {
public static void main(String[] args) {
Arg miArg= new Arg(0,100);
miArg.escribirStream();
miArg.leerStream();

}
}
class Arg{//constructor
int inicio, fin;
Arg(int st, int f){
this.inicio= st;
this.fin= f;
}

boolean escribirStream(){
try {
FileOutputStream archivo = new FileOutputStream("numeros.dat"); //instancia y constructor
BufferedOutputStream buff = new BufferedOutputStream(archivo);//pasamos el objeto por un buffered
for (int salida= inicio ;salida<=fin;salida++){ buff.write(salida);//escribimos desde el buffered
System.out.println(" "+salida);
}
buff.close();
return true;

} catch (IOException ex) {
return false;
}
}

boolean leerStream(){
try{
FileInputStream archivo = new FileInputStream("numeros.dat");
BufferedInputStream buff = new BufferedInputStream(archivo);
int in =0;
do {
in=buff.read();
if(in != -1 )
System.out.println(" "+in);
}while (in !=-1);
buff.close();
return true;
}catch (IOException ex){
Logger.getLogger(Arg.class.getName()).log(Level.SEVERE, null, ex);
return false;
}
}
}


Ocultar y mostrar hojas con vba en excel Escucha este post

0 comentarios

Hola se que había prometido una solución al problema de subir varias imagenes en un documento de excel pero la verdad que no lo he podido resolver .La verdad que la semana fue interesante ya que aprendí como se usa vba. Ya sbia algo de basic pero no como funcionaba este script.Pero les tengo un tema que podría ayudar al momento de hacer formularios en excel.


Esto es ocultar hojas de excel para evitar su modificación o para que el usuario los llene en un orden especifico.
la propiedad es muy sencilla

Sheets("nombre de la hoja")).Visible = True

Pero la gracia no es esa si no controlar las hojas
para eso yo use hice un metodo para ocultar las hojas menos la actual

Public Sub ocultarTodoMenosEste()
'oculta todas las ojas menos la actual
hojaActual = ActiveSheet.Name
Set wsHoja = Worksheets
i = 0
For Each wsHoja In ActiveWorkbook.Worksheets
' guardamos un array con todos los nombres de las hojas para poder viajar entre ellas
nombreHojas(i) = wsHoja.Name
i = i + 1
If wsHoja.Visible = True And wsHoja.Name <> hojaActual Then
wsHoja.Visible = False
End If
Next wsHoja
End Sub

Lo que hace es muy simple
pone en una variable el nombre de la hoja actual luego
recorre todas las hojas de un libro por un for each
si son visibles o no tienen el nombre de la hoja actal
las cambia a invisibles .Visible = False


ahora para que el usuario pueda ver las hojas que tienen que estar al principio del documento y las que no al final

con un Sub auto_Open()
pueden controlar que se oculte desde el principio
ademas de ocultar menus que el usuario podria usar para modificar celdas

Sub auto_Open()
' funcion de inicio de rutina
'oculta la cinta de opciones y la barra deformulas
'seleciona la hoja caratula y oculta todas menos la selecionada
Application.ScreenUpdating = False
Sheets("caratula").Visible = True
Sheets("caratula").Select
numeroHojaActual = 0
Application.DisplayFullScreen = True
Application.DisplayFormulaBar = False
ActiveWindow.DisplayHeadings = False
ActiveWindow.DisplayGridlines = False
' llamamos al sub antes descrito
ocultarTodoMenosEste
Application.ScreenUpdating = True
End Sub
ahora para avanzar entre las hojas

necesitamos saber el nombre de cada una y en cual se encuentra
ara esto hacemos un array
Public nombreHojas(12) As String
Public numeroHojaActual



nombreHojas lo llenamos al ocultar las hojas
si se dan cuenta
y numeroHojaActual lo hacemos igual a cero cuando empezamos todo
todo esta en losprocedimientos anteriores
les adjunto un documento para que lo revisen aqui y aqui


espero esto les sirva







insertar imágenes en excel desde vba Escucha este post

3 comentarios


Toda esta semana me la pase trasnochandome con café y progrmando unas lineas que mi amiga me pidio(gracias ñoña).Bueno también fue interesante de las tantas cosas que encontré fue como subir imágenes desde vba.
la función es :
ActiveSheet.Pictures.Insert()

que inserta una imagen , como argumento usa un String para la imagen pero la verdad que seria muy incomodo tener que escribir una direccion en una celda para que tomara como argumento
asi que tube que encontrar una forma de sacar un explorador de archivos desde vba, pense que tendria que hacerlo desde los forms de vb pero por suerte di con esta otra joyita:

FileDialog
Veamos cono funcionan esta función y este objeto

'modulo para las fotos
Function SelecionarArchivos()
'declaramos fd como FileDialog y lo hacemos del tipo selector de archivos
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
'escojer un unico archivo de tipo imagen
.AllowMultiSelect = False
.Filters.Add "Imagenes", "*.bmp;*.jpg;*.gif;*.ico;*.wmf", 1
.FilterIndex = 1
' ejecutar el cuadro si ceduelve verdadero llamar a cargar imagen
If .Show = -1 Then
SelecionarArchivos = .SelectedItems(1)
' si escojemos AllowMultiSelect = true para escojer multiples archivos
' y queremos dar con cada archivo podemos usarun each para cada valor de la collecion
Else
MsgBox "No se ha seleccionado ningún archivo", vbExclamation
End If
End With
Set fd = Nothing 'limpiar memoria
End Function




Sub subirImagenALibro(imagenAImportar As String)
'importar una imagen
ActiveSheet.Pictures.Insert(imagenAImportar).Select
'redimencionar imagenes para que no sean muy grandes
' guardamos la relación de ratio
ratio = Selection.ShapeRange.Height / Selection.ShapeRange.Width
' con la imagen seleccionada aun cambiamos sus dimensiones
Selection.ShapeRange.Height = 220
Selection.ShapeRange.Width = 220 / ratio
'posicionar en la celd activa encontrar esto también fue algo interesante
Selection.ShapeRange.Top = ActiveCell.Top
Selection.ShapeRange.Left =ActiveCell.Left
End Sub

ahora solo tenemos que escribir


Public Sub agregarImagen()
Arch = SelecionarArchivos
subirImagenALibro (Arch)
End Sub

donde seleccionamos un archivo y le pasamos el string con la direccion a subirImagenALibro()

Espero que les emocione las posibilidades como a mi


Ahora la cuestión es que si se suben muchos archivos el archivo excel va a pesar mucho por lo cual no es muy conveniente por lo que creare un archivo aparte que sera el que se mande...
esperen la próxima entrada para ver como lo hago.

Les dejo un link de lo actual en mi pagina y en mi live


Espero que les emocione las posibilidades como a mi


Hola bienvenidos Escucha este post

0 comentarios
Hola que tal , mi nombre es Aacini y vivo en el barrio bravo de netza.
Este blog tiene como objetivo hacer apuntes de todos mis códigos y al mismo tiempo dar una ayuda a todas los demas que busquen ayuda como yo. Así mismo con esto pretendo rectificar mis ideas y ponerlas al fuego para purificarlas, por lo cual agradezco los comentarios sobre todo las criticas fuertes siempre y cuando den sus razones .