miércoles 24 de agosto de 2011

Export to ods for C# (mono)

He conseguido exportar un query a una hoja de calculo de tipo ods, espero que sea de ayuda

He tenido que recompilar AODL ya que para linux no tenia soporte.

using System;
using SmartXLS; // libreria para crear archivo xls es de paga
using Npgsql;
using Gtk;
using Glade;
// libreria creada con el proyecto AODL 1.4 que usa
using AODL;
using AODL.Document.SpreadsheetDocuments;
using AODL.Document.Content;
using AODL.Document.Content.Tables;
using AODL.Document;
using AODL.Package;
using AODL.Document.Collections;
using NUnit.Framework;

namespace osiris
{
public class class_traslate_spreadsheet
{
string connectionString;
string nombrebd;
class_conexion conexion_a_DB = new class_conexion();

//Declaracion de ventana de error
protected Gtk.Window MyWinError;
protected Gtk.Window MyWin;

public class_traslate_spreadsheet (string numeroatencion_)
{
int files_field = 0;
string[] args_names_field = {"foliodeservicio","descripcion_producto","idproducto","cantidadaplicada","preciounitario","ppcantidad"};
string[] args_type_field = {"float","string","string","float","float","float"};
connectionString = conexion_a_DB._url_servidor+conexion_a_DB._port_DB+conexion_a_DB._usuario_DB+conexion_a_DB._passwrd_user_DB;
nombrebd = conexion_a_DB._nombrebd;
//Create new spreadsheet open document (.ods)
AODL.Document.SpreadsheetDocuments.SpreadsheetDocument spreadsheetDocument = new AODL.Document.SpreadsheetDocuments.SpreadsheetDocument();
spreadsheetDocument.New();
//Create a new table
AODL.Document.Content.Tables.Table table = new AODL.Document.Content.Tables.Table(spreadsheetDocument, "hoja1", "tablefirst");
NpgsqlConnection conexion;
conexion = new NpgsqlConnection (connectionString+nombrebd);
// Verifica que la base de datos este conectada
try{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
for (int colum_field = 0; colum_field < args_names_field.Length; colum_field++){
AODL.Document.Content.Tables.Cell cell = table.CreateCell ();
//cell.OfficeValueType ="float";
AODL.Document.Content.Text.Paragraph paragraph = new AODL.Document.Content.Text.Paragraph(spreadsheetDocument);
string text = lector[(string) args_names_field[ colum_field ]].ToString().Trim();
paragraph.TextContent.Add(new AODL.Document.Content.Text.SimpleText(spreadsheetDocument,text));
cell.Content.Add(paragraph);
cell.OfficeValueType = (string) args_type_field [colum_field];
cell.OfficeValue = text;
table.InsertCellAt (files_field, colum_field, cell);
}
files_field++;
}
conexion.Close();
//Insert table into the spreadsheet document
spreadsheetDocument.TableCollection.Add(table);
spreadsheetDocument.SaveTo("export.ods");
// open the document automatic
System.Diagnostics.Process.Start("export.ods");
}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}


/*
// Usando libreria SmartXLS
WorkBook book = new WorkBook();

try{
//Sets the number of worksheets in this workbook
book.NumSheets = 2;
// set sheet names
book.setSheetName(0, "hoja1"); // renombrando la pestaña
book.setSheetName(1, "hoja2"); // renombrando la pestaña
book.Sheet = 0;
// book.setText(Fila, columna , "texto");
book.setText(0, 0, "foliodeservicio");
book.setText(0, 1, "descripcion_producto");
book.setText(0, 2, "idproducto");
book.setText(0, 3, "cantidadaplicada");
book.setText(0, 4, "preciounitario");
book.setText(0, 5, "ppcantidad");
book.setText(0, 6, "fechcreacion");
book.setText(0, 7, "descripcion_admisiones");
book.setText(0, 8, "idtipoadmision");
book.setText(0, 8, "descripcion_grupo_producto");
book.setText(0, 8, "aplicar_iva");

NpgsqlConnection conexion;
conexion = new NpgsqlConnection (connectionString+nombrebd);
// Verifica que la base de datos este conectada
try{
conexion.Open ();
NpgsqlCommand comando;
comando = conexion.CreateCommand ();
comando.CommandText = "SELECT osiris_erp_cobros_deta.folio_de_servicio AS foliodeservicio,descripcion_producto,to_char(osiris_erp_cobros_deta.id_producto,'999999999999') AS idproducto, "+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada,'99999.99') AS cantidadaplicada,to_char(osiris_erp_cobros_deta.precio_producto,'99999999.99') AS preciounitario,"+
"to_char(osiris_erp_cobros_deta.cantidad_aplicada * osiris_erp_cobros_deta.precio_producto,'99999999.99') AS ppcantidad,"+
"to_char(osiris_erp_cobros_deta.fechahora_creacion,'dd-MM-yyyy HH24:mi:ss') AS fechcreacion, osiris_his_tipo_admisiones.descripcion_admisiones,"+
"osiris_erp_cobros_deta.id_tipo_admisiones AS idtipoadmision,descripcion_grupo_producto,osiris_productos.aplicar_iva," +
"to_char(osiris_erp_cobros_deta.id_secuencia,'9999999999') AS secuencia " +
"FROM osiris_erp_cobros_deta,osiris_productos,osiris_his_tipo_admisiones,osiris_grupo_producto " +
"WHERE osiris_erp_cobros_deta.id_producto = osiris_productos.id_producto " +
"AND osiris_erp_cobros_deta.id_tipo_admisiones = osiris_his_tipo_admisiones.id_tipo_admisiones " +
"AND osiris_productos.id_grupo_producto = osiris_grupo_producto.id_grupo_producto " +
"AND osiris_erp_cobros_deta.eliminado = false " +
"AND osiris_erp_cobros_deta.folio_de_servicio IN('"+numeroatencion_+"') " +
"ORDER BY to_char(osiris_erp_cobros_deta.fechahora_creacion,'yyyy-MM-dd HH24:mm:ss'),osiris_erp_cobros_deta.id_tipo_admisiones ASC," +
"osiris_productos.id_grupo_producto;";
comando.ExecuteNonQuery(); comando.Dispose();
//Console.WriteLine(comando.CommandText);
NpgsqlDataReader lector = comando.ExecuteReader ();
while (lector.Read()){
book.setNumber(number_file, 0, int.Parse(numeroatencion_));
book.setText(number_file, 1, (string) lector["descripcion_producto"]);
number_file++;
}
conexion.Close();
book.write("export.xls");

System.Diagnostics.Process.Start("export.xls");


}catch(NpgsqlException ex){
MessageDialog msgBoxError = new MessageDialog (MyWinError,DialogFlags.DestroyWithParent,
MessageType.Error,
ButtonsType.Close,"PostgresSQL error: {0}",ex.Message);
msgBoxError.Run (); msgBoxError.Destroy();
}


}catch (System.Exception ex){
Console.Error.WriteLine(ex);
}
*/
}
}
}

lunes 13 de septiembre de 2010

Manual de Instalacion del Sistema Hospitalario OSIRIS

Hola Amigos

le dejo el link del manual de instalacion del sistemas para GNU/Linux

http://www.scribd.com/doc/37039589/Manual-Instalacion-Sistema-Hospitalario-OSIRIS

Este manual esta un poco descontinuado, se hicieron modificaciones para no usar la libreria gnomeprint.

Se agregaron mas campos y tablas a la base de datos

cualquier duda para solicitar la base de datos envienme un correo a arcangeldoc@gmail.com

Saludos

sábado 8 de mayo de 2010

Nuevas Mejoras

He estado trabajando arduamente en este sistema se han corregido y mejorado bastantes bugs, asi mismo se han reducido los scrip y mejorando las classes de objetos.

He incorporado una agenda que permite realizar citas medicas y de quirofano esto nos pemitira tener una herramienta mas a nuestro sistema.

Se realizan muchas mejoras para poder enlasar en forma eficiente el expediente elecctronicono.

Estere postenado nuevas mejoras


Saludos

miércoles 9 de diciembre de 2009

Problemas con libreria Gnome Print

Hola a todos

En un trabajo titanico se ha logrado de traspasar OSIRIS a Windows me tope que los reportes no funcionan ya que Gnome Print no esta portado a Windows, asi que me he visto a traspasar todos a GTK# Print, aunque este no se comporta de igual manera en Linux y Windows.

Tendre Noticias Pronto con un demo de un Reporte 100% en Windows

Saludos

miércoles 5 de agosto de 2009

Leer textos delimitados en C# y Mono

Este pequeño ejemplo permite leer linea por linea de un texto o un campo text que este dentro de una tabla de base de datos, se probo con motor de base de datos PostgreSQL


//char[] delimiterChars = {';'}; // delimitador de Cadenas
char[] delimiterChars = {' '}; // delimitador de Cadenas
//string texto = (string) lector["prueba"]; // puede ser una campo de la base de datos tipo Text
string texto = "1;daniel;olivares;cuevas\n"+
"2;genaro;cuevas;bazaldua\n"+
"3;gladys;perez;orellana\n";
string[] words = texto.Split(delimiterChars); // Separa las Cadenas
string lineas_texto = "";

// Recorre la variable
foreach (string s in words){
if (s.Length > 0){
//comprueba si hay historial de contrato "s" tiene historial
Console.WriteLine(s.ToString()+"\n");
lineas_texto += s;
}
}

si le ponen el delimitador ";" en consola aparareceran valor por valor del text
1
daniel
olivares
cuevas

si esta vacio aprecera
1;daniel;olivares;cuevas

Espero que sirva de algo