Mostrando entradas con la etiqueta microsoft. Mostrar todas las entradas
Mostrando entradas con la etiqueta microsoft. Mostrar todas las entradas

JAVA: Conectar con una Base de Datos Access con JDBC

  

   En este tutorial vamos a ver como conectarnos a una base de datos de Microsoft Access mediante el driver JDBC en Java. Yo he utilizado Netbeans, pero se hace igual en Eclipse.

   El driver JDBC/ODBC está obseleto a partir de la versión 8 de java. Tuve muchos problemas al hacer una aplicación que se tenia que conectar con una base de datos antigua hecha en Microsoft Access. Al final lo conseguí con unos drivers hechos en java, en definitiva unas librerias. Se llama UCanAccess y la podéis descargar AQUÍ.

   Tenemos que elegir la opción que pone .bin de la versión más reciente:


   Cuando las descargamos y descomprimimos cogemos todos los .js (uno está en la raíz principal y los otros en la carpeta lib) y los ponemos todos juntos en una carpeta. Simplemente por comodidad a la hora de agregarlos al proyecto. También guardo la carpeta en la ruta donde están mis proyectos para tenerla siempre a mano, porque si luego se cambia de sitio habrá que volverlas a añadir al proyecto porque no encuentra la ruta.



   Ahora nos creamos un proyecto nuevo en Netbeans (File/New Project/Java/Java Application) o en Eclipse (File/New/Java project).

   En Netbeans nos aparece una carpeta Libraries y le damos botón derecho y pinchamos en Add JAR/Folder.


 
   Seleccionamos nuestra carpeta donde nos hemos descargado y copiado las librerías anteriores, marcamos todas y le damos a Abrir.



    En Eclipse es en botón derecho en el proyecto, Properties y las añadimos en esta pantalla:



  Con esto ya tenemos nuestras librerias en el proyecto. Ahora sólo queda crear el código para conectarnos. He realizado un pequeño proyecto donde tengo implementada la clase para la conexión. En el video podéis ver como se hace esa conexión. Os podéis descargar el proyecto en esta DIRECCIÓN.

   Aparecerán tres carpetas, una con las librerías, otra con la BD Access y otra con el proyecto.

   Os dejo una de las clases del proyecto, que es la clase de conexión a la base de datos. El resto como os digo lo podéis ver en el video y en los archivos que he subido.

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.JOptionPane;



/**

 *

 * @author Sandra

 */

public class connectBD {

   

    private Connection conexion;

    private Statement sentencia;

   

    private final String controlador;

    private final String nombre_bd;

    private final String usuarioBD;

    private final String passwordBD;

   

   

    public connectBD(){

        this.controlador="sun.jdbc.odbc.JdbcOdbcDriver";

        this.nombre_bd="C:\\Users\\Sandra\\Documents\\NetBeansProjects\\BD_Access\\Prueba_Java.accdb";

        this.usuarioBD="";

        this.passwordBD="";

       

    }

   

    public boolean EstablecerConexion() throws SQLException{

       

      

        try{

            conexion=DriverManager.getConnection("jdbc:ucanaccess://"+this.nombre_bd,this.usuarioBD,this.passwordBD);

        }catch (SQLException e){

             JOptionPane.showMessageDialog(null,"Error al realizar la conexion "+e);

             return false;

        }

       

        try {

            this.sentencia=this.conexion.createStatement(

            ResultSet.TYPE_SCROLL_INSENSITIVE,

                    ResultSet.CONCUR_READ_ONLY);

        }

        catch (SQLException e) {

            JOptionPane.showMessageDialog(null,"Error al crear el objeto sentencia "+e);

            return false;

        }

       

        return true;

       

    }

   

    public ResultSet EjecutarSentencia( String sql) throws SQLException{

       

        ResultSet rs;

        rs = this.sentencia.executeQuery(sql);

       

       

        return rs;

    }

}
Sandra Campos

Comparte si te gusta

Crear documentos word (doc, docx) con PHPWord y TemplateProcesor





   Por necesidades en mi trabajo he tenido que recurrir a una librería para crear documentos word. Esta librería se llama PHPWord y está escrita en php. La versión actual soporta Microsoft Office Open XML (OOXML or OpenXML), OASIS Open Document Format for Office Applications (OpenDocument or ODF), Rich Text Format (RTF), HTML, y PDF.

   Podéis descargarla del repositorio en GiHub, y los requisitos mínimos son:
  • PHP 5.3 superior.
  • Extensiones zip y xml parser.
  • Opcionales: XMLWriter (para .docx y .odt), XSL (estilos plantillas), GD (para añadir imágenes) y dompdf (para PDF).

INSTALACIÓN

   En el repositorio viene como instalar la libreria pero os lo pongo aqui también.
   Recomiendan instalarla a través de composer, incluyendo un pequeño código en el fichero composer.json:

{
    "require": {
       "phpoffice/phpword": "dev-master"
    }
} 

   La otra forma es descargarse todos los ficheros de la libreria y ponerlos en nuestro proyecto. Después en nuestro fichero .php tenemos que registrar el autoloader. Esto se hace poniendo las siguientes líneas en nuestro fichero:

require_once 'carpetaPHPWord/src/PhpWord/Autoloader.php';
\PhpOffice\PhpWord\Autoloader::register();

CREAR DOCUMENTO

   En esta primera parte vamos a crear un nuevo documento word con PHPWord. Después de incluir las líneas anteriores en nuestro fichero .php encargado de generar el documento, tenemos que incluir lo siguiente:

use PhpOffice\PhpWord\PhpWord;
use PhpOffice\PhpWord\Style\Font;

   A continuación hacemos la instancia de la clase. La podemos hacer de dos formas:

$documento = new PhpWord();

   o

$documento = new \PhpOffice\PhpWord\PhpWord();

   Ahora ya podemos añadir elementos a nuestro documento. Tenemos que crear una sección, que luego se añadirá al documento.


$seccion = $documento->addSection();

   A la sección podemos añadirle los elementos que queramos.

- Texto:

// Texto sin formato
$seccion->addText(
 htmlspecialchars(
  'Primer texto - Texto sin formato'
 )
);

// Texto con formato
$seccion->addText(
htmlspecialchars(
'Segundo texto con formato'
),
array('name' => 'Arial', 'size' => '12', 'bold' => 'true')
);


// Texto con fuente personalizada
$fuente_propia = 'mifuente';
$documento->addFontStyle($fuente_propia,
array('name' => 'Arial', 'size' => '14', 'bold' => 'true', 'color' => '5882FA')
);

$seccion->addText(
htmlspecialchars(
'Tercer texto con formato'
),
$fuente_propia
);

// Texto con objetos
$fuente = new Font();
$fuente->setBold(true);
$fuente->setName('Tahoma');
$fuente->setSize(16);
$fuente->setColor('9F81F7');
$texto = $seccion->addText(htmlspecialchars(
'Cuarto texto con formato'
));
$texto->setFontStyle($fuente);

-Tabla:

// Tabla personalizada
$estilo_tabla = array(
'borderColor' => 'F2F2F2',
'borderSize' => '5',
'cellMargin' => '20',
'bgColor' => '088A68',
);

$primera_fila = array('bgColor' => 'F2F2F2');
$documento->addTableStyle('mitabla',$estilo_tabla, $primera_fila);
$tabla = $seccion->addTable('mitabla');

for ($row = 1; $row <= 8; $row++) {
    $tabla->addRow();
    for ($cell = 1; $cell <= 3; $cell++) {
    if($row ==1)
    $tabla->addCell(200)->addText(htmlspecialchars('primera'));
    else
        $tabla->addCell(200)->addText(htmlspecialchars('celda'));
    }
}

-Salto:

$seccion->addTextBreak(1);

-Imagenes:

$seccion->addImage(
    'imagen.jpg',
    array(
        'width' => 600,
        'height' => 400,
        'wrappingStyle' => 'behind'
    )
);

   Estos son solo dos ejemplos. Podemos dar estilos, pie de página y muchas cosas más. Podéis consultar el siguiente enlace


   Por último para guardar el documento en docx, pdf o html lo hacemos de la siguiente forma:

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($documento, 'Word2007');
$objWriter->save('Documento1.docx');

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($documento, 'ODText');
$objWriter->save('Documento1.odt');

$objWriter = \PhpOffice\PhpWord\IOFactory::createWriter($documento, 'HTML');
$objWriter->save('Documento1.html');

LEER DOCUMENTO (PLANTILLA) Y ASIGNAR TEXTO.

   En este apartado tenemos que tener una plantilla en word. En esta plantilla tenemos que poner los valores que queramos que sean sustituidos de una determinada forma:

${valor}


   Cuando tengamos la plantilla hecha, para leerla y sustituir los datos lo haremos de la siguiente manera en php:

        $templateWord = new TemplateProcessor('plantilla.docx');

        // --- Variables
       
        $nombre = "Sandra S.L.";
        $direccion = "Mi dirección";
        $municipio = "Mrd";
        $provincia = "Bdj";
        $cp = "02541";
        $telefono = "24536784";

        // --- Asignamos valores
        $templateWord->setValue('nombre_empresa', $nombre);
        $templateWord->setValue('direccion_empresa', $direccion);
        $templateWord->setValue('municipio_empresa', $municipio);
        $templateWord->setValue('provincia_empresa', $provincia);
        $templateWord->setValue('cp_empresa', $cp);
        $templateWord->setValue('telefono_empresa', $telefono);

        // --- Guardamos el documento
        $templateWord->saveAs('Documento02.docx');
       
   También podemos poner para que se descargue directamente (también válido para el apartado anterior):

        header("Content-Disposition: attachment; filename=Documento02.docx; charset=iso-8859-1");
        echo file_get_contents('Documento02.docx');


   Podéis descargaros el PROYECTO para ver los ejemplos.