Foros del Web » Programación para mayores de 30 ;) » Java »

Separar Hojas de Libro Excel en archivos separados

Estas en el tema de Separar Hojas de Libro Excel en archivos separados en el foro de Java en Foros del Web. Hola Mi caso es el siguiente. (Usando POI) Tengo varios archivos excel, por lo menos 100, y cada uno tiene en promedio 10 hojas, a ...
  #1 (permalink)  
Antiguo 22/06/2010, 13:18
 
Fecha de Ingreso: junio-2010
Mensajes: 1
Antigüedad: 13 años, 10 meses
Puntos: 0
Separar Hojas de Libro Excel en archivos separados

Hola

Mi caso es el siguiente. (Usando POI)

Tengo varios archivos excel, por lo menos 100, y cada uno tiene en promedio 10 hojas, a partir de un archivo excel con 10 hojas debe crear 10 archivos que contengan sola una hoja.

Hasta el momento tengo el metodo que recorre el libro.

Código:
private void listSheets(HSSFWorkbook wb) {
		HSSFSheet sheet = null;
		Cell cell = null;
		Row row = null;
		String sheetName = "";
		HSSFWorkbook wbAux = null;
		int nWorkBookSheets = wb.getNumberOfSheets();
		for (int i = 0; i < nWorkBookSheets; i++) {
			wbAux = wb;
			sheet = wb.getSheetAt(i);
			sheetName = sheet.getSheetName();
                        metodoQueCreaNuevoLibro(sheet);
		}
	}


metodoQueCreaNuevoLibro(HSSFSheet hoja){

                HSSFWorkbook wb = new HSSFWorkbook();
		HSSFSheet h = wb.createSheet();
		h = hoja;

                //codigo que genera el xls

}
aqui se debe crear un nuevo HSSFWorkbook y se le pege, adjunte o añada la hoja.

Pero al hacer esto no asigna la hoja al nuevo libro.

Por favor espero una iluminación.

Última edición por pedrodonte; 22/06/2010 a las 14:20 Razón: Especificar la API utilizada
  #2 (permalink)  
Antiguo 19/08/2010, 16:04
Avatar de thelionab  
Fecha de Ingreso: agosto-2010
Ubicación: La Ceiba, Alajuela, CR
Mensajes: 51
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: Separar Hojas de Libro Excel en archivos separados

El año pasado tenía la misma necesidad, de tomar un libro de excel y obtener un archivo por cada hoja.
Luego de investigar en varios foros y obtener códigos, pude depurar el código para hacerlo lo más sencillo posible (a mi modo de ver)

espero que le sirva.

Código:
Sub GenerarArchivos()
' Esta macro abre un cuadro de dialogo para buscar un archivo de excel
' una vez seleccionado, convierte cada hoja en un archivo separado

' Macro creada 28/04/2009 por Abiel.Deleon
    MiFile = Application.GetOpenFilename("Archivos de Excel,*.xl*")  'pide abrir un archivo xls
    If MiFile = False Then Exit Sub                 'si CANCEL entonces no hace nada
    
    Workbooks.Open Filename:=MiFile, ReadOnly:=True 'abre el archivo como solo lectura
    Application.ScreenUpdating = False              'oculta el proceso
    
    With ActiveWorkbook
        For Each Hoja In .Sheets                    'para cada hoja va a crear una copia y guardar
            Hoja.Copy
            NewFile = .Path & "\" & Hoja.Name & ".xls"    'guarda usando el prefijo
            'se usa la forma <ruta> \ <nombre> . <extension>
            'si existe el archivo, lo sobreescribe
            If Dir(NewFile, vbArchive) <> "" Then Kill NewFile
            ActiveWorkbook.SaveAs Filename:=NewFile 'comando para guardar la hoja
            ActiveWorkbook.Close SaveChanges:=False 'despues de crear la hoja, la cierra
        Next Hoja
        .Close SaveChanges:=False                   'cierra el archivo abierto
    End With
    Application.ScreenUpdating = True
End Sub

ATENCION: los archivos de excel pueden dar error al abrirse dependiendo de la versión desde la que se generan. Por ejemplo si desde Excel 2007 usted guarda el archivo como .xls, tenga cuidado con este detalle.

Etiquetas: excel, poi
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 13:31.