viernes, 31 de octubre de 2014

Clase en java para escribir en excel 2010

Depues de importar las librerias necesarias...
Esto le servira como una guia de lo que debe hacer

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package namemaestro;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

/**
 *
 * @author CLIENTE
 */
public class Excel {

    public static void readXLSX(String []valores) throws IOException {
//        Workbook wb = new XSSFWorkbook();
        Workbook archivo = new XSSFWorkbook(new FileInputStream("bastard.xlsx"));
//        String[] nombre = {"Armando", "Hernandez", "Mateu", "xlsx 2010"};
       
        Sheet sheet = archivo.getSheetAt(1);
//        Sheet sheet = archivo.createSheet("Mi hoja");
//        for (int i = 0; i < 10; i++) {
//            Row row = sheet.createRow((short) 6);
////            for (int j = 0; j < nombre.length; j++) {
//                Cell cell = row.createCell((short) 6);
//                cell.setCellValue("1100688005");
//                cell.getStringCellValue();
        //NUMERO DE SOLICITUD
        Row row = sheet.getRow(4);
        row.getCell(14).setCellValue(valores[0]);
       
        // fecha
        row.getCell(16).setCellValue(valores[1]);
       
        // hora
        row.getCell(18).setCellValue(valores[2]);
       
        //nombre del prestador
        Row row1 = sheet.getRow(5);
        row1.getCell(7).setCellValue(valores[3]);
       
        //Codigo
        Row row3 = sheet.getRow(6);
        row3.getCell(7).setCellValue(valores[4]);
       
        //Dirección del Prestador
        row3.getCell(15).setCellValue(valores[5]);
       
        //Telefono
        Row row4 = sheet.getRow(7);
        row4.getCell(1).setCellValue(valores[6]);
       
        //Departamento
        row4.getCell(4).setCellValue(valores[7]);
       
        //Municipio
        row4.getCell(7).setCellValue(valores[8]);
       
        //ENTIDAD A LA QUE SE SOLICITA AUTORIZACIÓN
        Row row5 = sheet.getRow(9);
        row5.getCell(14).setCellValue(valores[9]);
       
        //CODIGO:
        row5.getCell(18).setCellValue(valores[10]);
       
        //1er.  APELLIDO
        Row row6 = sheet.getRow(10);
        row6.getCell(0).setCellValue(valores[11]);
       
        //2er.  APELLIDO
        row6.getCell(1).setCellValue(valores[12]);
       
        //1er. NOMBRE
        row6.getCell(2).setCellValue(valores[13]);
       
        //2er. NOMBRE
        row6.getCell(3).setCellValue(valores[14]);
       
        //Tipo de Documento de Identificación
        if(valores[15].equals("Registro Civil")){
            Row row7 = sheet.getRow(15);
            row7.getCell(1).setCellValue("X");
        }
       
        if(valores[15].equals("Tarjeta de Identidad")){
            Row row7 = sheet.getRow(16);
            row7.getCell(1).setCellValue("X");
        }
       
        if(valores[15].equals("Cédula de Ciudadania")){
            Row row7 = sheet.getRow(17);
            row7.getCell(1).setCellValue("X");
        }
       
        if(valores[15].equals("Cédula de Extranjeria")){
            Row row7 = sheet.getRow(18);
            row7.getCell(1).setCellValue("X");
        }
       
        if(valores[15].equals("Pasaporte")){
            Row row7 = sheet.getRow(15);
            row7.getCell(11).setCellValue("X");
        }
               
        if(valores[15].equals("Adulto sin Identificar")){
            Row row7 = sheet.getRow(16);
            row7.getCell(11).setCellValue("X");
        }
       
        if(valores[15].equals("Menor sin Identificar")){
            Row row7 = sheet.getRow(17);
            row7.getCell(11).setCellValue("X");
        }
       
        //Número de Documento de Identificación
        Row row8 = sheet.getRow(17);
        row8.getCell(23).setCellValue(valores[16]);
       
        //Fecha de Nacimiento:
        Row row9 = sheet.getRow(19);
        row9.getCell(25).setCellValue(valores[17]);
       
        //Dirección de residencia Habitual:
        Row row10 = sheet.getRow(21);
        row10.getCell(10).setCellValue(valores[18]);
       
        //Teléfono:
        row10.getCell(15).setCellValue(valores[19]);
       
        //Departamento
        Row row11 = sheet.getRow(22);
        row11.getCell(5).setCellValue(valores[20]);
       
        //municipio
        row11.getCell(11).setCellValue(valores[21]);
       
        //Teléfono celular
        row11.getCell(19).setCellValue(valores[22]);
       
        //Correo electrónico
        Row row12 = sheet.getRow(23);
        row12.getCell(6).setCellValue(valores[23]);
       
        //Cobertura en Salud
        if(valores[24].equals("Regimen Contributivo")){
              Row row13 = sheet.getRow(25);
              row13.getCell(1).setCellValue("X");
        }
       
        if(valores[24].equals("Regimen Subsidiado-Parcial")){
              Row row13 = sheet.getRow(25);
              row13.getCell(10).setCellValue("X");
        }
       
        if(valores[24].equals("Población Pobre No Sisbenizada")){
              Row row13 = sheet.getRow(25);
              row13.getCell(20).setCellValue("X");
        }
       
        if(valores[24].equals("Planes Adicionales de salud")){
              Row row13 = sheet.getRow(25);
              row13.getCell(31).setCellValue("X");
        }
       
        if(valores[24].equals("Regimen Subsidiado-Total")){
              Row row13 = sheet.getRow(26);
              row13.getCell(1).setCellValue("X");
        }
     
        if(valores[24].equals("Población Pobre No Cubierta")){
              Row row13 = sheet.getRow(26);
              row13.getCell(10).setCellValue("X");
        }
       
        if(valores[24].equals("Desplazado")){
              Row row13 = sheet.getRow(26);
              row13.getCell(20).setCellValue("X");
        }
       
        if(valores[24].equals("OTRO.")){
              Row row13 = sheet.getRow(26);
              row13.getCell(31).setCellValue("X");
              row13.getCell(36).setCellValue(valores[25]);
        }
       
        //origen
        if(valores[27].equals("Enfermedad General")){
              Row row13 = sheet.getRow(30);
              row13.getCell(1).setCellValue("X");
        }
       
         if(valores[27].equals("Accidente de Trabajo")){
              Row row13 = sheet.getRow(30);
              row13.getCell(17).setCellValue("X");
         }
       
         if(valores[27].equals("Evento Catastrófico")){
              Row row13 = sheet.getRow(30);
              row13.getCell(29).setCellValue("X");
         }
       
         if(valores[27].equals("Enfermedad Profesional")){
              Row row13 = sheet.getRow(31);
              row13.getCell(1).setCellValue("X");
         }
       
         if(valores[27].equals("Accidente de Tránsito")){
              Row row13 = sheet.getRow(31);
              row13.getCell(17).setCellValue("X");
         }
       
         //Tipo de servicio
       
         if(valores[28].equals("Posterior a la atencion inicial de urgencias")){
              Row row13 = sheet.getRow(33);
              row13.getCell(1).setCellValue("X");
         }
       
         if(valores[28].equals("Servicios Electivos")){
              Row row13 = sheet.getRow(34);
              row13.getCell(1).setCellValue("X");
         }
       
         if(valores[29].equals("Prioridad de la Atencion")){
              Row row13 = sheet.getRow(33);
              row13.getCell(1).setCellValue("X");
         }
       
         if(valores[29].equals("Prioridad de la Atencion")){
              Row row13 = sheet.getRow(33);
              row13.getCell(1).setCellValue("X");
         }
       
       
       
//        for (Row fila : sheet) {
//            
//             if(i==6){
//                 for (int colum = 0; colum < 7; colum++) {
////                      Cell dato = fila.getCell(colum);
//                     Cell cell = fila.getCell(3);
//                    
////                     HSSFRichTextString miContenido= new HSSFRichTextString("¡¡¡Hola Mundo!!!");
//                     cell.setCellValue("1102578782");
////                     fila.set
////                      if (dato.getCellType() == Cell.CELL_TYPE_STRING) {
////                          System.out.println(dato.getStringCellValue() + " ");
////                      }
//            }
//          }
//             i++;
//         }
////        }
////        }
   
        FileOutputStream fos = new FileOutputStream("bastard.xlsx");
        archivo.write(fos);
        fos.flush();
        fos.close();
    }

    public static void leerXLSX() throws IOException {
        XSSFWorkbook archivo = new XSSFWorkbook(new FileInputStream("bastard.xlsx"));
        int numHoja = 0;
        XSSFSheet hoja = archivo.getSheetAt(numHoja);
        for (Row fila : hoja) {
            for (int colum = 0; colum < 4; colum++) {
                Cell dato = fila.getCell(colum);
                if (dato.getCellType() == Cell.CELL_TYPE_STRING) {
                    System.out.print(dato.getStringCellValue() + "");
                }
            }
            System.out.println();
        }
    }

    public static void main(String[] args) throws IOException {
        System.out.println("Leer archivo xlsx");
//        leerXLSX();
        //leerXLS();
        System.out.println("\nLeer archivo xls");
//        readXLSX();
        System.out.println("\nLeer archivo xls");
    }

    private static void leerXLS() throws IOException {
        Workbook archivo = new HSSFWorkbook(new FileInputStream("bastard.xls"));
        int numHoja = 0;
        Sheet hoja = archivo.getSheetAt(numHoja);
        for (Row fila : hoja) {
            for (int colum = 0; colum < 3; colum++) {
                Cell dato = fila.getCell(colum);
                if (dato.getCellType() == Cell.CELL_TYPE_STRING) {
                    System.out.println(dato.getStringCellValue() + " ");
                }
            }
            System.out.println();
        }
    }

}

martes, 28 de octubre de 2014

Escribiendo views que hacen algo

Cada view es responsable de hacer una de dos cosas: devolver un objeto HttpResponse con el contenido de la página solicitada, o levantar una excepción, por ejemplo Http404. El resto depende de uno.
Una view puede leer registros de una base de datos, o no. Puede usar un sistema de templates como el de Django – o algún otro basado en Python –, o no. Puede generar un archivo PDF, una salida XML, crear un archivo ZIP, cualquier cosa que uno quiera, usando cualquier librería Python que uno quiera.
Todo lo que Django espera es un HttpResponse. O una excepción.
Por ser conveniente, vamos a usar la API de Django para base de datos, que vimos en el Tutorial 1. Aquí tenemos una aproximación a la view index() que muestra las 5 encuestas más recientes en el sistema, separadas por comas, de acuerdo a la fecha de publicación:

from django.http import HttpResponse

from polls.models import Poll

def index(request):
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
    output = ', '.join([p.question for p in latest_poll_list])
    return HttpResponse(output)

Pero tenemos un problema: el diseño de la página está escrito explícitamente en la view. Si uno quisiera cambiar cómo se ve la página, debería editar el código Python. Entonces vamos a usar el sistema de templates de Django para separar el diseño del código Python.

Primero, creamos un directorio polls en el directorio de templates especificado en setting:TEMPLATE_DIRS. Allí creamos un archivo llamado index.html. En ese template escribimos el siguiente código:

from django.http import HttpResponse
from django.template import Context, loader

from polls.models import Poll

def index(request):
    latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
    template = loader.get_template('polls/index.html')
    context = Context({
        'latest_poll_list': latest_poll_list,
    })
    return HttpResponse(template.render(context))

Escribiendo vistas en Django

Ahora permitase agregar un poco mas  de vistas para  responsables/views.py. estas vistas son ligeramente diferentes, porque toman un argumento demas.


def detail(request, question_id):
    return HttpResponse("tu estas viendo una progunta %s." % question_id)

def results(request, question_id):
    response = "tu estas viendo el resultado de un cuestionario%s."
    return HttpResponse(response % question_id)

def vote(request, question_id):
    return HttpResponse("tu vas a votar por esta pregunta %s." % question_id)

Cree estos nuevos vistas en el módulo polls.urls añadiendo la siguientes llamadas a url() 

from django.conf.urls import patterns, url

from polls import views

urlpatterns = patterns('',
    # ex: /polls/
    url(r'^$', views.index, name='index'),
    # ex: /polls/5/
    url(r'^(?P<question_id>\d+)/$', views.detail, name='detail'),
    # ex: /polls/5/results/
    url(r'^(?P<question_id>\d+)/results/$', views.results, name='results'),
    # ex: /polls/5/vote/
    url(r'^(?P<question_id>\d+)/vote/$', views.vote, name='vote'),
)

Eche un vistazo en su navegador, en “/polls/34/”. se va ejecutar el metodo detail() y mostrara cualquier ID que usted haya provisto en el URL. Intente con “/polls/34/results/” y “/polls/34/vote/”  esto nos debería mostrar los placeholder que definimos para las páginas de resultados y para votar.

Cuando alguien pide por una página de nuestro sitio – supongamos “/polls/34/”, Django va a cargar el módulo mysite.urls, al que apunta el setting ROOT_URLCONF. Encuentra la variableurlpatterns y recorre las expresiones regulares en orden. Las llamadas a include()simplemente referencian otros URLconf. Notar que las expresiones regulares para los include()no tienen un $ (caracter que indica el fin de string en un patrón), sino que terminan en una barra. Cada vez que Django encuentra un include(), recorta la parte de la URL que coincide hasta ese punto y envía el string restante al URLconf relacionado para continuar el proceso.

La idea detrás de include() es hacer fácil tener URLs plug-and-play. Como polls tiene su propio URLconf (polls/urls.py), las URLs de la app se pueden poner bajo “/polls/”, o bajo “/fun_polls/”, o bajo “/content/polls/”, o cualquier otro camino, y la app seguirá funcionando.

Esto es lo que pasa si un usuario va a “/polls/34/” en este sistema:

  • Django encontrará coincidencia en '^polls/'
  • Entonces, Django va a recortar el texto que coincide ("polls/") y enviar el texto restante –"34/" – al URLconf ‘polls.urls’ para seguir el proceso, donde coincidirá con r'^(?P<poll_id>\d+)/$', resultando en una llamada a la view detail() de la forma:
detail(request=<HttpRequest object>, poll_id='34')
La parte poll_id='34' surge de (?P<poll_id>\d+). Usando paréntesis alrededor de un patrón se “captura” el texto que coincida con el patrón y ese valor se pasas como argumento a la función view;?P<poll_id> define el nombre que se usará para identificar la coincidencia; y \d+ es una expresión regular para buscar una secuencia de dígitos (i.e., un número).
Como los patrones de URL son expresiones regulares, no hay realmente un límite de lo que se puede hacer con ellos. Y no hay necesidad de agregar cosas como .html – a menos que uno quisiera, en cuyo caso nos quedaría algo como:
(r'^polls/latest\.html$', 'polls.views.index'),
Pero no hagan esto. No tiene sentido.

Configurar todo para empezar a trabajar en Django desde windos

Antes debe instalar python 2.7 https://www.python.org/downloads/
despues esto http://www.activestate.com/activepython

El controlador de python - postgresql
Mire cual le combiene mas, si su computadora es de 64 o 32 bits
http://www.stickpeople.com/projects/python/win-psycopg/

despues abrimos cmd y ejecutamos

pip install Django==1.7.1

viernes, 24 de octubre de 2014

url() argument: name

El nombramiento de su URL permite referirse a ella de forma inequívoca de otras partes de Django especialmente plantillas. Esta potente función le permite realizar cambios globales en los patrones de URL de su proyecto, modificado tan solo un archivo

url() argument: kwargs

Los argumentos de claves arbitrarias se pueden pasar en un diccionario a la vista destino, No vamos a utilizar esta característica de Django en el tutorial.

url() argument: view

Cuando Django encuentra una coincidencia entre expresiones regulares, Django llama la vista de la funcion espesificada con un objeto HttpRequest como primer argumento y los valores "capturados" de la expresión regular como otros argumentos. Si la expresión regular utiliza capturas simples, los valores se pasan como argumentos posicionales. si utiliza capturas con nombre los valores se pasan como argumentos de palabra clave. Vamos a dar un ejemplo de esto en un momento.

jueves, 23 de octubre de 2014

La funcion url() en Django

La funcion url se le pueden pasar 4 argumentos, 2 obligatorios: regex y view, y dos opcionales: kwargs y name. en este punto vale la pena saber para que son esos argumentos

El argumento regex:
El argumento regex es regularmente utilizado como una forma abreviada de "expresion regular", que es 
una sintaxis para comparar patrones de cadenas, o en este caso, patrones de urls. Django comienza con
la primera expresion regular hasta llegar al final de la lista, comparando la URL solicitada con cada
expresión regular hasta que encuentra uno que coincida.

Tenga en cuenta que estas expresiones regulares no buscan parametros GET ni POST, o el nombre del 
dominio. por ejemplo en una solicitud para http://www.example.com/myapp/ la URLconf buscara myapp/. En 
una peticion a http://www.example.com/myapp/?page=3, la URLconf tambien buscar a  myapp/.

Si tu necesitas ayuda con las expresiones regulares, entre a wickipedia y tambien lea esto. O’Reilly book “Mastering Regular Expressions” por Jeffrey Friedl es fantastico. En la practica usted no necesita ser un experto en expresiones regulares tan sólo se necesita saber cómo capturar patrones simples. En efecto, De hecho, expresiones regulares complejas pueden tener malos resultados de búsqueda así que probablemente no se debe confiar en el poder de las expresiones regulares.

Por último, una nota de rendimiento: estas expresiones regulares son compilados la primera vez que se carga el módulo URLconf. Son súper rápido (siempre que las búsquedas no son demasiado complejos como se señaló anteriormente).

mañana seguiremos hablando de los otros parametros