excel from C# – creation table dinamic and grapihs

 

namespace ….
{
public class ….
{
/*Las variables app, woekbook, worksheet, Pages, workSheet_range se les cambios de
* privado a protected para poder ser heredados de la Clases ExcelReportesPersonalizados
* tambien se agrego un constructor ExcelAportes sin parametros
* Agregado CMedina 06/07/2015
*/
protected Excel.Application app = null;
protected Excel.Workbook workbook = null;
protected Excel.Worksheet worksheet = null;
protected Excel.Range workSheet_range = null;
protected Dictionary<Int32, Excel.Worksheet> Pages;
private Dictionary<string, Microsoft.Office.Interop.Excel.XlPattern> namePatternMap;
private Dictionary<string, Microsoft.Office.Interop.Excel.XlLineStyle> nameLineStyleMap;
private Dictionary<string, Microsoft.Office.Interop.Excel.XlBorderWeight> nameBorderWeightMap;
private Dictionary<string, Microsoft.Office.Interop.Excel.XlHAlign> nameHAlignMap;
private Dictionary<string, Microsoft.Office.Interop.Excel.XlVAlign> nameVAlignMap;
private int m_escala = 100;
public void ExcelVisible(Boolean x_visible)
{
app.Visible = x_visible;
}

public void ExcelPrintEscala(int x_escala)
{
m_escala = x_escala;
//app.Act
}

public ExcelAportes() {
}
/*———————————————*/
/// <summary>
/// Crea un Libro de Excel con la Plantilla
/// </summary>
/// <param name=”m_numPages”>Número de Paginas</param>
/// <param name=”m_names”>Nombre de la Hoja de Excel</param>
/// <param name=”borderPageColor”></param>

public ExcelAportes(Int32 m_numPages, List<String> m_names, String borderPageColor, Boolean x_visible = true, int x_escala = 100,Boolean numeracion = true)
{
try
{

Pages = new Dictionary<Int32, Excel.Worksheet>();
app = new Excel.Application();
app.Visible = x_visible;
string _plantilla = System.AppDomain.CurrentDomain.BaseDirectory + @”\Plantillas Excel\Plantilla.xltx”;
workbook = app.Workbooks.Add(_plantilla);
for (int i = m_numPages; i >= 1; i–)
{
if (i == m_numPages)
{
worksheet = (Excel.Worksheet)workbook.Worksheets[1];
}
else
{
worksheet = (Excel.Worksheet)workbook.Worksheets.Add();
}
if (borderPageColor == “Transparente”) worksheet.Cells.Borders.Color = System.Drawing.Color.Transparent.ToArgb();
if (m_names[i – 1].Length > 27)
{
if (m_names != null)
{
if(numeracion)
worksheet.Name = i.ToString() + ” ” + m_names[i – 1].Substring(0, 27);
else
worksheet.Name = m_names[i – 1].Substring(0, 27);
}
}
else
{
if (m_names != null) {
if(numeracion)
worksheet.Name = i.ToString() + ” ” + m_names[i – 1];
else
worksheet.Name = m_names[i – 1];
}
}
Pages.Add(i, worksheet);
/* Configuración de Hoja de Excel */

Pages[i].PageSetup.LeftMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.RightMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.TopMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.BottomMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.HeaderMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.FooterMargin = app.InchesToPoints(0.196850393700787);
Pages[i].PageSetup.PaperSize = Excel.XlPaperSize.xlPaperA4;
Pages[i].PageSetup.Zoom = x_escala;
Pages[i].PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape; // horizontal
Pages[i].PageSetup.CenterHorizontally = true;
Pages[i].PageSetup.CenterVertically = true;
Pages[i].PageSetup.ScaleWithDocHeaderFooter = true;
Pages[i].PageSetup.AlignMarginsHeaderFooter = true;
Pages[i].PageSetup.PrintGridlines = false;
Pages[i].PageSetup.PrintHeadings = false;

Pages[i].PageSetup.PrintComments = Excel.XlPrintLocation.xlPrintNoComments;
Pages[i].PageSetup.PrintErrors = Excel.XlPrintErrors.xlPrintErrorsDisplayed;
if (Convert.ToInt16(app.Version.Substring(0, 2)) >= 14) app.PrintCommunication = true;
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public ExcelAportes(string x_Plantilla, Int32 x_NumHojas, Int32 x_HojaActiva = 1, Boolean x_visible = false)
{
try
{
Pages = new Dictionary<Int32, Excel.Worksheet>();
app = new Excel.Application();
app.Visible = x_visible;
string _plantilla = System.AppDomain.CurrentDomain.BaseDirectory + @”\Plantillas Excel\” + x_Plantilla;
workbook = app.Workbooks.Add(_plantilla);
for (int i = 1; i <= x_NumHojas; i++)
{
worksheet = (Excel.Worksheet)workbook.Worksheets[i];
Pages.Add(i, worksheet);
}
worksheet = (Excel.Worksheet)workbook.Worksheets[x_HojaActiva];
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addBorders(String fil_ini, String fil_fin, String col_ini, String col_fin, Boolean top, Boolean button, Boolean left, Boolean right, String StyleLine)
{
try
{
Excel.Range _range = worksheet.get_Range(fil_ini + “:” + fil_fin, col_ini + “:” + col_fin);
switch (StyleLine)
{
case “doble”:
if (top)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlDouble;
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.Color.Black.ToArgb();
}
if (button)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlDouble;
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.Color.Black.ToArgb();
}
if (left)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlDouble;
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.Color.Black.ToArgb();
}
if (right)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlDouble;
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.Color.Black.ToArgb();
}
break;
case “simple”:
if (top)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.Color.Black.ToArgb();
}
if (button)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.Color.Black.ToArgb();
}
if (left)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.Color.Black.ToArgb();
}
if (right)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.Color.Black.ToArgb();
}
break;
case “negrita”:
if (top)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Weight = Excel.XlBorderWeight.xlMedium;
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.Color.Black.ToArgb();
}
if (button)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlMedium;
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.Color.Black.ToArgb();
}
if (left)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Weight = Excel.XlBorderWeight.xlMedium;
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.Color.Black.ToArgb();
}
if (right)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Weight = Excel.XlBorderWeight.xlMedium;
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.Color.Black.ToArgb();
}
break;
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public void paintCeldas(String fil_ini, String fil_fin, String col_ini, String col_fin, String color)
{
try
{
Excel.Range _range = worksheet.get_Range(fil_ini + “:” + fil_fin, col_ini + “:” + col_fin);
switch (color)
{
case “PL”:
_range.Interior.ColorIndex = 15;

break;
default:
_range.Interior.Color = System.Drawing.Color.White.ToArgb();
break;
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public void addformula(String cell, String formula, Boolean bold, Int32 x_nropagina = 1)
{
try
{
Excel.Range sum_range = Pages[x_nropagina].get_Range(cell, cell);
sum_range.Formula = formula;
sum_range.Font.Bold = bold;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}

}
public void addformula1(String cell, String formula, Boolean bold, Int32 x_nropagina = 1)
{
try
{
Excel.Range sum_range = Pages[x_nropagina].get_Range(cell, cell);
sum_range.Formula = formula;
sum_range.Font.Bold = bold;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}

}
private void PintarAllBorders(Excel.Borders _borders)
{
_borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders.Color = System.Drawing.Color.Black;
}

public void InsertarRegistroFromArray(Int32 x_page, Object[] datos, Int32 x_ColumnaInicial, Int32 x_FilaInicial, int x_tipo, bool ajustarACelda = false)
{
try
{
workSheet_range = Pages[x_page].Range[Pages[x_page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[x_page].Cells[x_FilaInicial, x_ColumnaInicial + datos.GetLength(0) – 1]];
workSheet_range.Value2 = datos;
PintarAllBorders(workSheet_range.Borders);

switch (x_tipo)
{
case 1://Header
workSheet_range.Interior.ColorIndex = 15;
workSheet_range.Font.Bold = true;
break;
case 2://Registro Normal
break;
}

workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;

if (ajustarACelda)
workSheet_range.EntireColumn.AutoFit();
}
catch (Exception ex)
{
throw (ex);
}
}

public void createHeaders(Int32 page, Int32 fila, Int32 col, String text, String rng_iniCol, String rng_finCol, Int32 mergeColumns, String rng_inifil, String rng_finfil,
String color, Boolean font, Int32 columnwidth, Int32 fontsize, String fcolor, String positionH, String positionV, String borderColor)
{
try
{
Pages[page].Cells[fila, col] = text;
workSheet_range = Pages[page].get_Range(rng_inifil + “:” + rng_finfil, rng_iniCol + “:” + rng_finCol);
workSheet_range.Merge();
switch (color)
{
case “DY”:
workSheet_range.Interior.ColorIndex = 44;//.Color = System.Drawing.Color.Yellow.ToArgb();
break;
case “P”:
workSheet_range.Interior.Color = System.Drawing.Color.Gray.ToArgb();
break;
case “G”:
workSheet_range.Interior.Color = System.Drawing.Color.Gainsboro.ToArgb();
break;
case “T”:
workSheet_range.Interior.Color = System.Drawing.Color.Turquoise.ToArgb();
break;
case “D”:
workSheet_range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
break;
case “DR”:
workSheet_range.Interior.ColorIndex = 30;
break;
case “OR”:
workSheet_range.Interior.ColorIndex = 53;
break;
case “PL1”:
//workSheet_range.Interior.ColorIndex = 15;
workSheet_range.Font.Name = “Miriam Fixed”;
break;
case “PL”://plomo
workSheet_range.Interior.ColorIndex = 15;
break;
case “RED”:
workSheet_range.Interior.Color = System.Drawing.Color.Red;
break;
default:
workSheet_range.Interior.Color = System.Drawing.Color.White.ToArgb();
break;
}
if (borderColor == “Transparente”)
workSheet_range.Borders.Color = System.Drawing.Color.Transparent.ToArgb();
else
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.Font.Bold = font;
workSheet_range.ColumnWidth = columnwidth;
workSheet_range.Font.Size = fontsize;
switch (positionH)
{
case “CH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
break;
case “LH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
break;
case “RH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
break;
default:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
break;
}
switch (positionV)
{
case “CV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
break;
case “TV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
break;
case “BV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignBottom;
break;
default:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
break;
}
if (fcolor.Equals(“”))
{
workSheet_range.Font.ColorIndex = 2;
}
else
{
workSheet_range.Font.ColorIndex = 1;
}
if (fcolor.Equals(“Personal”))
{
workSheet_range.Font.ColorIndex = 2;
workSheet_range.RowHeight = 30;

workSheet_range.Font.Name = “Comic Sans MS”;
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public void addData(Int32 page, Int32 row, Int32 col, String data, String cell1, String cell2, String format, String color, String positionH, String positionV,
Int32 num_columns, Boolean bold, String mergeCellFin, String fontcolor, Boolean wrapText, String borderColor)
{
try
{
Pages[page].Cells[row, col] = data;
if (mergeCellFin != null)
workSheet_range = Pages[page].get_Range(cell1 + “:” + cell1, cell2 + “:” + mergeCellFin);
else
workSheet_range = Pages[page].get_Range(cell1, cell2);
if (borderColor == “Transparente”)
workSheet_range.Borders.Color = System.Drawing.Color.Transparent.ToArgb();
else
workSheet_range.Borders.Color = System.Drawing.Color.Black.ToArgb();
workSheet_range.NumberFormat = format;
workSheet_range.Merge();
workSheet_range.Font.Bold = bold;
if (wrapText)
workSheet_range.WrapText = true;
switch (fontcolor)
{
case “Azul”:
workSheet_range.Font.ColorIndex = 5;
break;
default:
workSheet_range.Font.ColorIndex = 1;
break;
}
switch (color)
{
case “DY”://dark yellow
workSheet_range.Interior.ColorIndex = 44;//.Color = System.Drawing.Color.Yellow.ToArgb();
break;
case “P”:
workSheet_range.Interior.Color = System.Drawing.Color.Gray.ToArgb();
break;
case “G”:
workSheet_range.Interior.Color = System.Drawing.Color.Gainsboro.ToArgb();
break;
case “T”:
workSheet_range.Interior.Color = System.Drawing.Color.Turquoise.ToArgb();
break;
case “D”:
workSheet_range.Interior.Color = System.Drawing.Color.PeachPuff.ToArgb();
break;
case “DR”:
workSheet_range.Interior.ColorIndex = 30;
break;
case “OR”:
workSheet_range.Interior.ColorIndex = 44;
break;
case “PL”://plomo
workSheet_range.Interior.ColorIndex = 15;
break;
case “Limon”:
workSheet_range.Interior.ColorIndex = 35;
break;
case “Amarillo”:
workSheet_range.Interior.ColorIndex = 27;
break;
default:
workSheet_range.Interior.Color = System.Drawing.Color.White.ToArgb();
break;
}
switch (positionH)
{
case “CH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
break;
case “LH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
break;
case “RH”:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignRight;
break;
default:
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignLeft;
break;
}
switch (positionV)
{
case “CV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
break;
case “TV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
break;
case “BV”:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignBottom;
break;
default:
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignTop;
break;
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}

}
/// <summary>
/// Agrega los Datos a la Hoja de Excel como un DataTable
/// </summary>
/// <param name=”page”>Hoja del Excel</param>
/// <param name=”dt”>DataTable de Consulta</param>
/// <param name=”x_ColumnaInicial”>Numero de Columna Inicial</param>
/// <param name=”x_FilaInicial”>Numero de Fila Inicial</param>
/// <param name=”x_setTiposDatos”></param>
/// <param name=”x_autoFit”>Ajustar Ancho de Columna</param>
/// <param name=”x_definirAnchoCoumn”></param>
/// <param name=”x_columnaLetra”></param>
/// <param name=”x_anchoColumna”></param>
/// <param name=”x_sizeFont”>Ajustar Manualmente tamaño de Fuente</param>
/// <param name=”x_setBorder”></param>
public void addDataList(Int32 page, DataTable dt, Int32 x_ColumnaInicial, Int32 x_FilaInicial, bool x_setTiposDatos = true, bool x_autoFit = true, bool x_definirAnchoCoumn = false, String x_columnaLetra = “XFD”, Int32 x_anchoColumna = 1, bool x_sizeFont = true, bool x_setBorder = true, bool x_repindividual = false, bool x_orientacionhorizontal = false, bool x_generalsiniestros = false, int x_escala = 100, int x_tamañoletra = 10)
{
try
{
object[,] datos = new object[dt.Rows.Count, dt.Columns.Count];
if (dt.Rows.Count > 0)
{
if (x_setTiposDatos)
for (int c = 0; c < dt.Columns.Count; c++)
{
string _tip = dt.Rows[0][c].GetType().ToString();
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Decimal”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Double”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Float”))
{ Pages[page].Columns[c + 1].NumberFormat = “#,##0.00”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Long”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int16”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int32”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int64”))
{ Pages[page].Columns[c + 1].NumberFormat = “0”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.DBNull”))
{ Pages[page].Columns[c + 1].NumberFormat = “”; }
if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
{ Pages[page].Columns[c + 1].NumberFormat = “dd/mm/yyyy;@”; }

//if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
//{ Pages[page].Columns[c + 1].NumberFormat = “0.00%”; }
};
}
for (int f = 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count; c++)
{
datos[f, c] = dt.Rows[f][c];
}
}
workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[dt.Rows.Count + x_FilaInicial – 1, dt.Columns.Count + x_ColumnaInicial – 1]];
workSheet_range.Value2 = datos;
workSheet_range.Font.Size = x_tamañoletra;

if (x_autoFit)
{
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].AutoFit();
}
}
if (x_sizeFont)
{
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].Font.Size = “9”;
}
Pages[page].Columns[1].Cells.EntireColumn.AutoFit();
Pages[page].Columns[2].Cells.EntireColumn.WrapText = true;
Pages[page].Columns[2].ColumnWidth = 36;
Pages[page].Columns[3].ColumnWidth = 10;
Pages[page].Columns[4].Cells.EntireColumn.AutoFit();
Pages[page].Columns[5].Cells.EntireColumn.AutoFit();
Pages[page].Columns[6].ColumnWidth = 8;
Pages[page].Columns[7].ColumnWidth = 8;
Pages[page].Columns[8].ColumnWidth = 8;
Pages[page].Columns[10].ColumnWidth = 8;
}
if (x_orientacionhorizontal)
{ Pages[page].PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape; }
if (x_repindividual)
{
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].Font.Size = “9”;
Pages[page].Columns[c].Cells.EntireColumn.WrapText = true;
}
Pages[page].Columns[1].ColumnWidth = 5.3; //NRO FILE CCS
Pages[page].Columns[2].ColumnWidth = 8.5; // NRO. SINIESTRO COMPAÑIA
Pages[page].Columns[3].ColumnWidth = 31.8; //OBJETO DEL SEGURO
Pages[page].Columns[4].ColumnWidth = 31.8; //CAUSA-REFERENCIA
Pages[page].Columns[5].ColumnWidth = 22.6; //LUGAR DE OCURRENCIA
Pages[page].Columns[6].ColumnWidth = 9.5; //FECHA DE OCURRENCIA
Pages[page].Columns[7].ColumnWidth = 4; //MND
Pages[page].Columns[8].ColumnWidth = 9.3; //MONTO RECLAMADO
Pages[page].Columns[9].ColumnWidth = 8.3; //DEDUCIBLE
Pages[page].Columns[10].ColumnWidth = 9.6; //MONTO A INDEMNIZAR
Pages[page].Columns[11].ColumnWidth = 8.1; //ESTADO SINIESTRO
Pages[page].Columns[12].ColumnWidth = 24.7; //SITUACION SINIESTRO
Pages[page].Columns[13].ColumnWidth = 8.8; //FECHA SITUACIÓN
Pages[page].Columns[14].ColumnWidth = 8.8; //AJUSTADOR
}
if (x_generalsiniestros)
{

//Pages[page].Columns[1].ColumnWidth = 7; //NRO FILE CCS
//Pages[page].Columns[1].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[3].ColumnWidth = 49.5; // COMPAÑÍA
//Pages[page].Columns[3].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[4].ColumnWidth = 43; // constratante
//Pages[page].Columns[4].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[6].ColumnWidth = 18.5; // RIESGO
//Pages[page].Columns[6].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[7].ColumnWidth = 46.5; //OBJETO DEL SEGURO
//Pages[page].Columns[7].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[8].ColumnWidth = 36.5; //CAUSA-REFERENCIA
//Pages[page].Columns[8].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[9].ColumnWidth = 26; //LUGAR DE OCURRENCIA
//Pages[page].Columns[9].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[15].ColumnWidth = 8.5; //Estado
//Pages[page].Columns[15].Cells.EntireColumn.WrapText = true;
//Pages[page].Columns[16].ColumnWidth = 30.5; //OBJETO DEL SEGURO
//Pages[page].Columns[16].Cells.EntireColumn.WrapText = true;
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].Font.Size = “9”;
Pages[page].Columns[c].Cells.EntireColumn.WrapText = true;
}
Pages[page].Columns[1].ColumnWidth = 5.3; //NRO FILE CCS
Pages[page].Columns[2].ColumnWidth = 20.8; //CONTRATANTE
Pages[page].Columns[3].ColumnWidth = 10; // POLIZA
Pages[page].Columns[4].ColumnWidth = 25; //OBJETO DEL SEGURO
Pages[page].Columns[5].ColumnWidth = 28.8; //CAUSA-REFERENCIA
Pages[page].Columns[6].ColumnWidth = 23.6; //LUGAR DE OCURRENCIA
Pages[page].Columns[7].ColumnWidth = 9.5; //FECHA DE OCURRENCIA
Pages[page].Columns[8].ColumnWidth = 4; //MND
Pages[page].Columns[9].ColumnWidth = 9.3; //MONTO RECLAMADO
Pages[page].Columns[10].ColumnWidth = 8.3; //DEDUCIBLE
Pages[page].Columns[11].ColumnWidth = 9.6; //MONTO A INDEMNIZAR
Pages[page].Columns[12].ColumnWidth = 8.1; //ESTADO SINIESTRO
Pages[page].Columns[13].ColumnWidth = 11.7; //SITUACION SINIESTRO
Pages[page].Columns[14].ColumnWidth = 8.8; //FECHA SITUACIÓN
//Pages[page].Columns[14].ColumnWidth = 15.8; //AJUSTADOR

}
Pages[page].PageSetup.Zoom = x_escala;

if (x_definirAnchoCoumn)
{
worksheet.Range[x_columnaLetra + x_FilaInicial.ToString()].EntireColumn.ColumnWidth = x_anchoColumna;
}

if (!x_setBorder)
{
SetBorderInternal(“B” + (x_FilaInicial), Columna(dt.Columns.Count + 1) + (x_FilaInicial + dt.Rows.Count – 1), “Simple”, “Delgado”, “Black”, page);
}
else
{
SetBorderInternal(“A” + (x_FilaInicial), Columna(dt.Columns.Count) + (x_FilaInicial + dt.Rows.Count – 1), “Simple”, “Delgado”, “Black”, page);
}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addDataList(Int32 page, DataTable dt, Int32 x_ColumnaInicial, Int32 x_FilaInicial, String[] x_columnaLetra, Int32[] x_anchoColumna)
{
try
{
object[,] datos = new object[dt.Rows.Count, dt.Columns.Count];
bool x_setTiposDatos = true;
if (dt.Rows.Count > 0)
{
if (x_setTiposDatos)
for (int c = 0; c < dt.Columns.Count; c++)
{
string _tip = dt.Rows[0][c].GetType().ToString();
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Decimal”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Double”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Float”))
{ Pages[page].Columns[c + 1].NumberFormat = “#,##0.00”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Long”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int16”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int32”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int64”))
{ Pages[page].Columns[c + 1].NumberFormat = “0”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.DBNull”))
{ Pages[page].Columns[c + 1].NumberFormat = “”; }
if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
{ Pages[page].Columns[c + 1].NumberFormat = “dd/mm/yyyy;@”; }
}
}
for (int f = 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count; c++)
{
datos[f, c] = dt.Rows[f][c];
}
}
workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[dt.Rows.Count + x_FilaInicial – 1, dt.Columns.Count + x_ColumnaInicial – 1]];
workSheet_range.Value2 = datos;
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].AutoFit();
}

for (int i = 0; i < x_columnaLetra.Length; i++)
{
worksheet.Range[x_columnaLetra[i] + x_FilaInicial.ToString()].EntireColumn.ColumnWidth = x_anchoColumna[i];
}

SetBorderInternal(“A” + (x_FilaInicial), Columna(dt.Columns.Count) + (x_FilaInicial + dt.Rows.Count – 1), “Simple”, “Delgado”, “Black”, page);
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addListaDatos(Int32 page, DataTable dt, Int32 x_ColumnaInicial, Int32 x_FilaInicial, bool x_setTiposDatos = true, bool x_autoFit = true, bool x_definirAnchoCoumn = false, String x_CadenaLetrasColumnas = “XFD”, String x_CadenaAnchoColumna = “”, bool x_reporteFormato = false, bool x_mergeColumnaFinal = false, DataTable x_datatableCaracteristicaPintar = null, Object x_caracteristicaPintar = null)
{
try
{

object[,] datos = new object[dt.Rows.Count, dt.Columns.Count];
if (dt.Rows.Count > 0)
{
if (x_setTiposDatos)
for (int c = 0; c < dt.Columns.Count; c++)
{
string _tip = dt.Rows[0][c].GetType().ToString();
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Decimal”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Double”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Float”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count + 1)).NumberFormat = “#,##0.00”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Long”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int16”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int32”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int64”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count + 1)).NumberFormat = “0”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.DBNull”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count + 1)).NumberFormat = “”; }
if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count + 1)).NumberFormat = “dd/mm/yyyy;@”; }

//if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
//{ Pages[page].Columns[c + 1].NumberFormat = “0.00%”; }
};
}
int _valor = 0;
for (int f = 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count; c++)
{
if (c == dt.Columns.Count – 1)
{
if (x_mergeColumnaFinal)
{
//Pages[page].Cells[x_FilaInicial, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(dt.Columns.Count) + (x_FilaInicial + f)).ToString(), (Columna(dt.Columns.Count + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if ((x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]).Equals(x_caracteristicaPintar))
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
workSheet_range.Merge();
datos[f, c] = dt.Rows[f][c];
_valor = 1;
}
else
{
datos[f, c] = dt.Rows[f][c];
//Pages[page].Cells[x_FilaInicial + f, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(c + 1) + (x_FilaInicial + f)).ToString(), (Columna(c + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if ((x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]).Equals(x_caracteristicaPintar))
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
}
}
else
{
datos[f, c] = dt.Rows[f][c];
//Pages[page].Cells[x_FilaInicial + f, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(c + 1) + (x_FilaInicial + f)).ToString(), (Columna(c + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if ((x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]).Equals(x_caracteristicaPintar))
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
}
}
}

workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[dt.Rows.Count + x_FilaInicial – 1, dt.Columns.Count + x_ColumnaInicial – 1]];

workSheet_range.Value2 = datos;

if (x_autoFit)
{
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].AutoFit();
}
}
if (x_definirAnchoCoumn)
{
String[] _arrayLetras = x_CadenaLetrasColumnas.Split(‘-‘);
String[] _arrayAnchoColumnas = x_CadenaAnchoColumna.Split(‘-‘);

//workSheet_range = Pages[page].get_Range((Columna(dt.Columns.Count) + (x_FilaInicial + f)).ToString(), (Columna(dt.Columns.Count + 1) + (x_FilaInicial + f)).ToString());
for (int c = 0; c < _arrayLetras.Length; c++)
{
Pages[page].Range[_arrayLetras[c] + x_FilaInicial.ToString()].EntireColumn.ColumnWidth = _arrayAnchoColumnas[c];
}

}
if (x_reporteFormato)
{
//workSheet_range.Font.Color = System.Drawing.Color.Black;
//workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
workSheet_range.Font.Size = 8;
}
SetBorderInternal(“A” + (x_FilaInicial), Columna(dt.Columns.Count + _valor) + (x_FilaInicial + dt.Rows.Count – 1), “Simple”, “Delgado”, “Black”, page);
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addListaDatosFinancinanciamentos(Int32 page, DataTable dt, Int32 x_ColumnaInicial, Int32 x_FilaInicial, bool x_setTiposDatos = true, bool x_autoFit = true, bool x_definirAnchoCoumn = false, String x_CadenaLetrasColumnas = “XFD”, String x_CadenaAnchoColumna = “”, bool x_reporteFormato = false, bool x_mergeColumnaFinal = false, DataTable x_datatableCaracteristicaPintar = null, Object x_caracteristicaPintar = null)
{
try
{

object[,] datos = new object[dt.Rows.Count, dt.Columns.Count];
if (dt.Rows.Count > 0)
{
if (x_setTiposDatos)
for (int c = 0; c < dt.Columns.Count; c++)
{
string _tip = dt.Rows[0][c].GetType().ToString();
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Decimal”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Double”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Float”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count)).NumberFormat = “#,##0.00”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.Long”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int16”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int32”) || dt.Rows[0][c].GetType() == System.Type.GetType(“System.Int64”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count)).NumberFormat = “0”; }
if (dt.Rows[0][c].GetType() == System.Type.GetType(“System.DBNull”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count)).NumberFormat = “”; }
if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
{ Pages[page].Cells.get_Range(Columna(c + 1) + x_FilaInicial, Columna(c + 1) + (x_FilaInicial + dt.Rows.Count)).NumberFormat = “dd/mm/yyyy;@”; }

//if (dt.Rows[RetornarValor(dt, c)][c].GetType() == System.Type.GetType(“System.DateTime”))
//{ Pages[page].Columns[c + 1].NumberFormat = “0.00%”; }
};
}
int _valor = 0;
for (int f = 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count; c++)
{
if (c == dt.Columns.Count – 1)
{
if (x_mergeColumnaFinal)
{
//Pages[page].Cells[x_FilaInicial, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(dt.Columns.Count) + (x_FilaInicial + f)).ToString(), (Columna(dt.Columns.Count + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if (Convert.ToInt32(x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]) < 0)
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
workSheet_range.Merge();
datos[f, c] = dt.Rows[f][c];
_valor = 1;
}
else
{
datos[f, c] = dt.Rows[f][c];
//Pages[page].Cells[x_FilaInicial + f, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(c + 1) + (x_FilaInicial + f)).ToString(), (Columna(c + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if (Convert.ToInt32(x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]) < 0)
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
}
}
else
{
datos[f, c] = dt.Rows[f][c];
//Pages[page].Cells[x_FilaInicial + f, c + 1] = dt.Rows[f][c].ToString();
workSheet_range = Pages[page].Cells.get_Range((Columna(c + 1) + (x_FilaInicial + f)).ToString(), (Columna(c + 1) + (x_FilaInicial + f)).ToString());
if (x_datatableCaracteristicaPintar != null)
{
if (Convert.ToInt32(x_datatableCaracteristicaPintar.Rows[f][x_datatableCaracteristicaPintar.Columns.Count – 1]) < 0)
{
workSheet_range.Font.Color = System.Drawing.Color.Red;
}
}
}
}
}

workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[dt.Rows.Count + x_FilaInicial – 1, dt.Columns.Count + x_ColumnaInicial – 1]];

workSheet_range.Value2 = datos;

if (x_autoFit)
{
for (int c = x_ColumnaInicial; c < dt.Columns.Count + x_ColumnaInicial; c++)
{
Pages[page].Columns[c].AutoFit();
}
}
if (x_definirAnchoCoumn)
{
String[] _arrayLetras = x_CadenaLetrasColumnas.Split(‘-‘);
String[] _arrayAnchoColumnas = x_CadenaAnchoColumna.Split(‘-‘);

//workSheet_range = Pages[page].get_Range((Columna(dt.Columns.Count) + (x_FilaInicial + f)).ToString(), (Columna(dt.Columns.Count + 1) + (x_FilaInicial + f)).ToString());
for (int c = 0; c < _arrayLetras.Length; c++)
{
Pages[page].Range[_arrayLetras[c] + x_FilaInicial.ToString()].EntireColumn.ColumnWidth = _arrayAnchoColumnas[c];
}

}
if (x_reporteFormato)
{
//workSheet_range.Font.Color = System.Drawing.Color.Black;
//workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
workSheet_range.Font.Size = 8;
}
SetBorderInternal(“A” + (x_FilaInicial), Columna(dt.Columns.Count + _valor) + (x_FilaInicial + dt.Rows.Count – 1), “Simple”, “Delgado”, “Black”, page);
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public int RetornarValor(DataTable x_datatab, int x_columna)
{
int _fila = -1;
do
{
if (_fila < x_datatab.Rows.Count – 1) _fila += 1;
} while (String.IsNullOrEmpty(Convert.ToString(x_datatab.Rows[_fila][x_columna]).TrimEnd()) && _fila < x_datatab.Rows.Count – 1);
return _fila;
}
public void addDataArray(Int32 page, Object[] datos, Int32 x_ColumnaInicial, Int32 x_FilaInicial, bool x_formatoCabecera, bool x_autoFit, int x_color = 2, bool x_mergeColumnaFinal = false, Int32 x_sizeLetras = 9)
{
try
{
workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[x_FilaInicial, x_ColumnaInicial + datos.GetLength(0) – 1]];
workSheet_range.Value2 = datos;
if (x_formatoCabecera)
{
if (x_color == 2)
{
workSheet_range.Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorAccent2;
workSheet_range.Font.ColorIndex = 2;
}
else
{
workSheet_range.Interior.ColorIndex = x_color;
workSheet_range.Font.Color = System.Drawing.Color.Black;
}

workSheet_range.Font.Bold = true;
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
//workSheet_range.Font.ColorIndex = 2;
workSheet_range.Font.Size = x_sizeLetras;
//workSheet_range.Font.Size = 9;
workSheet_range.WrapText = true;
}
if (x_autoFit)
{
for (int c = x_ColumnaInicial; c < x_ColumnaInicial + datos.GetLength(0); c++)
{
Pages[page].Columns[c + 1].AutoFit();
}
}
int _valor = 0;
if (x_mergeColumnaFinal)
{
//Pages[page].Cells[x_FilaInicial, datos.Length + 1] = datos[datos.Length-1] .ToString();
workSheet_range = Pages[page].get_Range((Columna(datos.Length) + (x_FilaInicial)).ToString(), (Columna(datos.Length + 1) + (x_FilaInicial)).ToString());
workSheet_range.Merge();
_valor = 1;
}

SetBorderInternal(“A” + (x_FilaInicial), Columna(datos.Length + _valor) + x_FilaInicial, “Simple”, “Medio”, “Black”, page);
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public DataTable convertirGrilla(RadGridView x_grilla, DataTable x_dtOriginal, ref Object[] _NuevasCabeceras)
{
DataTable _DataTableFinal = new DataTable();
int _colum = Lista_Cabeceras(x_grilla).Count;
Object[] _arrayDatosNuevos = new Object[_colum];
_NuevasCabeceras = new Object[_colum];
bool _columnasCompletas = true;
foreach (DataRow row in x_dtOriginal.Rows)
{
int y = 0;
for (int i = 0; i < x_grilla.ColumnCount; i++)
{
if (y < _colum)
{
if (x_grilla.Columns[i].IsVisible)
{
if (x_dtOriginal.Columns.Contains(x_grilla.Columns[i].FieldName))
{
_arrayDatosNuevos[y] = row[x_grilla.Columns[i].FieldName];
_NuevasCabeceras[y] = (x_grilla.Columns[i].HeaderText).ToUpper();
y++;
if (_columnasCompletas)
{ _DataTableFinal.Columns.Add(x_grilla.Columns[i].HeaderText, x_grilla.Columns[i].DataType); }
}
}
}
}
_DataTableFinal.Rows.Add(_arrayDatosNuevos); _columnasCompletas = false;
}
return _DataTableFinal;
}
public DataTable convertirGrillasChildRows(RadGridView x_grilla, ref Object[] _NuevasCabeceras, Boolean x_Filter)
{
DataTable _DataTableFinal = new DataTable();
int _colum = Lista_Cabeceras(x_grilla).Count;
Object[] _arrayDatosNuevos = new Object[_colum];
_NuevasCabeceras = new Object[_colum];
for (int _fila = 0; _fila < x_grilla.ChildRows.Count; _fila++)
{
int y = 0;
for (int _col = 0; _col < x_grilla.ColumnCount; _col++)
{
if (y < _colum)
{
if (x_grilla.Columns[_col].IsVisible)
{
if (x_Filter)
{
_arrayDatosNuevos[y] = x_grilla.ChildRows[_fila].Cells[_col].Value;
}
else
{
_arrayDatosNuevos[y] = x_grilla.Rows[_fila].Cells[_col].Value;
}
_NuevasCabeceras[y] = (x_grilla.Columns[_col].HeaderText).ToUpper();
y++;
if (_DataTableFinal.Columns.IndexOf(x_grilla.Columns[_col].FieldName) < 0)
{
if (x_grilla.Columns[_col].DataType.FullName.ToString().StartsWith(“System.Nullable`1”))
{
DataColumn _columnaNull = new DataColumn(x_grilla.Columns[_col].FieldName);
_columnaNull.AllowDBNull = true;
switch (x_grilla.Columns[_col].DataType.ToString())
{
case “System.Nullable`1[System.DateTime]”:
_columnaNull.DataType = Type.GetType(“System.DateTime”);
break;
}
_DataTableFinal.Columns.Add(_columnaNull);
}
else
{
//_DataTableFinal.Columns.Add(x_grilla.Columns[_col].FieldName, x_grilla.Columns[_col].DataType);
//if (x_grilla.Columns[_col].FormatString == “{0:##0.00%}”)
//{
// x_grilla.Columns[_col].FormatString = “{##0.00%}”;
//}
//if (x_grilla.Columns[_col].FormatString == “{0:###,##0.00}”)
//{
// x_grilla.Columns[_col].FormatString = “{0:#,###.00}”;
//}
_DataTableFinal.Columns.Add(x_grilla.Columns[_col].FieldName, x_grilla.Columns[_col].DataType);

}
}
}
}
}
_DataTableFinal.Rows.Add(_arrayDatosNuevos);
}
return _DataTableFinal;
}
public DataTable convertirGrillas(RadGridView x_grilla, ref Object[] _NuevasCabeceras)
{
DataTable _DataTableFinal = new DataTable();
int _colum = Lista_Cabeceras(x_grilla).Count;
Object[] _arrayDatosNuevos = new Object[_colum];
_NuevasCabeceras = new Object[_colum];
for (int _fila = 0; _fila < x_grilla.ChildRows.Count; _fila++)
{
int y = 0;
for (int _col = 0; _col < x_grilla.ColumnCount; _col++)
{
if (y < _colum)
{
if (x_grilla.Columns[_col].IsVisible)
{
_arrayDatosNuevos[y] = x_grilla.Rows[_fila].Cells[_col].Value;
_NuevasCabeceras[y] = (x_grilla.Columns[_col].HeaderText).ToUpper();
y++;
if (_DataTableFinal.Columns.IndexOf(x_grilla.Columns[_col].FieldName) < 0)
{
if (x_grilla.Columns[_col].DataType.FullName.ToString().StartsWith(“System.Nullable`1”))
{
DataColumn _columnaNull = new DataColumn(x_grilla.Columns[_col].FieldName);
_columnaNull.AllowDBNull = true;
switch (x_grilla.Columns[_col].DataType.ToString())
{
case “System.Nullable`1[System.DateTime]”:
_columnaNull.DataType = Type.GetType(“System.DateTime”);
break;
}
_DataTableFinal.Columns.Add(_columnaNull);
}
else
{
//_DataTableFinal.Columns.Add(x_grilla.Columns[_col].FieldName, x_grilla.Columns[_col].DataType);
//if (x_grilla.Columns[_col].FormatString == “{0:##0.00%}”)
//{
// x_grilla.Columns[_col].FormatString = “{##0.00%}”;
//}
//if (x_grilla.Columns[_col].FormatString == “{0:###,##0.00}”)
//{
// x_grilla.Columns[_col].FormatString = “{0:#,###.00}”;
//}
_DataTableFinal.Columns.Add(x_grilla.Columns[_col].FieldName, x_grilla.Columns[_col].DataType);

}
}
}
}
}
_DataTableFinal.Rows.Add(_arrayDatosNuevos);
}
return _DataTableFinal;
}
public List<String> Lista_Cabeceras(RadGridView grilla)
{
List<String> _listaCabeceras = new List<String>();
for (int i = 0; i < grilla.ColumnCount; i++)
{
if (grilla.Columns[i].IsVisible)
{
_listaCabeceras.Add(grilla.Columns.ElementAt(i).ToString().Substring(0, grilla.Columns.ElementAt(i).ToString().IndexOf(‘(‘) – 1).TrimEnd());
}
}
return _listaCabeceras;
}

public void Lista_CabecerasDT(DataTable _dt, ref Object[] _NuevasCabeceras)
{
_NuevasCabeceras = new Object[_dt.Columns.Count];
for (int i = 0; i < _dt.Columns.Count; i++)
{
if (_dt.Columns[i].ToString().IndexOf(“_”, 0) != 0)
{
_NuevasCabeceras[i] = _dt.Columns[i].ToString();
}
}
}
public void CrearTitulos(Int32 x_page, Int32 x_fila, Int32 x_col, String x_text, String x_rng_iniCol, String x_rng_finCol, Boolean x_subrayado, Boolean x_centrado = false, Boolean x_mergeColumnaFinal = false, int x_nroceldascombinadas = 0)
{
try
{
Pages[x_page].Cells[x_fila, x_col] = x_text;
workSheet_range = Pages[x_page].get_Range(x_rng_iniCol, x_rng_finCol);
workSheet_range.Merge();
if (x_centrado)
{
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.Font.Size = 15;
}
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
workSheet_range.Font.Underline = x_subrayado;
workSheet_range.Font.Bold = true;

if (x_mergeColumnaFinal)
{
//Pages[page].Cells[x_FilaInicial, datos.Length + 1] = datos[datos.Length-1] .ToString();
workSheet_range = Pages[x_page].get_Range((x_rng_iniCol).ToString(), (Columna(x_nroceldascombinadas + 1) + (x_fila)).ToString());
workSheet_range.Merge();

}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public string Columna(int x_Numero)
{
double _Numero = x_Numero;
double _decimal;
string _nuevo = “”;
string _Cadena = “”;
while (_Numero > 26)
{
_Numero = Convert.ToDouble(_Numero) / Convert.ToDouble(26);
_decimal = Math.Abs(Math.Truncate(_Numero) – _Numero);
_nuevo = Convert.ToString((char)(64 + (_decimal * 26 == 0 ? 26 : Convert.ToInt16(_decimal * 26))));
_Cadena = _nuevo + _Cadena;
_Numero -= _decimal;
if (_decimal == 0)
_Numero -= 1;
}
_nuevo = Convert.ToString((char)(64 + (Math.Truncate(_Numero) == 0 ? 26 : Math.Truncate(_Numero))));
_Cadena = _nuevo + _Cadena;
return _Cadena;
}
/// <summary>
/// Coloca la cabecera en la Hoja de Excel
/// </summary>
/// <param name=”x_cabeceraPrincipalTitulo”></param>
/// <param name=”x_pagina”></param>
/// <param name=”x_fila”></param>
/// <param name=”x_columna”></param>
/// <param name=”x_FiltrosTitulos”></param>
/// <param name=”x_nroceldascombinadas”></param>
/// <param name=”x_centrartitulo”></param>
/// <param name=”x_mergeColumnaFinal”></param>
public void InsertarTitulos(string x_cabeceraPrincipalTitulo, Int32 x_pagina, ref Int32 x_fila, Int32 x_columna, List<String> x_FiltrosTitulos, int x_nroceldascombinadas, Boolean x_centrartitulo = false, Boolean x_mergeColumnaFinal = false)
{
Int32 _valor = 1;

try
{
string _letraRangoColumnaInicio = ((char)65).ToString();
string _letraRangoColumnaFin = Columna(x_nroceldascombinadas);
for (int i = 0; i <= x_FiltrosTitulos.Count – 1; i++)
{
if (i == 0)
{
string columna1 = _letraRangoColumnaInicio + Convert.ToString(x_fila);
string columna2 = _letraRangoColumnaFin + Convert.ToString(x_fila);
CrearTitulos(x_pagina, x_fila, x_columna, x_cabeceraPrincipalTitulo.ToUpper(), columna1, columna2, true, x_centrartitulo);
}
CrearTitulos(x_pagina, x_fila + _valor, x_columna, x_FiltrosTitulos[i], _letraRangoColumnaInicio + Convert.ToString(x_fila + _valor), _letraRangoColumnaFin + Convert.ToString(x_fila + 1), false, false, x_mergeColumnaFinal, x_nroceldascombinadas);
x_fila += 1;
}
}
catch (Exception ex)
{
throw ex;
}
}

public void addvalor(String cell, String valor, Boolean bold, Int32 x_nropagina = 1)
{
try
{
Excel.Range sum_range = Pages[x_nropagina].get_Range(cell, cell);
sum_range.Value = valor;
sum_range.Font.Bold = bold;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}

}

public void AsignarFormulaACampos(DataTable x_dt, Object[] x_campos, Int32 x_fila, Boolean x_monedas = false, string x_campomnd = “TIPO_cNombreCorto”, Int32 x_numeropagina = 1, Boolean x_Total = false, string x_campototal = “”)
{
String _letra = “”;
String _moneda = Columna(x_dt.Columns.IndexOf(x_campomnd) + 1);
String _totalcolumna = Columna(x_dt.Columns.IndexOf(x_campototal) + 1);
int _fila_insertar = x_fila + x_dt.Rows.Count;
for (int i = 0; i < x_campos.Length; i++)
{
if (x_dt.Columns.Contains(x_campos[i].ToString()))
{
_letra = Columna(x_dt.Columns.IndexOf(x_campos[i].ToString()) + 1);
if (x_monedas)
{
addvalor(_moneda + (_fila_insertar), “S/.”, true, x_numeropagina);
addvalor(_moneda + (_fila_insertar + 1), “US$”, true, x_numeropagina);
addformula(_letra + (_fila_insertar), “=SUMIF(” + _moneda + (x_fila) + “:” + _moneda + (_fila_insertar – 1) + “,” + Convert.ToChar(34) + “=S/.” + Convert.ToChar(34) + “,” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true, x_numeropagina);
addformula(_letra + (_fila_insertar + 1), “=SUMIF(” + _moneda + (x_fila) + “:” + _moneda + (_fila_insertar – 1) + “,” + Convert.ToChar(34) + “=US$” + Convert.ToChar(34) + “,” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true, x_numeropagina);
}
else
{
if (x_Total)
{
addvalor(_moneda + (_fila_insertar), “TOTAL”, true, x_numeropagina);
addformula(_letra + (_fila_insertar), “=SUM(” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true, x_numeropagina);
// if (x_campototal != “”)
// {
// addvalor(_moneda + (_fila_insertar), “S/.”, true);
//addvalor(_moneda + (_fila_insertar+1), “US$”, true);
// addformula(_letra + (_fila_insertar), “=SUMIF(” + _moneda + (x_fila) + “:” + _moneda + (_fila_insertar – 1) + “,” + Convert.ToChar(34) + “=S/.” + Convert.ToChar(34) + “,” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true);
// addformula(_letra + (_fila_insertar + 1), “=SUMIF(” + _moneda + (x_fila) + “:” + _moneda + (_fila_insertar – 1) + “,” + Convert.ToChar(34) + “=US$” + Convert.ToChar(34) + “,” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true);
// }
}
else
{
addformula(_letra + (_fila_insertar), “=SUM(” + _letra + (x_fila) + “:” + _letra + (_fila_insertar – 1) + “)”, true);
}
}
Pages[x_numeropagina].Columns[x_dt.Columns.IndexOf(x_campos[i].ToString()) + 1].NumberFormat = “#,##0.00”;
}
}
}
private void Diccionario()
{
nameLineStyleMap = new Dictionary<string, Microsoft.Office.Interop.Excel.XlLineStyle>();
nameLineStyleMap.Add(“Continua”, Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous);
nameLineStyleMap.Add(“Punto”, Microsoft.Office.Interop.Excel.XlLineStyle.xlDot);
nameLineStyleMap.Add(“Simple”, Microsoft.Office.Interop.Excel.XlLineStyle.xlLineStyleNone);
nameLineStyleMap.Add(“Doble”, Microsoft.Office.Interop.Excel.XlLineStyle.xlDouble);
nameBorderWeightMap = new Dictionary<string, Microsoft.Office.Interop.Excel.XlBorderWeight>();
nameBorderWeightMap.Add(“Muy Delgado”, Microsoft.Office.Interop.Excel.XlBorderWeight.xlHairline);
nameBorderWeightMap.Add(“Delgado”, Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin);
nameBorderWeightMap.Add(“Medio”, Microsoft.Office.Interop.Excel.XlBorderWeight.xlMedium);
nameHAlignMap = new Dictionary<string, Microsoft.Office.Interop.Excel.XlHAlign>(); nameHAlignMap.Add(“Center”, Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter);
nameVAlignMap = new Dictionary<string, Microsoft.Office.Interop.Excel.XlVAlign>(); nameVAlignMap.Add(“Center”, Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter);
}
public void SetBorderInternal(string startCell, string endCell, string lineStyle, string borderWeight, string borderColorName, int page = 1)
{
Diccionario();
workSheet_range = Pages[page].Range[startCell, endCell];
//workSheet_range = worksheet.get_Range(startCell, endCell);
workSheet_range.Borders.Weight = nameBorderWeightMap[borderWeight];
try
{
object borderColor = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.FromName(borderColorName));
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].LineStyle = nameLineStyleMap[lineStyle];
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Weight = nameBorderWeightMap[borderWeight];
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideHorizontal].Color = borderColor;
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].LineStyle = nameLineStyleMap[lineStyle];
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Weight = nameBorderWeightMap[borderWeight];
workSheet_range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlInsideVertical].Color = borderColor;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}
public List<String> FormatoFiltro(List<String> _list)
{
int mayorCol1 = 0;
int nuevoCol1 = 0;
int mayorCol2 = 0;
int nuevoCol2 = 0;
for (int x = 0; x <= _list.Count – 1; x++)
{
// nuevoCol1 = _list[x].IndexOf(“:”);
if (nuevoCol1 > mayorCol1)
{
mayorCol1 = nuevoCol1;
}
if (_list[x].IndexOf(“?”) == -1)
{
nuevoCol2 = _list[x].Count();
nuevoCol2 = nuevoCol2 – nuevoCol1;
if (nuevoCol2 > mayorCol2)
{
mayorCol2 = nuevoCol2;
}
}
}
List<String> ListaFinal = new List<String>();
for (int i = 0; i < _list.Count; i++)
{

string cad1 = “”; ;
int indiceDosPuntos = _list[i].IndexOf(“:”);
string cadena = _list[i];
string acumulacioncadena1 = null;
string acumulacion2 = null;
int acumulador = 0;
for (int y = indiceDosPuntos; y < mayorCol1; y++)
{
acumulador += 1;
acumulacioncadena1 += ” “;
}
cad1 = cadena.Replace(“:”, acumulacioncadena1 + “:”);
int longitud = cadena.Count();
longitud = longitud – indiceDosPuntos;
for (int y = longitud; y <= mayorCol2; y++)
{
acumulacion2 += ” “;
}

cad1 = cad1 + acumulacion2;
if (Convert.ToInt32(_list[i].IndexOf(“?”)) > 0)
{

ListaFinal.Add(ListaFinal[ListaFinal.Count – 1] + cad1.Replace(“?”, “”));
ListaFinal.RemoveAt(ListaFinal.Count – 2);
}
else { ListaFinal.Add(cad1.TrimEnd()); }

}
return ListaFinal;
}
public void AddDataAgrupamiento(Int32 x_pagina, Int32 x_filaInicial, Int32 x_columnaInicial, Object[] x_ArrayCombinarCeldas, Object[] x_ArrayDataaInsertar, Boolean x_formatoCabecera, Boolean x_autoFit)
{
try
{
Int32 _columnasAcumuladas = 0;
for (int i = 0; i < x_ArrayDataaInsertar.Length; i++)
{
Pages[x_pagina].Cells[x_filaInicial, _columnasAcumuladas + x_columnaInicial] = x_ArrayDataaInsertar[i];
workSheet_range = Pages[x_pagina].get_Range(Convert.ToString(Columna(_columnasAcumuladas + x_columnaInicial) + x_filaInicial),
Convert.ToString(Columna(_columnasAcumuladas + x_columnaInicial + (Int32)x_ArrayCombinarCeldas[i] – 1) + x_filaInicial));
_columnasAcumuladas += (Int32)x_ArrayCombinarCeldas[i];
workSheet_range.Merge();
workSheet_range.WrapText = true;
if (x_formatoCabecera)
{
workSheet_range.Interior.ThemeColor = Excel.XlThemeColor.xlThemeColorAccent2;
workSheet_range.Font.Bold = true;
workSheet_range.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
workSheet_range.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
workSheet_range.Font.ColorIndex = 2;
workSheet_range.Font.Size = 13;
}
}
SetBorderInternal(Columna(x_columnaInicial) + (x_filaInicial), Columna(_columnasAcumuladas + x_columnaInicial – 1) + x_filaInicial, “Simple”, “Medio”, “Black”, 1);
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void OcultarHoja(Int32 x_pagina)
{
try
{
Pages[x_pagina].Visible = Excel.XlSheetVisibility.xlSheetHidden;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void RefrescarLibro()
{
try
{
app.ActiveWorkbook.RefreshAll();
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void TablaDinamica(Int32 x_paginaData, Int32 x_PaginaTabla, String Rango1, String Rango2)
{
try
{
Rango1 = “A6”;
Rango2 = “R80022″;

object useDefault = Type.Missing;
Microsoft.Office.Interop.Excel.Worksheet targetSheet = null;
Microsoft.Office.Interop.Excel.PivotTable pivotTable = null;
Excel.Range pivotData = null;
Excel.Range pivotDestination = null;
Microsoft.Office.Interop.Excel.PivotField salesRegion = null;
Microsoft.Office.Interop.Excel.PivotField salesAmount = null;

string workBookName = @”C:\temp\pivottablesample.xlsx”;
string pivotTableName = @”Sales By Region”;
string workSheetName = @”Quarterly Sales”;

targetSheet = (Microsoft.Office.Interop.Excel.Worksheet)(workbook.Worksheets[x_paginaData]);
targetSheet.Name = workSheetName;

// Select a range of data for the Pivot Table.
pivotData = targetSheet.get_Range(Rango1, Rango2);

// Select location of the Pivot Table.
pivotDestination = targetSheet.get_Range(“A11”, useDefault);

}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addDataTable(Int32 page, DataTable dt, String x_CeldaInicial, String x_CeldaFinal)
{
try
{
workSheet_range = worksheet.Range[x_CeldaInicial, x_CeldaFinal];
workSheet_range.Value2 = dt;

}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void SeleccionarHoja(Int32 x_pagina)
{
try
{
worksheet = (Excel.Worksheet)workbook.Worksheets[x_pagina];
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void MostrarLibro(bool x_visible)
{
try
{
app.Visible = x_visible;
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void RellenarDataSiniestros(Int32 page, DataTable dt, Int32 x_FilaInicial, Int32 x_ColumnaInicial,String x_nombre)
{
try
{
object[,] datos = new object[dt.Rows.Count, dt.Columns.Count – 1];
if (dt.Rows.Count > 0)
{
for (int f = 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count – 1; c++)
{
datos[f, c] = dt.Rows[f][c];
}
}
workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],
Pages[page].Cells[dt.Rows.Count + x_FilaInicial – 1, dt.Columns.Count + x_ColumnaInicial – 2]];
workSheet_range.Value2 = datos;
workSheet_range.Font.Size = 12;
int fpos = Pages[page].get_Range(“b12”, Pages[page].get_Range(“b12”).End[Excel.XlDirection.xlDown]).Rows.Count;
Pages[page].get_Range(“B3:F3”).Value2 = x_nombre;
Pages[page].get_Range(“b12”, Pages[page].get_Range(“b” + (fpos + 11))).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
Pages[page].get_Range(“b12”, Pages[page].get_Range(“b” + (fpos + 11))).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
Pages[page].get_Range(“B” + ((11 + fpos) – 5) + “:F” + ((11 + fpos) – 5)).Font.Bold = true;
Pages[page].get_Range(“B” + ((11 + fpos) – 3) + “:F” + ((11 + fpos) – 3)).Font.Bold = true;
Pages[page].get_Range(“C11:C” + ((11 + fpos) – 3)).NumberFormat = “#,##0.00”;//******************************FORMATO MILES COLUMNA C
Pages[page].get_Range(“D11:D” + ((11 + fpos) – 3)).NumberFormat = “#,##0.00”;//******************************FORMATO MILES COLUMNA D
Pages[page].get_Range(“E11”).Copy();//***********************************************************************COPIAMOS FORMATO DE CELDAS PARA LAS ETIQUETAS FINALES
Pages[page].get_Range(“C” + ((11 + fpos)) + “:C” + ((11 + fpos) – 1)).PasteSpecial(Excel.XlPasteType.xlPasteFormats, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
Pages[page].get_Range(“C” + ((11 + fpos)) + “:C” + ((11 + fpos) – 1)).NumberFormat = “0.0%”;
Pages[page].get_Range(“C” + ((11 + fpos) – 1)).Interior.Color = Color.Gray.ToArgb();
Pages[page].get_Range(“C” + ((11 + fpos) – 2)).NumberFormat = “#,##0.00”;
Pages[page].get_Range(“C” + ((11 + fpos) – 5)).Offset[0, 3].FormulaLocal = “=SI(ESERR(SUMA(” + “D12:D” + ((11 + fpos) – 5) + “)/SUMA(C12:C” + ((11 + fpos) – 5) + “)),0,SUMA(” + “D12:D” + ((11 + fpos) – 5) + “)/SUMA(C12:C” + ((11 + fpos) – 5) + “))”;
Pages[page].get_Range(“C” + ((11 + fpos) – 5)).Offset[0, 3].NumberFormat = “0.00%”;
String rangoCeldas = Pages[page].get_Range(“F12:F” + ((11 + fpos) – 5)).Address.Replace(“$”,””);
addBorders(rangoCeldas, true, true, true, true, “simple”, page);
rangoCeldas = Pages[page].get_Range(“B12:E” + ((11 + fpos) – 3)).Address.Replace(“$”, “”);
addBorders(rangoCeldas, true, true, true, true, “simple”, page);
Pages[page].get_Range(((11 + fpos) – 2) + “:” + ((11 + fpos) – 2)).Insert();
Excel.Range _r = Pages[page].get_Range(“B12:D” + ((11 + fpos) – 6));
Pages[page].get_Range(“B6”).Value2 = x_nombre;
Pages[page].get_Range(“B7:F7”).Value2 = “Periodo de Ocurrencia: ” + Convert.ToDateTime(dt.Rows[0][0].ToString()).ToString(“MMMM-yyyy”) + ” a ” + Convert.ToDateTime(dt.Rows[dt.Rows.Count – 9][0].ToString()).ToString(“MMMM-yyyy”);
Pages[page].Activate();
app.ActiveWindow.View = Excel.XlWindowView.xlPageBreakPreview;
Pages[page].PageSetup.PrintArea = “A1:G” + (11 + fpos + 5);
_r=Pages[page].get_Range(“B10:D”+(11+fpos-7));
float _LargoX = (float)(Pages[6].get_Range(“B6:K6”).Width);
float _LargoY = (float)(Pages[6].get_Range(“B6:B22″).Height);
DibujarGRaficas(_r,(page+1),1,”B6″,”Siniestralidad”,_LargoX,_LargoY);
}

}
catch (Exception ex)
{ throw ex; }

}
private void DibujarGRaficas(Excel.Range x_rango, int indiceHoja, int TipoGrafica, String posiGrafico, String x_nombre, float x_LargoX, float x_LargoY, Boolean x_tag = false,float x_p=0)
{
try
{
Excel.Range _range = x_rango;
Excel.Shape chart1 = Pages[indiceHoja].Shapes.AddChart();
Excel.Series s1 = null;
Excel.Series s2 = null;
Pages[indiceHoja].Activate();
switch (TipoGrafica)
{
case 1://GRAFICA TIPO LINEAL 2D
chart1.Chart.ChartType = Excel.XlChartType.xlLine;
chart1.Width = x_LargoX;
chart1.Height = x_LargoY;
var ejeX = (Excel.Axis)chart1.Chart.Axes(Excel.XlAxisType.xlValue, Excel.XlAxisGroup.xlPrimary);
ejeX.HasMajorGridlines = true;
chart1.Chart.SetSourceData(_range, Type.Missing);
chart1.Chart.HasTitle = true;
chart1.Chart.ChartTitle.Text = x_nombre;
chart1.Name = x_nombre;
s1 = (Excel.Series)chart1.Chart.SeriesCollection(1);
s2 = (Excel.Series)chart1.Chart.SeriesCollection(2);
s2.HasDataLabels = true;
s1.HasDataLabels = true;
s1.Name = “Aportes”;
s2.Name = “Siniestros”;
s1.MarkerForegroundColor = Color.Orange.ToArgb();
chart1.Top = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Top;
chart1.Left = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Left;
chart1.Chart.PlotBy = Excel.XlRowCol.xlColumns;
s1.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleDiamond;
s1.MarkerSize = 8;//**************************************************************Siniestro
s2.MarkerStyle = Excel.XlMarkerStyle.xlMarkerStyleSquare;
s2.MarkerSize = 7;
s2.Format.Line.ForeColor.RGB = (int)Excel.XlRgbColor.rgbGray;
s2.MarkerBackgroundColor = Color.Gray.ToArgb();
s1.Format.Line.ForeColor.RGB = (int)Excel.XlRgbColor.rgbOrangeRed;
s1.MarkerBackgroundColor = (int)Excel.XlRgbColor.rgbOrangeRed;
break;
case 2://GRAFICA TIPO PASTEL 3D.
chart1.Chart.ChartType = Excel.XlChartType.xl3DPieExploded;
if(x_p!=0)
chart1.Width = (x_LargoX-(x_p/2));
else
chart1.Width = x_LargoX;
chart1.Height = x_LargoY;
chart1.Name = x_nombre;
chart1.Chart.SetSourceData(_range, Type.Missing);
chart1.Chart.HasTitle = true;
chart1.Chart.ChartTitle.Text = x_nombre;
s1 = (Excel.Series)chart1.Chart.SeriesCollection(1);
chart1.Chart.ChartStyle = 266;
chart1.Top = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Top;
if(x_p!=0)
chart1.Left = x_p;
else
chart1.Left = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Left;

if (x_tag)
{
chart1.Chart.ApplyLayout(6);
//s1.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowLabelAndPercent);
//s1.DataLabels().Position = Excel.XlDataLabelPosition.xlLabelPositionOutsideEnd;
int k = s1.Points().Count;
if (k == 1)
k = 1;
else if (k > 2)
k = 2;
for (int i = 1; i <= k; i++)
{
Excel.Point p = s1.Points(i);
p.Format.Fill.Visible = Microsoft.Office.Core.MsoTriState.msoTrue;
p.Format.Fill.ForeColor.ObjectThemeColor = i == 1 ? Microsoft.Office.Core.MsoThemeColorIndex.msoThemeColorAccent6 : Microsoft.Office.Core.MsoThemeColorIndex.msoThemeColorBackground2;
p.Format.Fill.Solid();
}
chart1.Chart.SetElement(Microsoft.Office.Core.MsoChartElementType.msoElementDataLabelOutSideEnd);

}
else
{
chart1.Chart.ApplyLayout(7, chart1.Chart.ChartType);
s1.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowPercent);
}
break;
case 3://pie columns
chart1.Chart.ChartType = Excel.XlChartType.xl3DPieExploded;
chart1.Width = 650;
chart1.Height = 400;
chart1.Chart.SetSourceData(_range, Type.Missing);
chart1.Chart.HasTitle = true;
chart1.Chart.ChartTitle.Text = x_nombre;
s1 = (Excel.Series)chart1.Chart.SeriesCollection(1);
s1.HasDataLabels = true;
chart1.Chart.ApplyLayout(6, Excel.XlChartType.xl3DPieExploded);
chart1.Chart.ChartStyle = 266;
chart1.Chart.PlotBy = Excel.XlRowCol.xlColumns;
chart1.Top = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Top;
chart1.Left = (float)(double)Pages[indiceHoja].get_Range(posiGrafico).Left;
chart1.Chart.ApplyLayout(7, chart1.Chart.ChartType);
s1.ApplyDataLabels(Excel.XlDataLabelsType.xlDataLabelsShowPercent);
break;

}
chart1 = null;
s1 = null;
s2 = null;
}
catch (Exception ex)
{ throw ex; }
}
public int nData = 0;
public int nCal = 0;
Excel.Worksheet HojaTmp = null;
Excel.PivotTable pivotTable = null;
public void GenerarTAblaDinamica(int IndiceHoja,String NombreReport,String FilaBasePrimera,String ColPrimera,String NombreColP,String ColSegunda,String NombreS,String ColTercera,String NombreT,String ColPromedio,int TipoReporte,int filtrarCol,String x_Celda)
{
try
{
Excel.PivotCaches pivotCaches = null;//*********************************************************************variables para creacion de tabla dinamica y campos calculados
Excel.PivotCache pivotCache = null;
Excel.PivotFields pivotFields = null;
Excel.PivotField FilaCampo = null;
Excel.PivotField ColumnaPrimera = null;
Excel.CalculatedFields ColumnaPromedio = null;
int nroF = 0;
int ultimaFila = 0,posicion=0;
Excel.Range rangoTmp=null;
String rangoSuma = String.Empty;
String direccion1 = String.Empty;
String direccion2 = String.Empty;
String filaConteo = String.Empty;
String posActual = String.Empty;
String UlColumna=String.Empty;
String ColI = String.Empty;
String ColF = String.Empty;
String TGeneral = “”, TBene = “”, TCasos = “”, TPromedio = “”;
pivotCaches = workbook.PivotCaches();
ultimaFila = Pages[nData].UsedRange.Row + Pages[nData].UsedRange.Rows.Count – 1;
int fullRow = Pages[nData].Rows.Count;
int lastRow = Pages[nData].Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;
Excel.Range rango = null;
String Fila = String.Empty, CeldaInicial,ColData,ColValor;
String Columna = String.Empty;
String CellsPosition=String.Empty;
app.DisplayAlerts = false;
String NombreFiltro = String.Empty;
Excel.PivotField ColumnCalculada;
float _LargoX =0;
float _LargoY = 0;
if (IndiceHoja == 7 || IndiceHoja == 9)
{
AgregandoHojaTmp();
Fila = “A1”;
direccion1 = Pages[1].get_Range(Fila).End[Excel.XlDirection.xlToRight].Columns.Address;
NombreFiltro = IndiceHoja == 7 ? “Ambulatorio” : “Hospitalario”;
Fila = Fila + “:” + direccion1;
Fila = Fila.Replace(“$”, “”);
FiltrarXMejoresByColumn(Fila, NombreFiltro, 11);
Fila = CopiarData_a_Temp(1, Fila);
fullRow = HojaTmp.Rows.Count;
lastRow = HojaTmp.Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;
rango = this.HojaTmp.get_Range(“A1:T” + lastRow);
Pages[1].AutoFilterMode = false;
}
else
rango = this.Pages[nData].get_Range(“A1:T” + lastRow);

pivotCache = pivotCaches.Create(Excel.XlPivotTableSourceType.xlDatabase, rango);
pivotTable = pivotCache.CreatePivotTable(Pages[IndiceHoja].get_Range(x_Celda), NombreReport, Excel.XlPivotTableVersionList.xlPivotTableVersion14);
pivotFields = (Excel.PivotFields)pivotTable.PivotFields();
FilaCampo = (Excel.PivotField)pivotFields.Item(FilaBasePrimera);
FilaCampo.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
switch (TipoReporte)
{

case 1://SEXO-TIPO ATENCION-AMPARO-FORMA RECLAMO – PARENTESCO

ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColTercera);//mes año
ColumnaPrimera = pivotFields.Item(ColTercera);
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
ColumnaPrimera.Name = ColTercera;
ColumnaPrimera.Value = ColTercera;
ColumnaPrimera = pivotFields.Item(ColPrimera);//sumar Beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = pivotFields.Item(ColSegunda);//contar beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
Excel.PivotField SegundaFila = pivotTable.get_ColumnFields(2);//convirtiendo en fila Suma
SegundaFila.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
pivotTable.TableStyle2 = “Estilo1”;
CeldaInicial = Pages[IndiceHoja].get_Range(x_Celda).Offset[1,0].AddressLocal;//**********************************************CELDA DONDE SE IMPRIME EL PRIMER VALOR
CeldaInicial = CeldaInicial.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(CeldaInicial).Value2 = FilaBasePrimera;
Pages[IndiceHoja].get_Range(CeldaInicial).Offset[-1, 1].Value2 = “Mes y Año”;
ColData = “E”;
ColValor = “F”;
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
if (IndiceHoja == 4)//****************************************************************************************SEXO
{
AgregarColumnasCalculadas(IndiceHoja, FilaBasePrimera, 1, CeldaInicial, ColData, ColValor, 17);

}
else if (IndiceHoja == 11)//***************************************************************************************TIPO DE ATENCION
{
AgregarColumnasCalculadas(IndiceHoja, FilaBasePrimera, 4, CeldaInicial, ColData, ColValor, 17);
}
else if (IndiceHoja == 12)//***************************************************************************************AMPARO
{
AgregarColumnasCalculadas(IndiceHoja, FilaBasePrimera, 0, CeldaInicial, ColData, ColValor, 17);
}
else if (IndiceHoja == 13)//**************************************************************************************FORMA DE RECLAMO
{
AgregarColumnasCalculadas(IndiceHoja, FilaBasePrimera, 2, CeldaInicial, ColData, ColValor, 17);
}
else if(IndiceHoja==19)//****************************************************************************************PARENTESCO
{
AgregarColumnasCalculadas(IndiceHoja, FilaBasePrimera, 0, CeldaInicial, ColData, ColValor, 17);
}

break;
case 2://******************************************************************************************************************* PROVEEDOR (AMB-HOS)
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColPrimera);
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColSegunda);
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlCount;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
ColumnaPromedio = pivotTable.CalculatedFields();
ColumnCalculada = ColumnaPromedio.Add(“Prom. x Casos S/.”, “=BENEFICIO/NroCasos”, true);
pivotTable.AddDataField(ColumnCalculada);
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
HojaTmp.Delete();
AgregandoHojaTmp();
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].Address.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlDown].Address.Replace(“$”, “”);
TGeneral = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Value2);
TBene = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].Value2);
TCasos = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Offset[0, 2].Value2);
TPromedio = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Offset[0, 3].Value2);
Fila=SumarColumna_X(Pages[IndiceHoja].get_Range(x_Celda).Offset[2, 3].AddressLocal.ToString().Replace(“$”, “”), IndiceHoja);//************* SUMA DE COLUMNA CALCULADA Y GUARDADA EN A1 O A2
TPromedio = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Value2);
Filtrar_n_Mejores(FilaBasePrimera, NombreColP, 30);
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Columns.Address.Replace(“$”, “”);
Fila = CopiarData_a_Temp(IndiceHoja, Fila);
EliminarTablaDinamica(IndiceHoja);
Fila = CopiarTemp_a_Hoja(IndiceHoja, Fila,x_Celda);
HojaTmp.Delete();
Fila=SumarColumna_X(Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 3].AddressLocal.ToString().Replace(“$”, “”), IndiceHoja);//************* SUMA DE COLUMNA CALCULADA Y GUARDADA EN A1 O A2
Pages[IndiceHoja].get_Range(x_Celda).Value2 = FilaBasePrimera;
Pages[IndiceHoja].get_Range(x_Celda).Offset[0, 3].Value2 = “Prom. Por Caso”;//*********************************FILA OTROS
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Address.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Value2 = “OTROS”;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].Value2 = TGeneral;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 1].Value2 = TBene;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 2].Value2 = TCasos;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 3].Value2 = TPromedio;
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 1].AddressLocal.Replace(“$”, “”);
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count;
nroF = nroF – 4;
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 1].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;//SUMA BENEFICIOS
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 2].AddressLocal.Replace(“$”, “”);
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 2].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 2].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;// SUMA CASOS
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 3].AddressLocal.Replace(“$”, “”);
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 3].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 3].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;//SUM PROMEDIO
direccion2 = Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].Address;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 1].Address;
Fila = ObtenerRangoFormato(Fila, IndiceHoja);
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).NumberFormat = “#,##0.00”;
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).EntireColumn.AutoFit();
Cabecera_Roja_Gris(IndiceHoja, x_Celda, true);//*****************************************************FIJANDO COLOR SUPERIOR
Cabecera_Roja_Gris(IndiceHoja, direccion2, false);//*************************************************FIJANDO COLOR INFERIOR
direccion1 = ObtenerRangoFormato(x_Celda,IndiceHoja);
addBorders(direccion1, true, true, true, true, “simple”, IndiceHoja);//***************************** FIJANDO BORDES
Sumar_Otros(x_Celda, IndiceHoja);
Fila = “B6”;//***************************************************************************************INDICAMOS EN QUE CELDA VA ESCRIBIR LA DATA PARA GRAFICAR
CopiarData_en_HojaGrafica_nFilas(IndiceHoja, 15, x_Celda, (IndiceHoja + 1), Fila, true);
rangoTmp = ObtenerRangoGrafica(Fila, (IndiceHoja + 1));
_LargoX = (float)(Pages[6].get_Range(“B6:L6”).Width);
_LargoY = (float)(Pages[6].get_Range(“B6:B22”).Height);
FilaBasePrimera = IndiceHoja == 7 ? “Proveedores AMB” : “Proveedor HOSP”;
DibujarGRaficas(rangoTmp, (IndiceHoja+1), 2, Fila, FilaBasePrimera.ToUpper(), _LargoX, _LargoY,true);
Pages[IndiceHoja].get_Range(“A1:A2”).ClearContents();//********************************************FIJANDO AREAS DE IMPRESION Y DETALLES
_LargoY = (float)(Pages[IndiceHoja].get_Range(x_Celda,Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlToRight]).Width);
_LargoY = _LargoY / 2 – (60);
_LargoX = (float)(Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[2, 0].Top);
FijarLogoTipo2(IndiceHoja, _LargoX, _LargoY);
FijarAreaImpresion(IndiceHoja, x_Celda);
break;
case 3://*******************************************************************************************************************PROVEEDOR
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColPrimera);//*************************************************SUM BENEFICIO
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColSegunda);//**************************************************SUM NRO CASOS
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
ColumnaPromedio = pivotTable.CalculatedFields();//***************************************************************** COLUMNA CALCULADA
Excel.PivotField NpivotPromedioProveedor = ColumnaPromedio.Add(“Promedio x Casos S/.”, “=BENEFICIO/NroCasos”);
pivotTable.AddDataField(NpivotPromedioProveedor);
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);//****************************************************************ORDENANDO TABLA DINAMICA
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].End[Excel.XlDirection.xlDown].Address.ToString().Replace(“$”, “”);
TGeneral = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Value2);
TBene = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].Value2);
TCasos = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Offset[0, 2].Value2);
Fila=SumarColumna_X(Pages[IndiceHoja].get_Range(x_Celda).Offset[2, 3].AddressLocal.ToString().Replace(“$”, “”), IndiceHoja);//************* SUMA DE COLUMNA CALCULADA Y GUARDADA EN A1 O A2
TPromedio = Convert.ToString(Pages[IndiceHoja].get_Range(Fila).Value2);
Filtrar_n_Mejores(FilaBasePrimera, NombreColP, 30);
AgregandoHojaTmp();
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.ToString().Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Columns.Address;
Fila = CopiarData_a_Temp(IndiceHoja, Fila);
EliminarTablaDinamica(IndiceHoja);
Fila = CopiarTemp_a_Hoja(IndiceHoja, Fila, x_Celda);
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count;
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Address.Replace(“$”, “”);
Fila=SumarColumna_X(Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 3].AddressLocal.ToString().Replace(“$”, “”), IndiceHoja);//************* SUMA DE COLUMNA CALCULADA Y GUARDADA EN A1 O A2
Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[0, 3].Value2 = Pages[IndiceHoja].get_Range(Fila).Value2;//******* COLOCAMOS LA SUMA DE LA COLUMNA CALCULADA
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Value2 = “OTROS”;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].Value2 = TGeneral;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 1].Value2 = TBene;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 2].Value2 = TCasos;
Pages[IndiceHoja].get_Range(Fila).Offset[1, 3].Value2 = TPromedio;
Pages[IndiceHoja].get_Range(x_Celda).Value2 = FilaBasePrimera;//*************************************************************ETIQUETAS CABECERA
Pages[IndiceHoja].get_Range(x_Celda).Offset[0, 3].Value2 = “Prom. X Caso”;
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 1].AddressLocal.Replace(“$”, “”);
nroF = nroF – 3;
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 1].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;//***** SUM BENEFICIO
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 2].AddressLocal.Replace(“$”, “”);
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 2].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 2].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;//***** SUM OTROS
direccion1 = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 3].AddressLocal;
direccion2 = Pages[IndiceHoja].get_Range(direccion1).Offset[nroF, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[0, 3].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[1, 3].AddressLocal + ” -SUMA(” + direccion1 + “:” + direccion2 + “)”;//***** SUM OTROS
direccion2 = Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].Address;
Fila=Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 1].Address;
Fila = ObtenerRangoFormato(Fila, IndiceHoja);
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).NumberFormat = “#,##0.00”;
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).EntireColumn.AutoFit();
Cabecera_Roja_Gris(IndiceHoja, x_Celda, true);//*****************************************************FIJANDO COLOR SUPERIOR
Cabecera_Roja_Gris(IndiceHoja, direccion2, false);//*************************************************FIJANDO COLOR INFERIOR
direccion1 = ObtenerRangoFormato(x_Celda,IndiceHoja);
addBorders(direccion1, true, true, true, true, “simple”, IndiceHoja);
HojaTmp.Delete();
Sumar_Otros(x_Celda, IndiceHoja);//*******************************************************************SUMAMOS LOS OTROS EN BLANCO CON LOS OTROS QUE NO ESTAN EN LOS 30 MEJORES
Fila = “B6”;//***************************************************************************************INDICAMOS EN QUE CELDA VA ESCRIBIR LA DATA PARA GRAFICAR
CopiarData_en_HojaGrafica_nFilas(IndiceHoja, 15, x_Celda, (IndiceHoja + 1), Fila, true);
rangoTmp = ObtenerRangoGrafica(Fila, (IndiceHoja + 1));
_LargoX = (float)(Pages[6].get_Range(“B6:L6”).Width);
_LargoY = (float)(Pages[6].get_Range(“B6:B22”).Height);
DibujarGRaficas(rangoTmp, (IndiceHoja+1), 2, Fila, FilaBasePrimera.ToUpper(), _LargoX, _LargoY,true);
Pages[IndiceHoja].get_Range(“A1:A2”).ClearContents();
_LargoY = (float)(Pages[IndiceHoja].get_Range(x_Celda,Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlToRight]).Width);
_LargoY = _LargoY / 2 – (60);
_LargoX = (float)(Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[2, 0].Top);
FijarLogoTipo2(IndiceHoja, _LargoX, _LargoY);
FijarAreaImpresion(IndiceHoja, x_Celda);
break;
case 4:
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColTercera);
ColumnaPrimera = pivotFields.Item(ColTercera);
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlColumnField;
ColumnaPrimera.Name = ColTercera;
ColumnaPrimera.Value = ColTercera;
ColumnaPrimera = pivotFields.Item(ColPrimera);//sumar Beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = pivotFields.Item(ColSegunda); //contar beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
Excel.PivotField SegundaFilaS = pivotTable.get_ColumnFields(2);//convirtiendo en fila Suma
SegundaFilaS.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
pivotTable.TableStyle2 = “Estilo1”;
CeldaInicial = Pages[IndiceHoja].get_Range(“C12”).AddressLocal.Replace(“$”,””);//**********************************************CELDA DONDE SE IMPRIME EL PRIMER VALOR
ColData = “E”;
ColValor = “F”;
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
int nroRwos = Pages[IndiceHoja].get_Range(Fila,Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlDown]).Rows.Count;
nroRwos = nroRwos – 2;
Fila = Pages[IndiceHoja].get_Range(Fila).Offset[nroRwos, 0].Address.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[1, 3]).AddressLocal;
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).Copy();
Pages[IndiceHoja].get_Range(“h2”).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
Pages[IndiceHoja].get_Range(“h2”).PasteSpecial(Excel.XlPasteType.xlPasteFormats, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
ColF = app.Selection.Address;
Filtrar_n_Mejores(FilaBasePrimera, NombreColP, 20);
AgregandoHojaTmp();
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Columns.Address;
Fila = CopiarData_a_Temp(IndiceHoja, Fila);
EliminarTablaDinamica(IndiceHoja);
Fila = CopiarTemp_a_Hoja(IndiceHoja, Fila, x_Celda);
HojaTmp.Delete();
Fila = Pages[IndiceHoja].get_Range(“h2”, Pages[IndiceHoja].get_Range(“h2”).End[Excel.XlDirection.xlToRight]).AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlDown]).AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Copy();
ColF = Fila;
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlDown]).AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(ColF).ClearContents();
Pages[IndiceHoja].get_Range(ColF).ClearFormats();
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal;
Fila = Fila.Replace(“$”, “”);
ColF = Fila;
Pages[IndiceHoja].get_Range(Fila).Offset[-6, 0].Value2 = “OTROS”;//***********************SUMANDO TOTALES OTROS
double TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-3, 1].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-3, 1].Value2),3);
double TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-1, 1].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-1, 1].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-5, 1].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-5, 1].Value2;
TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-2, 1].Value2 == null ? 0 : Math.Round(Convert.ToDouble( Pages[IndiceHoja].get_Range(Fila).Offset[-2, 1].Value2),3);
TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-4, 1].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-4, 1].Value2;
TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-3, 2].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-3, 2].Value2),3);//************ COLUMNA 2
TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-1, 2].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-1, 2].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-5, 2].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-5, 2].Value2;
TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-2, 2].Value2 == null ? 0 : Math.Round(Convert.ToDouble( Pages[IndiceHoja].get_Range(Fila).Offset[-2, 2].Value2),3);
TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[0,2].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[0, 2].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-4, 2].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-4, 2].Value2;
TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-3, 3].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-3, 3].Value2),3);//************ COLUMNA 3
TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-1, 3].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[-1, 3].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-5, 3].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-5, 3].Value2;
TBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[-2, 3].Value2 == null ? 0 : Math.Round(Convert.ToDouble( Pages[IndiceHoja].get_Range(Fila).Offset[-2, 3].Value2),3);
TTBAMB = Pages[IndiceHoja].get_Range(Fila).Offset[0,3].Value2 == null ? 0 : Math.Round(Convert.ToDouble(Pages[IndiceHoja].get_Range(Fila).Offset[0, 3].Value2), 3);
Pages[IndiceHoja].get_Range(Fila).Offset[-4, 3].Value2 = (TTBAMB – TBAMB) + Pages[IndiceHoja].get_Range(Fila).Offset[-4, 3].Value2;
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal;
Fila = Fila.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Offset[-3, 0].EntireRow.Delete();
Pages[IndiceHoja].get_Range(Fila).Offset[-3, 0].EntireRow.Delete();
posicion = 3;
nroF=0;
nroRwos=Pages[IndiceHoja].get_Range(x_Celda,Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count;
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlToRight].Offset[2, 1].AddressLocal;
Fila = Fila.Replace(“$”, “”);
ColF = Fila;

while(nroF<nroRwos)
{
if (Pages[IndiceHoja].get_Range(Fila).Offset[0, -3].Value2 != null && Pages[IndiceHoja].get_Range(Fila).Offset[1, -3].Value2 !=null)
{
Pages[IndiceHoja].get_Range(Fila).FormulaLocal=”=”+Pages[IndiceHoja].get_Range(Fila).Offset[0,-3].AddressLocal +”/”+Pages[IndiceHoja].get_Range(Fila).Offset[1,-3].AddressLocal;
}
if (Pages[IndiceHoja].get_Range(Fila).Offset[0, -2].Value2 != null && Pages[IndiceHoja].get_Range(Fila).Offset[1, -2].Value2 != null)
{
Pages[IndiceHoja].get_Range(Fila).Offset[0,1].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[0, -2].AddressLocal + “/” + Pages[IndiceHoja].get_Range(Fila).Offset[1, -2].AddressLocal;
}

Fila = Pages[IndiceHoja].get_Range(Fila).Offset[posicion, 0].AddressLocal;
Fila = Fila.Replace(“$”, “”);
nroF=nroF+3;

}
Fila = Pages[IndiceHoja].get_Range(Fila).Offset[-3, 0].Address;
Pages[IndiceHoja].get_Range(Fila).Offset[0,0].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[-1, -3].AddressLocal + “/” + Pages[IndiceHoja].get_Range(Fila).Offset[0, -3].AddressLocal;
Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].FormulaLocal = “=” + Pages[IndiceHoja].get_Range(Fila).Offset[-1, -2].AddressLocal + “/” + Pages[IndiceHoja].get_Range(Fila).Offset[0, -2].AddressLocal;
Sumar_Otros(x_Celda, IndiceHoja, true);
Pages[IndiceHoja].get_Range(x_Celda).Value2 = “PROVEEDOR”;
Pages[IndiceHoja].get_Range(ColF).Offset[-2,0].Value2 = “Prom. x Caso AMB.”;
Pages[IndiceHoja].get_Range(ColF).Offset[-2,1].Value2 = “Prom. x Caso HOSP.”;
Cabecera_Roja_Gris(IndiceHoja, x_Celda, true);
ColF=ObtenerRangoFormato(x_Celda, IndiceHoja);
Pages[IndiceHoja].get_Range(ColF).EntireColumn.ColumnWidth = 10;
Pages[IndiceHoja].get_Range(ColF).EntireColumn.AutoFit();
//***************************************************************
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1,0].Address.Replace(“$”, “”);
nroF = Pages[IndiceHoja].get_Range(Fila,Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].End[Excel.XlDirection.xlDown]).Rows.Count – 4;
while (nroF > 0)
{
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Address.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila,Pages[IndiceHoja].get_Range(Fila).Offset[0,5]).Interior.Color = 128;
Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[0, 5]).Font.Color= Color.White;
Pages[IndiceHoja].get_Range(Fila).Font.Bold = true;
nroF=nroF-3;
}
//*********************
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal;//********************************************* IMPRIMIENDO COLOR DE FONFO MEJORAR ????
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[-1, 0].Address).AddressLocal;
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Offset[0, 2].AddressLocal;
Pages[IndiceHoja].get_Range(Fila).Interior.Color = Color.LightGray.ToArgb();
Pages[IndiceHoja].get_Range(Fila).Font.Bold = true;
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal;
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[-1, 0].Address).AddressLocal;
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).AddressLocal;
Pages[IndiceHoja].get_Range(Fila).Interior.Color = Color.LightGray.ToArgb();
Pages[IndiceHoja].get_Range(Fila).Font.Bold = true;
addBorders(ColF, true, true, true, true, “simple”, IndiceHoja);
FijarAreaImpresion(IndiceHoja, x_Celda);
break;

case 5://*************************SEVERIDAD Y FRECUENCIA y DIAGNOSTICO S,F
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColPrimera);//sumar Beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColSegunda);//contar beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
ColumnaPromedio = pivotTable.CalculatedFields();//Columna Calculada
Excel.PivotField NpivotPromedioProveedorCaso;
NpivotPromedioProveedorCaso = ColumnaPromedio.Add(“Promedio x Caso”, “=BENEFICIO/NroCasos”, true);
pivotTable.AddDataField(NpivotPromedioProveedorCaso);
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Fila = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Copy();
Pages[IndiceHoja].get_Range(“H2”).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
if (IndiceHoja == 15 || IndiceHoja == 17)//**********************************************Diagnostico Severidad
{ OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
Filtrar_n_Mejores(FilaBasePrimera, NombreColP, 30);//***********************************************************OBTENEMOS LOS 30 MEJORES
}
else//**************************************************************DIAGNOSTICO FRECUENCIA
{ OrdenarTablaDinamica(FilaBasePrimera, NombreS);
Filtrar_n_Mejores(FilaBasePrimera, NombreS, 30);//************************************************************OBTENMOS LOS 30 MEJORES
}
AgregandoHojaTmp();
ColF = Pages[IndiceHoja].get_Range(x_Celda).Offset[2, 0].Address;
ColF = Pages[IndiceHoja].get_Range(ColF,Pages[IndiceHoja].get_Range(ColF).End[Excel.XlDirection.xlToRight]).AddressLocal;
Fila=CopiarData_a_Temp(IndiceHoja, ColF.Replace(“$”,””));
EliminarTablaDinamica(IndiceHoja);
CopiarTemp_a_Hoja(IndiceHoja, Fila, x_Celda);
HojaTmp.Delete();
Fila = Pages[IndiceHoja].get_Range(“H2”, Pages[IndiceHoja].get_Range(“H2”).End[Excel.XlDirection.xlToRight]).AddressLocal;
Pages[IndiceHoja].get_Range(Fila.Replace(“$”, “”)).Copy();
ColF = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(ColF).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
ColData = “”;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[0, 1].AddressLocal.Replace(“$”, “”);
Fila = ObtenerRangoFormato(Fila, IndiceHoja);
Pages[IndiceHoja].get_Range(Fila).NumberFormat = “#,##0.00”;
Pages[IndiceHoja].get_Range(Fila).EntireColumn.AutoFit();
String StrTitulo = String.Empty;
if (IndiceHoja == 15 || IndiceHoja == 17)//*******************************************************************DIAGNOSTICO SEVERIDAD Y SEVERIDAD
{
StrTitulo = IndiceHoja == 15 ? “Total de 30 diagnósticos más consumidores por severidad” : “Total de 30 asegurados más consumidores por severidad”;
ColF = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[0, 1].Address;
ColData = Pages[IndiceHoja].get_Range(x_Celda).Offset[0, 1].AddressLocal.Replace(“$”, “”);
ColData = Pages[IndiceHoja].get_Range(ColData, Pages[IndiceHoja].get_Range(ColData).End[Excel.XlDirection.xlDown]).AddressLocal;
}
else if (IndiceHoja == 16 || IndiceHoja == 18)//**************************************************************** DIAGNOSTICO FRECUENCIA Y FRECUENCIA
{
StrTitulo = IndiceHoja == 15 ? “Total de 30 diagnósticos con mayor consumo por frecuencia” : “Total de 30 asegurados con mayor consumo (frecuencia)”;
ColF = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[0, 2].Address;
ColData = Pages[IndiceHoja].get_Range(x_Celda).Offset[0, 2].AddressLocal.Replace(“$”, “”);
ColData = Pages[IndiceHoja].get_Range(ColData, Pages[IndiceHoja].get_Range(ColData).End[Excel.XlDirection.xlDown]).AddressLocal;
}
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlToRight].Offset[0, 1].AddressLocal.Replace(“$”, “”);
ColI = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlToRight].End[Excel.XlDirection.xlDown].Offset[0, 1].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila + “:”+ ColI).FormulaLocal=”=”+ ColData + “/” +ColF;
Pages[IndiceHoja].get_Range(Fila + “:” + ColI).NumberFormat = “0.00%”;
Fila = Pages[IndiceHoja].get_Range(“H2”, Pages[IndiceHoja].get_Range(“H2”).End[Excel.XlDirection.xlToRight]).AddressLocal;
Pages[IndiceHoja].get_Range(Fila).ClearContents();
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Cabecera_Roja_Gris(IndiceHoja, Fila, false);
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[-1, 0].AddressLocal.Replace(“$”, “”);
Cabecera_Roja_Gris(IndiceHoja, Fila, true);
Fila = ObtenerRangoFormato(x_Celda, IndiceHoja);
addBorders(Fila, true, true, true, true, “simple”, IndiceHoja);//***************************** FIJANDO BORDES
float x = (float)(Pages[IndiceHoja].get_Range(“B7”,Pages[IndiceHoja].get_Range(“B7”).End[Excel.XlDirection.xlToRight]).Width);//*********************FIJANDO LOGO
x = (x/2) – 80;
nroF = Pages[IndiceHoja].get_Range(x_Celda,Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count-2;
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Value2 = StrTitulo; //************************************INSERTANDO SUBTITULO1
nroF = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].EntireRow.Row;

EtiquetasResumen(IndiceHoja, “B”,nroF , “F”);
float y = (float)(double)Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[7, 0].Top;
FijarLogoTipo2(IndiceHoja, y,x);
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).EntireRow.Insert();
Pages[IndiceHoja].get_Range(Pages[IndiceHoja].get_Range(Fila).EntireRow.Row + “:” + Pages[IndiceHoja].get_Range(Fila).EntireRow.Row).ClearFormats();
Fila = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).EntireRow.Insert();
Pages[IndiceHoja].get_Range(Pages[IndiceHoja].get_Range(Fila).EntireRow.Row + “:” + Pages[IndiceHoja].get_Range(Fila).EntireRow.Row).ClearFormats();
FijarAreaImpresion(IndiceHoja, x_Celda);
break;
case 7://*****************************************************************20 FAMILIAS CONSUMIDORAS
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColTercera);
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlRowField;
ColumnaPrimera.Name = ColTercera;
ColumnaPrimera.Value = ColTercera;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColPrimera);//sumar Beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColSegunda);//contar beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlCount;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Value2 = “TITULAR / Asegurado”;
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
Filtrar_n_Mejores(FilaBasePrimera, NombreColP, 20);
pivotTable.TableStyle2 = “Estilo1”;
Pages[IndiceHoja].get_Range(“B:B”).EntireColumn.ColumnWidth = 52;
Pages[IndiceHoja].get_Range(“D:D”).EntireColumn.ColumnWidth = 15;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].Address.Replace(“$”, “”);
FijarAreaImpresion(IndiceHoja, Fila);
break;
case 9://*****************************************************************ETAERO
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColPrimera); //sumar Beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlSum;
ColumnaPrimera.Name = NombreColP;
ColumnaPrimera.Value = NombreColP;
ColumnaPrimera = (Excel.PivotField)pivotFields.Item(ColSegunda);//contar beneficio
ColumnaPrimera.Orientation = Excel.XlPivotFieldOrientation.xlDataField;
ColumnaPrimera.Function = Excel.XlConsolidationFunction.xlCount;
ColumnaPrimera.Name = NombreS;
ColumnaPrimera.Value = NombreS;
ColumnaPromedio = pivotTable.CalculatedFields();//Columna Calculada
Excel.PivotField NpivotPromedio;
NpivotPromedio = ColumnaPromedio.Add(“Promedio x Casos S/.”, “=BENEFICIO/NroCasos”, true);
pivotTable.AddDataField(NpivotPromedio);
OrdenarTablaDinamica(FilaBasePrimera, NombreColP);
pivotTable.TableStyle2 = “Estilo1”;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila).Value2 = “Etaero”;
Pages[IndiceHoja].get_Range(Fila).Offset[-1,1].Value2 = “.”;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal;
ColData = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[-1, 1].AddressLocal;
Pages[IndiceHoja].get_Range(“d:d”).EntireColumn.ColumnWidth = 16;
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].AddressLocal.Replace(“$”, “”);
_LargoX = ((float)Pages[IndiceHoja].get_Range(Fila,Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Width);
_LargoY = 250;
rangoTmp = Pages[IndiceHoja].get_Range(Fila + “:” + ColData);
ColI = Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[2, 0].AddressLocal;
ColI = NombreColumna(ColI);
nroF = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].End[Excel.XlDirection.xlDown].Offset[2, 0].EntireRow.Row;
DibujarGRaficas(rangoTmp, IndiceHoja, 2, ColI + nroF, FilaBasePrimera.ToUpper(), _LargoX, _LargoY, true);
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[1, 0].Address.Replace(“$”, “”);
FijarAreaImpresion(IndiceHoja, Fila);
break;
}
app.DisplayAlerts = true;//***************************************limpiando
pivotTable = null;
pivotCaches = null;
pivotCache = null;
pivotFields = null;
FilaCampo = null;
ColumnaPrimera = null;
ColumnaPromedio = null;
app.CutCopyMode = (Microsoft.Office.Interop.Excel.XlCutCopyMode)0;
}
catch(Exception ex)
{
throw ex;
}
}

private void AgregarColumnasCalculadas(int IndiceHoja,String FilaBasePrimera,int tipoC,String x_CeldaInicial,String x_ICol1,String x_ICol2,int x_LargoG)
{
try
{
int ultimaFila = 0, total = 0, UFilaTabla = 0, posicion, refFilaUltima;
String Fila = “”, posActual, filaConteo = “”, Porc1 = “”, Porc2 = “”, Porc3 = “”, Nom1 = “”, Nom2 = “”, Nom3 = “”, direccion1, direccion2, CellsPosition, UlColumna, NomAPcasos = “”, NomAPpacientes = “”;
Excel.Range rangoTmp;
bool blEstilo = true;
ultimaFila = Pages[nData].UsedRange.Row + Pages[nData].UsedRange.Rows.Count – 1;
Pages[IndiceHoja].get_Range(x_CeldaInicial, Pages[IndiceHoja].get_Range(x_CeldaInicial).End[Excel.XlDirection.xlToRight]).NumberFormat = “mmm-yy”;
posicion = Pages[IndiceHoja].get_Range(x_CeldaInicial, Pages[IndiceHoja].get_Range(x_CeldaInicial).End[Excel.XlDirection.xlDown]).Rows.Count;
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[-1, 0].AddressLocal;
refFilaUltima = Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].End[Excel.XlDirection.xlDown].EntireRow.Row;
UlColumna = Pages[IndiceHoja].get_Range(x_CeldaInicial).End[Excel.XlDirection.xlToRight].Offset[0, 1].Address;
Pages[IndiceHoja].get_Range(UlColumna).Value2 = “Prome x Caso “;//***************************************************************************NOMBRE COLUMNA CALCULADA
if (IndiceHoja == 4 || IndiceHoja == 11 || IndiceHoja == 13)
{
Pages[IndiceHoja].get_Range(UlColumna).Offset[0, 1].Value2 = “N° paciente”;//****************************************************************NOMBRE COLUMNA CALCULADA
Pages[IndiceHoja].get_Range(UlColumna).Offset[0, 2].Value2 = “Costo prom x”;//***************************************************************NOMBRE COLUMNA CALCULADA
Pages[IndiceHoja].get_Range(UlColumna).Offset[0, 3].Value2 = “Frec. x paciente”;//***********************************************************NOMBRE COLUMNA CALCULADA
}
posicion = 2;
total = refFilaUltima;
posActual = UlColumna;
ultimaFila = 1;
UFilaTabla = Pages[IndiceHoja].get_Range(x_CeldaInicial, Pages[IndiceHoja].get_Range(x_CeldaInicial).End[Excel.XlDirection.xlDown]).Rows.Count; //nuevo test
int nrofila = 1;
while (ultimaFila < (UFilaTabla – 2))//******************************************************************************************************GENERA DATA EN LAS COLUMNAS CALUCLADAS
{
Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].FormulaLocal = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Offset[0, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Offset[1, -1].Value2;

//***************************************************************************************************************************************JUNTANDO DATA PARA GRAFICAR GRAFICA
Pages[IndiceHoja].get_Range(x_ICol1 + (total+1)).Offset[nrofila, 0].Value2 = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[ultimaFila, 0].Value2;
Pages[IndiceHoja].get_Range(x_ICol2 + (total+1)).Offset[nrofila, 0].Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Offset[0, -1].Value2;

//****************************************************************************************************************************************FIN DATA
if (IndiceHoja == 4 || IndiceHoja == 11 || IndiceHoja == 13)
{
int _n = Tipo_Columna(IndiceHoja);
Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 1].Value2 = ContarUnicos_Campo_X(Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[ultimaFila, 0].Value2, 1, _n);
Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 2].FormulaLocal = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 1].Value2;
Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 3].FormulaLocal = Pages[IndiceHoja].get_Range(posActual).Offset[(posicion + 1), -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 1].Value2;
posActual = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Address;
Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].FormulaLocal = “=REDONDEAR(” + Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].Value2 + “,0)”;
if (tipoC == 2)
{

Pages[IndiceHoja].get_Range(“F” + (total + 5)).Offset[nrofila, 0].Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[0, 0].Value2; //nose que ahce
Pages[IndiceHoja].get_Range(“G” + (total + 5)).Offset[nrofila, 0].Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[0, 2].Value2; //nose que hace

}
}
else
{ posActual = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Address;}
ultimaFila += 3;
posicion = 3;
nrofila++;
}
//***********************************************************************************************************************************************OBTENIENDO PORCENTAJES
//nrofila–;

if (IndiceHoja == 4 || IndiceHoja == 11 || IndiceHoja == 13)//*************************************: 4=SEXO Y 11= TIPO ATENCION
{
//Fila=Pages[IndiceHoja].get_Range(x_CeldaInicial).End[Excel.XlDirection.xlDown].Offset[2,2].AddressLocal;
//Pages[IndiceHoja].get_Range(x_ICol2 + (total + nrofila)).Offset[1, 0].FormulaLocal = “=SUMA(” + Pages[IndiceHoja].get_Range(x_ICol2 + (total) + “:” + x_ICol2 + (total + nrofila)).Address + “)”;//*************POR DEFECTO SOLO CALCULA PROMEDIO
//Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].FormulaLocal = “=SUMA(” + Pages[IndiceHoja].get_Range(Fila).Offset[0,1].AddressLocal + “:” + x_ICol2 + (total + nrofila)).Address + “)”;//*************POR DEFECTO SOLO CALCULA PROMEDIO

//Fila = Pages[IndiceHoja].get_Range(x_ICol2 + (total)).Offset[1, 0].AddressLocal.Replace(“$”, “”);
////Fila = Fila.Replace(“$”, “”);
//direccion1 = Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].AddressLocal.Replace(“$”, “”);
////direccion1 = direccion1.Replace(“$”, “”);
//direccion1 = direccion1.Substring(0, 1);
//Pages[IndiceHoja].get_Range(direccion1 + (total + 1) + “:” + direccion1 + (total + nrofila)).FormulaLocal = “=” + (Fila + “/” + Pages[IndiceHoja].get_Range(x_ICol2 + (total + nrofila)).Offset[1, 0].Address);
//Pages[IndiceHoja].get_Range(direccion1 + (total + 1) + “:” + direccion1 + (total + nrofila)).NumberFormat = “0.00%”;
posActual = Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].Address;//************************************************* COPIANDO FORMATO DE TABLA DINAMICA A VALORES AGREGADOS
direccion1 = Pages[IndiceHoja].get_Range(Pages[IndiceHoja].get_Range(UlColumna).Offset[1, 1], Pages[IndiceHoja].get_Range(posActual).Offset[-1, 1]).Address;
direccion2 = Pages[IndiceHoja].get_Range(UlColumna).Offset[-1, 0].Address;
Pages[IndiceHoja].get_Range(posActual).Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[-1, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[0, -1].Value2;
Pages[IndiceHoja].get_Range(posActual).Offset[0, 1].FormulaLocal = “=SUMA(” + direccion1 + “)”;
Pages[IndiceHoja].get_Range(posActual).Offset[0, 2].Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[-1, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[0, 1].Value2;
Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].Value2 = Pages[IndiceHoja].get_Range(posActual).Offset[0, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[0, 1].Value2;
Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].FormulaLocal = “=REDONDEAR(” + Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].Value2 + “,0)”;
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[-1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila + “:C” + (refFilaUltima – 1)).Copy(Type.Missing);
direccion1 = Pages[IndiceHoja].get_Range(posActual).Offset[0, 3].Address;
}
else
{
Pages[IndiceHoja].get_Range(posActual).Offset[posicion, 0].FormulaLocal = Pages[IndiceHoja].get_Range(posActual).Offset[2, -1].Value2 / Pages[IndiceHoja].get_Range(posActual).Offset[posicion, -1].Value2;
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[-1, 0].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila + “:C” + (refFilaUltima – 1)).Copy(Type.Missing);
direccion2 = Pages[IndiceHoja].get_Range(UlColumna).Offset[-1, 0].Address;
direccion1 = Pages[IndiceHoja].get_Range(posActual).Offset[3, 0].Address;

}
rangoTmp = Pages[IndiceHoja].get_Range(direccion1, direccion2);
rangoTmp.PasteSpecial(Excel.XlPasteType.xlPasteFormats, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
//*****************************COMBINANDO CELDAS EN LAS CABECERAS AGREGADAS
Pages[IndiceHoja].get_Range(direccion2, Pages[IndiceHoja].get_Range(direccion2).Offset[1, 0].AddressLocal).Merge();//******************************PROMEDIO POR CASO
Fila = Pages[IndiceHoja].get_Range(direccion2).Offset[0, 1].AddressLocal.Replace(“$”, “”);
if (IndiceHoja == 4 || IndiceHoja == 11)//*************************** 4=SEXO Y 11 = TIPO ATENCION
{
Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].AddressLocal).Merge();
Fila = Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].AddressLocal).Merge();//*****************************************COSTO PROM X
Fila = Pages[IndiceHoja].get_Range(Fila).Offset[0, 1].AddressLocal.Replace(“$”, “”);
Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).Offset[1, 0].AddressLocal).Merge();//*****************************************COSTO PROM X

}
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[2, 1].Address.Replace(“$”,””);
Fila = Fila + “:” + direccion1.Replace(“$”,””);
rangoTmp = Pages[IndiceHoja].get_Range(Fila);
rangoTmp.NumberFormat = “#,##0.00”;
rangoTmp.ColumnWidth = 11.5;
rangoTmp.EntireColumn.WrapText = true;
rangoTmp.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
rangoTmp.HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;//***********************************************************************************REALIZANDO GRAFICA
CellsPosition = Pages[IndiceHoja].get_Range(x_ICol1 + (total + 2)).Address;
rangoTmp = ObtenerRangoGrafica(CellsPosition, IndiceHoja);
x_ICol1 = x_ICol1.Substring(0, 1);
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[2, 0].AddressLocal.Replace(“$”, “”);
float _LargoX = (float)(Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Width);
float _LargoY = (float)(Pages[IndiceHoja].get_Range(x_ICol1 + (total + 1) + “:” + x_ICol1 + (total + x_LargoG)).Height);
float _y = (15 * _LargoX)/100;
_y = ((float)Pages[IndiceHoja].get_Range(x_ICol1 + (total + 2)).Offset[0, -3].Left) + (_y/2);
DibujarGRaficas(rangoTmp, IndiceHoja, 2, x_ICol1 + (total + 2), FilaBasePrimera.ToUpper(), _LargoX, _LargoY, blEstilo,_y);
Fila = Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight].AddressLocal.Replace(“$”, “”).Substring(0, 1);
EtiquetasResumen(IndiceHoja, “C”, (total+1 + x_LargoG++), Fila);
if (IndiceHoja == 4 || IndiceHoja == 11 || IndiceHoja == 12 || IndiceHoja == 13 || IndiceHoja == 19)//******************************************************************************************************************************SEXO, TIPO ATENCION
{
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[2, 0].AddressLocal.Replace(“$”, “”);
_LargoX = (float)Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Width;
_LargoX = _LargoX / 2;
_LargoX = _LargoX – 50;
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).AddressLocal.Replace(“$”, “”).Substring(0, 1);//***********************************************************************IMPRIMIENDO LOGO
Fila=Fila + (total + x_LargoG + 7);
_LargoY = (float)Pages[IndiceHoja].get_Range(Fila).Top;
FijarLogoTipo2(IndiceHoja, _LargoY, _LargoX);
Fila = Pages[IndiceHoja].get_Range(x_CeldaInicial).Offset[2, 0].Address.Replace(“$”, “”);
total = Pages[IndiceHoja].get_Range(Fila, Pages[IndiceHoja].get_Range(Fila).End[Excel.XlDirection.xlToRight]).Columns.Count-1;
Pages[IndiceHoja].get_Range(“C2:” + Pages[IndiceHoja].get_Range(“C2”).Offset[0, total].AddressLocal).Merge();
Pages[IndiceHoja].get_Range(“C3:” + Pages[IndiceHoja].get_Range(“C3”).Offset[0, total].AddressLocal).Merge();
Pages[IndiceHoja].get_Range(“C3”).Value2 = Pages[2].get_Range(“B6”).Value2;
Pages[IndiceHoja].get_Range(“C4:” + Pages[IndiceHoja].get_Range(“C4”).Offset[0, total].AddressLocal).Merge();
Pages[IndiceHoja].get_Range(“C4”).Value2 = Pages[2].get_Range(“B7”).Value2;
Pages[IndiceHoja].get_Range(“C5:” + Pages[IndiceHoja].get_Range(“C5”).Offset[0, total].AddressLocal).Merge();
Pages[IndiceHoja].get_Range(“C5”).Value2 = Pages[2].get_Range(“B8”).Value2;
Pages[IndiceHoja].get_Range(“A:B”).ColumnWidth = 6;
Pages[IndiceHoja].get_Range(“C:D”).ColumnWidth = 13;

}
FijarAreaImpresion(IndiceHoja, x_CeldaInicial);

}
catch (Exception ex)
{ throw ex; }
}

private Excel.Range ObtenerRangoGrafica(String x_posInicial,int IHoja)
{
try
{
Excel.Range _r=null;
if (Pages[IHoja].get_Range(x_posInicial).Offset[1, 0].Value2 ==null)
_r = Pages[IHoja].get_Range(x_posInicial, Pages[IHoja].get_Range(x_posInicial).Offset[0, 1].Address);
else
{
_r = Pages[IHoja].get_Range(x_posInicial, Pages[IHoja].get_Range(x_posInicial).Offset[0, 1].Address);
_r = _r = Pages[IHoja].get_Range(_r, _r.End[Excel.XlDirection.xlDown]);
}
return _r;
}
catch (Exception ex)
{
throw ex;
}
}
private void GenerarUnique(String Letra,String NombreCabecera,String CampoBusqueda)
{
try
{
int f = 1;
Pages[nCal].get_Range(Letra + “1”).Value2 = NombreCabecera;//*************************** NOMBRE DE LA CABECERA DONDE SE ESCRIBIRA LA FORMULA
int fullRow = Pages[nData].Rows.Count;
int lastRow = Pages[nData].Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;
Pages[nCal].get_Range(Letra + “2:” + Letra + lastRow).FormulaLocal = “=SI(CONTAR.SI.CONJUNTO(GENERAL!$F$2:F” + (f + 1) + “,GENERAL!F” + (f + 1) + “,GENERAL!$” + CampoBusqueda + “$2:” + CampoBusqueda + (f + 1) + “,GENERAL!” + CampoBusqueda + (f + 1) + “)>1,0,1)”;
}
catch (Exception ex)
{ throw ex; }
}

public void CerrarProceso(int indice)
{
try
{
Pages[indice].get_Range(“V:Z”).EntireColumn.Hidden = true;
Pages[nData].get_Range(“T:U”).EntireColumn.Hidden = true;
app.ScreenUpdating = true;
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);
}
catch (Exception ex)
{ throw ex; }
}
public void Limpiar()
{
try
{
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(app);
System.Runtime.InteropServices.Marshal.FinalReleaseComObject(workbook);
}
catch (Exception ex)
{ throw ex; }
}
//FRECUENCIA Y SEVERIDAD IMPRIMIENDO ETQUETAS FINALES
private void EtiquetasResumen(int x_H, String x_ICol1,int PosInicial, String x_FCol)
{
try
{
PosInicial++;
String x_rango = x_ICol1 + (PosInicial + 1) + “:” + x_FCol + (PosInicial + 4);
Pages[x_H].get_Range(x_rango).Merge();
Pages[x_H].get_Range(x_rango).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
Pages[x_H].get_Range(x_rango).HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter;
Pages[x_H].get_Range(x_rango).Font.Bold = true;
Pages[x_H].get_Range(x_rango).WrapText = true;
Pages[x_H].get_Range(x_rango).Interior.Color = Color.White.ToArgb();
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeTop].Color = Color.Black.ToArgb();
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = Color.Black.ToArgb();
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = Color.Black.ToArgb();
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
Pages[x_H].get_Range(x_rango).Borders[Excel.XlBordersIndex.xlEdgeRight].Color = Color.Black.ToArgb();
}
catch (Exception ex)
{ throw ex; }

}
private void ImprimirTotales(int x_pos,int x_fila,String x_ColO1,String x_ColO2,String x_ColS1,String x_ColS2,String EtiquetaFinal,int n)
{
int x_porTmp = x_pos;
int fullRow = Pages[nData].Rows.Count;
x_pos = Pages[nData].Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;
String Fila = Pages[nData].get_Range(x_ColO1+”2″, x_ColO1 + (x_pos)).AddressLocal;
String filaSuma = Pages[nData].get_Range(x_ColO2+”2″, x_ColO2 + (x_pos)).AddressLocal;
x_pos = x_porTmp;
while (Pages[x_pos].get_Range(x_ColS1 + x_fila).Value2 != EtiquetaFinal)
{
string criterio = Pages[x_pos].get_Range(x_ColS1 + x_fila).Value2;
Pages[x_pos].get_Range(x_ColS2 + x_fila).FormulaLocal = “=SUMAR.SI(GENERAL!” + Fila + “,\”” + criterio + “\”,SINIESTRALIDAD!” + filaSuma + “)”;
x_fila++;
}
Pages[x_pos].get_Range(x_ColS1 + (x_porTmp-1), x_ColS1 + x_fila).Copy();
Pages[x_pos].get_Range(x_ColS2 + (x_porTmp-1), x_ColS2 + x_fila).PasteSpecial(Excel.XlPasteType.xlPasteFormats, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
switch (n)
{
case 1:
Fila = Pages[x_pos].get_Range(x_ColS2 + x_porTmp, x_ColS2 + (x_fila – 1)).AddressLocal;
Pages[x_pos].get_Range(x_ColS2 + x_fila).FormulaLocal = “=SUMA(” + Fila + “)”;
break;
case 2:
Fila = Pages[x_pos].get_Range(x_ColS2 + x_porTmp, x_ColS2 + (x_fila – 1)).AddressLocal;
Pages[x_pos].get_Range(“A1″).FormulaLocal=”=SUMA(” + Fila + “)”;
Pages[x_pos].get_Range(x_ColS2 + x_fila).FormulaLocal = “=SUMA(SINIESTRALIDAD!” + filaSuma + “)”;
Pages[x_pos].get_Range(x_ColS2 + x_fila).Offset[-1, 0].Value2 = Pages[x_pos].get_Range(x_ColS2 + x_fila).Value2 – Pages[x_pos].get_Range(“A1”).Value2;
Pages[x_pos].get_Range(“A1”).Value2 = “”;
break;
}

}

private void CabeceraTablas(int f,int tamano,int x_hoja)
{
Pages[x_hoja].get_Range(f+”:”+f).RowHeight=tamano;
Pages[x_hoja].get_Range(f + “:” + f).VerticalAlignment = Excel.XlVAlign.xlVAlignCenter;
Pages[x_hoja].get_Range(f + “:” + f).HorizontalAlignment = Excel.XlHAlign.xlHAlignCenter;
Pages[x_hoja].get_Range(f + “:” + f).WrapText = true;
}
public void LLenarCabeceras(String fil_ini, String fil_fin, String col_ini, String col_fin, int IndiceHoja,bool cabecera)
{
try
{
Excel.Range _range = Pages[IndiceHoja].get_Range(fil_ini + “:” + fil_fin, col_ini + “:” + col_fin);
_range.EntireRow.ColumnWidth = 10;
_range.Font.Color = Color.White.ToArgb();
_range.Font.Bold = true;
_range.Interior.Color = Color.LightGray.ToArgb();
_range.EntireColumn.AutoFit();
if(cabecera)
_range.RowHeight = 45;

}
catch (Exception ex)
{
throw ex;
}
}

private void ImprimirEtiqueInfo(int x_indice,String x_nroFI,String NomColF,Boolean x_border=false)
{
try
{
Pages[x_indice].get_Range(x_nroFI + “:” + NomColF).Merge();
}
catch (Exception ex)
{ throw ex; }
}

private void FijarLogo(int x_indice,String NomCelda)
{
try
{
Pages[x_indice].Activate();
Pages[x_indice].get_Range(NomCelda).Select();
float posTop = (float)(double)Pages[x_indice].get_Range(NomCelda).Top;
float posLeft = (float)(double)Pages[x_indice].get_Range(NomCelda).Left;

string m_patch = System.AppDomain.CurrentDomain.BaseDirectory;
String rutaLogo = @”\Plantillas Excel\Consejeros.png”;
rutaLogo = m_patch + rutaLogo;
Pages[x_indice].Shapes.AddPicture(rutaLogo, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue, posLeft, posTop, 120, 45);
}
catch (Exception ex)
{ throw ex; }
}
private void FijarLogoTipo2(int x_indice, float x_pos,float y_post)
{
try
{
string m_patch = System.AppDomain.CurrentDomain.BaseDirectory;
String rutaLogo = @”\Plantillas Excel\Consejeros.png”;
rutaLogo = m_patch + rutaLogo;
Pages[x_indice].Shapes.AddPicture(rutaLogo, Microsoft.Office.Core.MsoTriState.msoTrue, Microsoft.Office.Core.MsoTriState.msoTrue, y_post, x_pos, 120, 45);
}
catch (Exception ex)
{ throw ex; }
}

public void addBorders(String fil_ini, String fil_fin, String col_ini, String col_fin, Boolean top, Boolean button, Boolean left, Boolean right, String StyleLine, int IndiceHoja)
{
try
{
Excel.Range _range = Pages[IndiceHoja].get_Range(fil_ini + “:” + fil_fin, col_ini + “:” + col_fin);
switch (StyleLine)
{

case “simple”:
if (top)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.Color.Black.ToArgb();
_range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Color = System.Drawing.Color.Black.ToArgb();
_range.Borders[Excel.XlBordersIndex.xlInsideVertical].Color = System.Drawing.Color.Black.ToArgb();

}
if (button)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.Color.Black.ToArgb();
}
if (left)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.Color.Black.ToArgb();
}
if (right)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.Color.Black.ToArgb();
}
break;

}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}

}
public void addBorders(String x_Rango, Boolean top, Boolean button, Boolean left, Boolean right, String StyleLine, int IndiceHoja)
{
try
{ Excel.Range _range = Pages[IndiceHoja].get_Range(x_Rango);
switch (StyleLine)
{

case “simple”:
if (top)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeTop].Color = System.Drawing.Color.Black.ToArgb();
_range.Borders[Excel.XlBordersIndex.xlInsideHorizontal].Color = System.Drawing.Color.Black.ToArgb();
_range.Borders[Excel.XlBordersIndex.xlInsideVertical].Color = System.Drawing.Color.Black.ToArgb();

}
if (button)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeBottom].Color = System.Drawing.Color.Black.ToArgb();
}
if (left)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeLeft].Color = System.Drawing.Color.Black.ToArgb();
}
if (right)
{
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
_range.Borders[Excel.XlBordersIndex.xlEdgeRight].Color = System.Drawing.Color.Black.ToArgb();
}
break;

}
}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

public void addDataListGeneral(Int32 page, DataTable dt, Int32 x_ColumnaInicial, Int32 x_FilaInicial, bool x_setTiposDatos = true, bool x_autoFit = true, bool x_definirAnchoCoumn = false, String x_columnaLetra = “XFD”, Int32 x_anchoColumna = 1, bool x_sizeFont = true, bool x_setBorder = true, bool x_repindividual = false, bool x_orientacionhorizontal = false, bool x_generalsiniestros = false, int x_escala = 100, int x_tamañoletra = 10)
{
try
{
object[,] datos = new object[dt.Rows.Count, dt.Columns.Count];
if (dt.Rows.Count > 0)
{

int f =0;
for (f= 0; f < dt.Rows.Count; f++)
{
for (int c = 0; c < dt.Columns.Count; c++)
{
datos[f, c] = dt.Rows[f][c];
}
}
workSheet_range = Pages[page].Range[Pages[page].Cells[x_FilaInicial, x_ColumnaInicial],Pages[page].Cells[dt.Rows.Count +1, dt.Columns.Count ]];
workSheet_range.Value2 = datos;
}

}
catch (Exception ex)
{
workbook = null;
app = null;
throw (ex);
}
}

private void AgregandoHojaTmp()
{
try
{
HojaTmp = app.Worksheets.Add();
HojaTmp.Name = “Temporal”;
}
catch (Exception ex)
{ throw ex; }
}
private String CopiarData_a_Temp(int IndiceHoja, String x_Fila)
{
try
{
String Fila;
Excel.Range NuevoRango = HojaTmp.get_Range(“A1”);
Pages[IndiceHoja].get_Range(x_Fila, Pages[IndiceHoja].get_Range(x_Fila).End[Excel.XlDirection.xlDown]).Copy();
NuevoRango.PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
Fila = HojaTmp.get_Range(“A1”, HojaTmp.get_Range(“A1”).End[Excel.XlDirection.xlToRight]).AddressLocal;
Fila = Fila.Replace(“$”, “”);
return Fila;
}
catch (Exception ex)
{ throw ex; }
}
private String CopiarTemp_a_Hoja(int IndiceHoja, String x_Fila,String x_celda)
{
try
{
String Fila;
Excel.Range NuevoRango = Pages[IndiceHoja].get_Range(x_celda);
HojaTmp.get_Range(x_Fila, HojaTmp.get_Range(x_Fila).End[Excel.XlDirection.xlDown]).Copy();
NuevoRango.PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
Fila = Pages[IndiceHoja].get_Range(“A1”, Pages[IndiceHoja].get_Range(“A1”).End[Excel.XlDirection.xlToRight]).AddressLocal;
Fila = Fila.Replace(“$”, “”);
return Fila;
}
catch (Exception ex)
{ throw ex; }
}
private void OrdenarDataTemp(String x_Fila,String FilterCol)
{
try
{
HojaTmp.Sort.SetRange(HojaTmp.get_Range(x_Fila, HojaTmp.get_Range(x_Fila).End[Excel.XlDirection.xlDown]));
HojaTmp.Sort.Header = Excel.XlYesNoGuess.xlYes;
HojaTmp.Sort.SortFields.Add(HojaTmp.get_Range(FilterCol, HojaTmp.get_Range(FilterCol).End[Excel.XlDirection.xlDown]), Excel.XlSortOn.xlSortOnValues, Excel.XlSortOrder.xlDescending);
HojaTmp.Sort.Apply();
}
catch (Exception ex)
{
throw ex;
}

}
private void FiltrarXMejores(String Fila,String x_Mejor,int indiceColumna)
{
try
{
Excel.Range NuevoRango;
x_Mejor = @”” + x_Mejor + @””;
NuevoRango = HojaTmp.get_Range(Fila, HojaTmp.get_Range(Fila).End[Excel.XlDirection.xlDown]);
NuevoRango.AutoFilter(indiceColumna, “” + x_Mejor + “”, Excel.XlAutoFilterOperator.xlTop10Items);//******************************************************************filtramos los N mejores
NuevoRango.NumberFormat = “#,##0.00″;//*************************************************************************************************************formato numerico
}
catch (Exception ex)
{
throw ex;
}
}
private void FiltrarXMejoresByColumn(String Fila, String x_Mejor, int indiceColumna)
{
try
{
Excel.Range NuevoRango;
x_Mejor = @”” + x_Mejor + @””;
NuevoRango = Pages[1].get_Range(Fila, Pages[1].get_Range(Fila).End[Excel.XlDirection.xlDown]);
NuevoRango.AutoFilter(indiceColumna, x_Mejor, Excel.XlAutoFilterOperator.xlFilterValues);//******************************************************************filtramos los 30 mejores
}
catch(Exception ex)
{
throw ex;
}
}
private String NombreColumna(String Columna)
{
try
{
String rpta;
Columna = Columna.Replace(“$”, “”);
if (Columna.IndexOf(“:”) > 0)
{
rpta = Columna.Substring(Columna.IndexOf(“:”) + 1, 1);
}
else
rpta = Columna.Substring(0, 1);
return rpta;
}
catch (Exception ex)
{
throw ex;
}
}
private String ObtenerUltimaFilaColumna(String Celda,int IndiceHoja,Boolean flag=false)
{
try{

String f;
if (flag)
f = Pages[IndiceHoja].get_Range(Celda).End[Excel.XlDirection.xlDown].Offset[2, 0].Address;
else
f = Pages[IndiceHoja].get_Range(Celda).End[Excel.XlDirection.xlDown].Offset[1, 0].Address.Replace(“$”, “”);
return f;
}
catch(Exception ex)
{
throw ex;
}

}

private void OrdenarTablaDinamica(String x_ColumnBase,String x_ColSortNombre)
{
try
{
pivotTable.PivotFields(x_ColumnBase).AutoSort(Excel.XlSortOrder.xlDescending, x_ColSortNombre);
}
catch (Exception ex)
{ throw ex; }
}

private void Filtrar_n_Mejores(String x_ColumnBase,String x_Nombre,int x_nroTop)
{ try
{
pivotTable.PivotFields(x_ColumnBase).PivotFilters.Add2(Excel.XlPivotFilterType.xlTopCount, pivotTable.PivotFields(x_Nombre), x_nroTop);
}
catch(Exception ex)
{
throw ex;
}
}

private String ObtenerRangoFormato(String x_Celda, int x_indice)
{
try
{
String _r;
_r = Pages[x_indice].get_Range(x_Celda, Pages[x_indice].get_Range(x_Celda).End[Excel.XlDirection.xlToRight]).AddressLocal.Replace(“$”, “”);
_r = Pages[x_indice].get_Range(_r, Pages[x_indice].get_Range(_r).End[Excel.XlDirection.xlDown]).AddressLocal.Replace(“$”, “”);
return _r;
}
catch (Exception ex)
{ throw ex; }
}
private void EliminarTablaDinamica(int IndiceHoja)
{
try
{
Pages[IndiceHoja].Activate();
pivotTable.PivotSelect(“”, Excel.XlPTSelectionMode.xlDataAndLabel, true);
Excel.Range r = app.Selection;
r.ClearContents();
}
catch (Exception ex)
{ throw ex;}
}

private void Cabecera_Roja_Gris(int x_IndiceHoja,String x_celda, Boolean x_flag)
{
String x_direccion = Pages[x_IndiceHoja].get_Range(x_celda, Pages[x_IndiceHoja].get_Range(x_celda).End[Excel.XlDirection.xlToRight]).AddressLocal;//****************** SELECCION RANGO SUPÉRIOR o INFERIOR
if (x_flag)
{
Pages[x_IndiceHoja].get_Range(x_direccion).Interior.Color = Color.LightGray.ToArgb();
Pages[x_IndiceHoja].get_Range(x_direccion).Font.Bold = true;
}
else
{
Pages[x_IndiceHoja].get_Range(x_direccion).Interior.Color = 128;
Pages[x_IndiceHoja].get_Range(x_direccion).Font.ThemeColor = Excel.XlThemeColor.xlThemeColorDark1;
Pages[x_IndiceHoja].get_Range(x_direccion).Font.Bold = true;
}
}

private String CopiarData_en_HojaGrafica_nFilas(int x_Iinio,int x_nrofilas,String X_CeldaI,int x_Idestino,String x_CeldaD,Boolean x_CopiaFilaOtros=false)
{
try
{
String _r = String.Empty;
_r = Pages[x_Iinio].get_Range(X_CeldaI).Offset[x_nrofilas, 1].AddressLocal;
_r = X_CeldaI+”:”+_r.Replace(“$”, “”);
Pages[x_Iinio].get_Range(_r).Copy();
Pages[x_Idestino].get_Range(x_CeldaD).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
_r = Pages[x_Idestino].get_Range(x_CeldaD).End[Excel.XlDirection.xlDown].AddressLocal;
_r = _r.Replace(“$”,””);
if (x_CopiaFilaOtros)
{
String _tmp = _r;
_r = Pages[x_Iinio].get_Range(X_CeldaI).End[Excel.XlDirection.xlDown].AddressLocal;
_r = Pages[x_Iinio].get_Range(_r).Offset[-1, 0].AddressLocal.Replace(“$”, “”);
_r = Pages[x_Iinio].get_Range(_r, Pages[x_Iinio].get_Range(_r).Offset[0, 1].Address).AddressLocal.Replace(“$”, “”);
Pages[x_Iinio].get_Range(_r).Copy();
Pages[x_Idestino].get_Range(_tmp).Offset[1, 0].PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
_r = Pages[x_Idestino].get_Range(x_CeldaD).End[Excel.XlDirection.xlDown].AddressLocal.Replace(“$”, “”);
}
return _r;
}
catch (Exception ex)
{
throw ex;
}

}
private String SumarColumna_X(String x_Celda, int x_indice)
{
try{
String Fila=Pages[x_indice].get_Range(x_Celda,Pages[x_indice].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Offset[-1,0]).AddressLocal.ToString().Replace(“$”,””);
double Celda = Pages[x_indice].get_Range(“A1”).Value2 == null ? 0 : Pages[x_indice].get_Range(“A1”).Value2;
if (Celda== 0)
{ Pages[x_indice].get_Range(“A1”).FormulaLocal = “=SUMA(” + Fila + “)”; Fila = “A1”; }
else
{ Pages[x_indice].get_Range(“A2”).FormulaLocal = “=SUMA(” + Fila + “)”; Fila = “A2”; }
Pages[x_indice].get_Range(Fila).Copy();
Pages[x_indice].get_Range(Fila).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
return Fila;
}
catch(Exception ex)
{ throw ex; }
}

private void FijarAreaImpresion(int x_indice, String x_Celda)
{
try
{
String Fila = String.Empty;
String AreaImpresion = String.Empty;
Fila = Pages[x_indice].get_Range(x_Celda).End[Excel.XlDirection.xlDown].Address.Replace(“$”, “”);
int postFila = 0;
Pages[x_indice].Activate();
if (x_indice == 5 || x_indice == 7 || x_indice == 9 || x_indice == 15 || x_indice == 16 || x_indice == 17 || x_indice == 18 || x_indice == 20||x_indice == 21)
{
int n = 0;
int _Zoon = 0;
if (x_indice == 15 || x_indice == 16 || x_indice == 17 || x_indice == 18 )
{ n = 15; _Zoon = 55; }
else if (x_indice == 21)
{ n = 20; _Zoon = 80; }
else
{ n = 5; _Zoon = 80; }

postFila = Pages[x_indice].get_Range(Fila).Offset[n, 0].EntireRow.Row;
AreaImpresion = “$A$1:$F$” + postFila;
Pages[x_indice].PageSetup.PrintArea = AreaImpresion;
Pages[x_indice].PageSetup.Zoom = _Zoon;
}
else if (x_indice == 4 || x_indice == 11 || x_indice == 12 || x_indice == 13)
{

postFila = Pages[x_indice].get_Range(Fila).Offset[10, 0].EntireRow.Row;
Fila = Pages[x_indice].get_Range(x_Celda).Offset[0, 1].Address.Replace(“$”, “”).Substring(0, 1);
AreaImpresion = “$A$1:$” + Fila+ “$” + postFila;
Pages[x_indice].PageSetup.Zoom = 40;
Pages[x_indice].PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;

}
else if( x_indice == 14 || x_indice==19)
{
if (x_indice == 19)
{
postFila = Pages[x_indice].get_Range(Fila).Offset[30, 0].EntireRow.Row;
Fila = Pages[x_indice].get_Range(x_Celda).Offset[2, 0].End[Excel.XlDirection.xlToRight].Address.Replace(“$”, “”).Substring(0, 1);
}
else
{
postFila = Pages[x_indice].get_Range(Fila).Offset[3, 0].EntireRow.Row;
Fila = Pages[x_indice].get_Range(x_Celda).End[Excel.XlDirection.xlToRight].Address.Replace(“$”, “”).Substring(0, 1);
}
AreaImpresion = “$A$1:$”+ Fila +”$” + postFila;
Pages[x_indice].PageSetup.PrintArea = AreaImpresion;
Pages[x_indice].PageSetup.Zoom = 50;
if (x_indice == 19)
Pages[x_indice].PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape;
}
Pages[x_indice].PageSetup.CenterHorizontally = true;
app.ActiveWindow.View = Excel.XlWindowView.xlPageBreakPreview;
}
catch (Exception ex)
{ throw ex; }

}

private int ContarUnicos_Campo_X(String x_nombreCampo,int x_indice,int x_Col)
{
try
{
int fullRow = Pages[x_indice].Rows.Count;
int nroColumna = 0;
int lastRow = Pages[x_indice].Cells[fullRow, 1].End(Excel.XlDirection.xlUp).Row;
Excel.Range rango = Pages[x_indice].get_Range(“A1:T” + lastRow);
switch (x_Col)//***********************************************SE ASIGNA LA COLUMNA DONDE SE APLICARA EL CONTEO DE REGISTROS UNICOS
{
case 9:
nroColumna = 5;
break;
case 11:
nroColumna = 5;
break;
case 12:
nroColumna = 5;
break;
}
rango.AutoFilter(x_Col, x_nombreCampo, Excel.XlAutoFilterOperator.xlFilterValues);
String Celda = Pages[x_indice].get_Range(“A2”).Offset[0, nroColumna].Address.Replace(“$”, “”);
Pages[x_indice].Activate();
Pages[x_indice].get_Range(Celda, Pages[x_indice].get_Range(Celda).End[Excel.XlDirection.xlDown]).Select();
app.Selection.Copy();
AgregandoHojaTmp();
HojaTmp.get_Range(“A1”).PasteSpecial(Excel.XlPasteType.xlPasteValues, Excel.XlPasteSpecialOperation.xlPasteSpecialOperationNone);
app.Selection.RemoveDuplicates(1, Excel.XlYesNoGuess.xlNo);
nroColumna = HojaTmp.get_Range(“A1”, HojaTmp.get_Range(“A1”).End[Excel.XlDirection.xlDown]).Rows.Count;
Pages[x_indice].AutoFilterMode = false;
HojaTmp.Delete();
return nroColumna;
}
catch (Exception ex)
{ throw ex; }
}
private int Tipo_Columna(int indice)
{
try
{
int nro = 0;

switch (indice)
{
case 4://*******************HOJA SEXO SE ASIGNA LA COLUMNA 9
nro = 9;
break;
case 11:
nro = 11;
break;
case 13://*************** HOJA FORMA RECLAMO SE ASIGNA EL NUMERO DE COLUMNA 12
nro = 12;
break;
}
return nro;
}
catch (Exception ex)
{ throw ex; }
}

private void Sumar_Otros(String x_Celda, int IndiceHoja,Boolean f=false)
{
try
{
String Fila = String.Empty, TBene = String.Empty, TCasos = String.Empty, TPromedio = String.Empty, TBene2 = String.Empty, TCasos2 = String.Empty, TPromedio2 = String.Empty, ColF = String.Empty;
Boolean _flag = false;
int nroF=0;
if(f)
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count – 8;
else
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count – 3;
while (nroF > 1)
{
Fila = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Value2;
if (Fila.ToUpper() == “OTROS”)
{
if (!f)
{
TBene = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2);
TCasos = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2);
TPromedio = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2);
ColF = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Address.Replace(“$”, “”);
_flag = true;
break;
}
else
{
ColF = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Address.Replace(“$”, “”);
nroF = nroF + 1;
TBene = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2);//************************** SUM BENEFICIOS
TCasos = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2);
TPromedio = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2);
nroF = nroF + 1;
//ColF = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Address.Replace(“$”, “”);
TBene2 = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2);//************************** SUM CASOS
TCasos2 = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2);
TPromedio2 = Convert.ToString(Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2);
//ColF = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 0].Address.Replace(“$”, “”);
_flag = true;
break;
}
}
nroF–;
}

if (_flag)
{
if (!f)
{
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count – 2;
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 + Convert.ToDouble(TBene);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 + Convert.ToDouble(TCasos);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 + Convert.ToDouble(TPromedio);
Pages[IndiceHoja].get_Range(ColF).EntireRow.Delete();
}
else
{
nroF = Pages[IndiceHoja].get_Range(x_Celda, Pages[IndiceHoja].get_Range(x_Celda).End[Excel.XlDirection.xlDown]).Rows.Count – 4;
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 + Convert.ToDouble(TBene);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 + Convert.ToDouble(TCasos);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 + Convert.ToDouble(TPromedio);
nroF = nroF +1;
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 1].Value2 + Convert.ToDouble(TBene2);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 2].Value2 + Convert.ToDouble(TCasos2);
Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 = Pages[IndiceHoja].get_Range(x_Celda).Offset[nroF, 3].Value2 + Convert.ToDouble(TPromedio2);
Pages[IndiceHoja].get_Range(ColF).EntireRow.Delete();
Pages[IndiceHoja].get_Range(ColF).EntireRow.Delete();
Pages[IndiceHoja].get_Range(ColF).EntireRow.Delete();

}

}
}
catch (Exception ex)
{ throw ex; }
}

}
}

Transacciones

–TRANSACCION EXPLICITA
begin tran
begin try
insert into T_CLIENTE values (1711111,’CARLA PALOMIANO’,’CALLE MICALE A123′ ,0,0)
insert into T_CLIENTE values (43129134,’CARLA PALOMIANO’,’CALLE MICALE A123′ ,’34w4′,0)

commit
end try

begin catch
rollback
declare @nro int
declare @ee varchar(4000)
declare @fail int
set @ee=ERROR_MESSAGE()
set @nro=@@TRANCOUNT
set @fail=@@ERROR
–print ‘Hay un error:’+ @ee
— + ‘ Count:’+@nro
print ‘ERROR’+@fail
end catch

————————————implicitas

begin try

—-comandas dml

commit tran

end try

begin catch

rollback tran

end catch

 

sql hotel completo

— MARTA E. ZORRILLA PANTALEÓN
— UNIVERSIDAD DE CANTABRIA
— BASES DE DATOS ING. INFORMÁTICA
————————————–

use hotel
go

–• Inserte el tipo de servicio OCIO.

insert into tipo_servicio (nombreServicio) values (‘Ocio’)

select * from tipo_servicio
–• De de alta una reserva de la habitación 101 para el cliente 12345 para las noches del 2 al 4 de julio de 2009. El código de la reserva es autonumérico.

insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[IVA]
,[NumHABITACION]
,[CLIENTE])
values (’02-07-2009′,’04-07-2009′,0.16,101,’12345′)
–Actualizaciones
–• Actualice el teléfono del cliente 12345. Su nuevo número es 123456789.
select * from clientes where identificacion=12345

update clientes set telefono=’123456789′ where identificacion=12345

–• Actualice el precio de los servicios incrementándolos en un 2%.

update servicios set precio=precio*1.02

–Borrados
–• Borre la reserva de la habitación 101 realizada anteriormente.
delete from reserva_habitac where idreserva=8

delete from reserva_habitac where cliente=12345 and
fechaentrada=’02-07-2009′ and numhabitacion=101

–• Borre los tipos de servicio que no tienen servicios definidos.
delete from tipo_servicio
where nombreServicio not in (select nombreservicio from servicios)

select * from tipo_Servicio

— CONSULTAS
— • Crea una vista que devuelva los clientes cuyo apellido incluya la sílaba “le” ordenados por su identificador.

select * from clientes where
apellido1 like ‘%le%’
order by apellido1

— • Crea una vista que devuelva los clientes, ordenados por su primer apellido, que tengan alguna observación anotada.
select * from clientes where observaciones is not null
order by apellido1
–• Crea una vista que devuelva los servicios cuyo precio supere los 5 € ordenados por su código de servicio.
SELECT * FROM DBO.servicios
WHERE (precio>5)
order by idservicios

— • Cree una consulta que devuelva las habitaciones reservadas para el día 24 de marzo de 2009.
select numhabitacion from reserva_habitac
where ’24/03/2009′ between fechaentrada and fechasalida

— • Cree una consulta que devuelva los clientes procedentes de España y Francia.
select * from clientes where pais in (‘España’,’Francia’)
— • Crea una vista que devuelva los clientes que han utilizado el servicio de comedor.

SELECT servicios.NombreSERVICIO, servicios.IVA, servicios.Fecha,
clientes.Nombre, clientes.Apellido1, gastos.idSERVICIOS AS Expr1
FROM servicios INNER JOIN
gastos ON servicios.idSERVICIOS = gastos.idSERVICIOS INNER JOIN
reserva_habitac ON gastos.idRESERVA = reserva_habitac.idRESERVA INNER JOIN
clientes ON reserva_habitac.CLIENTE = clientes.Identificacion
WHERE (servicios.NombreSERVICIO = ‘comedor’)

SELECT servicios.NombreSERVICIO, servicios.IVA, servicios.Fecha,
clientes.Nombre, clientes.Apellido1, gastos.idSERVICIOS AS Expr1
FROM servicios ,
gastos ,
reserva_habitac ,
clientes
WHERE (servicios.NombreSERVICIO = ‘comedor’)
and
servicios.idSERVICIOS = gastos.idSERVICIOS and
gastos.idRESERVA = reserva_habitac.idRESERVA and
reserva_habitac.CLIENTE = clientes.Identificacion

–• Crea una vista que devuelva las características de cada habitación reservada.
select t.*,h.numhabitacion
from habitaciones h, tipo_habitacion t, reserva_habitac r
where h.NumHABITACION = r.NumHABITACION and h.TIPO_HABITACION = t.categoria

— • Cree una consulta que devuelva los precios de los distintos tipos de habitación por temporada.

SELECT precio_habitacion.TIPO_HABITACION, precio_habitacion.Precio,
temporada.FechaINICIO, temporada.FechaFINAL, temporada.Tipo
FROM precio_habitacion INNER JOIN
temporada ON precio_habitacion.TEMPORADA = temporada.TEMPORADA

–• Cree una consulta que devuelva todos los clientes, y de aquellos que han realizado
— alguna reserva en marzo, indicar el nº de reserva.
select c.*,r.idreserva
from clientes c left join reserva_habitac r on c.identificacion=r.cliente
and fechaentrada between ’01-03-2009′ and ’30-03-2009′
–• Crea una vista con los servicios que nunca han sido contratados.
select distinct * from servicios
where not exists (select * from gastos
where gastos.idSERVICIOS=servicios.idSERVICIOS)

SELECT DISTINCT servicios.*
FROM servicios where idservicios not in (
select idservicios from
gastos )
— • Cree una consulta que devuelva los clientes con el mismo primer apellido.
select c.identificacion, c.apellido1, a.apellido1
from clientes c, clientes a
where c.identificacion<>a.identificacion and c.apellido1=a.apellido1

select * from clientes
INSERT INTO clientes VALUES (‘22233’, ‘ESPAÑA’, ‘Felipe’, ‘Iglesias’, ‘López’, ‘Avda Los Castros, 44’, ‘942344444’, ‘Buen cliente’);
delete from clientes where identificacion=’22233′
–GROUP BY
–• Crea una vista que devuelva el nº de clientes por nacionalidad.
select pais,COUNT( identificacion) AS NUMERO
FROM CLIENTES GROUP BY pais
–• Crea una vista que devuelva el nº de habitaciones por categoría de habitación.
select count(*) , tipo_habitacion,camas, exterior
from habitaciones h, tipo_habitacion t
where h.tipo_habitacion=t.categoria
group by tipo_habitacion,camas,exterior

–• Crea una vista que devuelva el nº de servicios que se ofrecen por tipo de servicio.

select tipo_servicio.nombreservicio,count(idservicios) as cantidad
from tipo_servicio inner join servicios
on tipo_servicio.nombreservicio=servicios.nombreservicio
group by tipo_servicio.nombreservicio
having count(*) >1

–• Cree una consulta que devuelva el gasto en servicios realizado por cada reserva.
SELECT gastos.idreserva, SUM(gastos.Cantidad * gastos.Precio) AS total
FROM gastos
GROUP BY gastos.idreserva

–OTRAS ACCIONES
–• Cree una consulta que devuelva el precio del servicio más caro y del más barato

select max(precio) maximo, min(precio) mínimo
from servicios
go

select idservicios ,’MAXIMO’, precio
from servicios
where precio = (select max(precio) from servicios)

union
select idservicios ,’minimo’,precio
from servicios
where precio = (select min(precio) from servicios)
— • Crear una tabla temporal que recoja los clientes de España.
— actualizar su identificación sumándole 10 y cambiando pais a Alemania
— insertar en la tabla de clientes, estos clientes modificados.

select * into #t1 from clientes where pais=’España’

update #t1 set pais=’Alemania’ ,
identificacion=ltrim(str (cast(identificacion as integer ) +10))

insert into clientes
select * from #t1

select * from clientes
–FUNCIONES

–• Crea una función que devuelva si una habitación está reservada en una fecha dada
create function habReservada ( @num int, @fecha datetime) returns int
as begin
return (select count(*) from reserva_habitac
where numHabitacion= @num and @fecha between fechaentrada and fechasalida )

end

select dbo.habReservada (101,’17-03-2009′)
select dbo.habReservada (101,’12-03-2009′)
–• Crea una función que devuelva el gasto realizado por una reserva con iva incluido.

create function gastoReserva ( @reserva numeric) returns decimal(10,2)
as begin
return(
select sum((g.precio*cantidad)*(1+ (iva/100))) from gastos g, servicios s
where g.idservicios=s.idservicios and idreserva=@reserva)
end

select * from gastos

select dbo.gastoreserva(1)
— • Crea una función que devuelva los ingresos por tipo de servicio para un periodo.
create function Ingresos (@inicio datetime, @fin datetime)
returns table as

return (SELECT servicios.NombreSERVICIO, SUM(gastos.Cantidad * gastos.Precio) AS total
FROM servicios INNER JOIN
gastos ON servicios.idSERVICIOS = gastos.idSERVICIOS
WHERE gastos.fecha>=@inicio and gastos.fecha<=@fin
GROUP BY servicios.NombreSERVICIO )
select * from dbo.ingresos(’01-03-2009′,’31-03-2009′)
— • OPCIONAL Cree una función que devuelva el gasto por uso de habitación de una reserva.

create function precioHab ( @reserva numeric) returns money
as begin
declare @total money
declare @tipo int
declare @inicio datetime
declare @fin datetime
declare @fecha datetime
declare @precio money
set @total=0

select @tipo=tipo_habitacion ,@inicio=fechaentrada, @fin=fechasalida
from habitaciones h, reserva_habitac r
where h.numhabitacion=r.numhabitacion and idreserva=@reserva

set @fecha=@inicio

while (select datediff(d, @fecha,@fin))>0
begin
select @precio=precio from precio_habitacion p,temporada t where
p.tipo_habitacion=@tipo and p.temporada=t.temporada and
@inicio between fechainicio and fechafinal
set @fecha= dateadd(d, 1,@fecha)
set @total=@total+@precio
end
return @total
end

select dbo.preciohab (1) –devuelve 300
–• Crear una vista que muestre todos los datos del cliente excepto las observaciones. Actualizar el nombre del cliente utilizando esta vista.

create view ClientesinObs as
select identificacion, nombre, apellido1,
apellido2,direccion, telefono
from clientes
update ClientesinObs set nombre=’cambio’ where identificacion=456789
update ClientesinObs set nombre=’Ludovic’ where identificacion=456789
— • Crear una vista que muestre el ID, nombre y primer apellido de todos los clientes y
— el gasto total que ha realizado en el hotel en sus diferentes estancias. Actualizar el
— nombre del cliente utilizando esta vista. ¿se puede?

create view ClienteGastos as
select identificacion, nombre, apellido1,sum(dbo.gastoreserva(idreserva)) cantidadGastada
from clientes left join reserva_habitac on clientes.identificacion=reserva_habitac.cliente
group by identificacion, nombre, apellido1
update clientegastos set nombre=’cambio’ where identificacion=456789
— DISPARADORES
–• Controlar que cuando se inserta un gasto, la fecha del mismo está dentro de las fechas de la reserva al que se asigna.

create TRIGGER tr_gastos ON dbo.gastos FOR INSERT,UPDATE
AS BEGIN

DECLARE @errmsg char(255)

if ( SELECT count(*) FROM inserted i, reserva_habitac r
WHERE i.idreserva=r.idreserva and i.fecha not between r.fechaentrada and
r.fechasalida)>0

BEGIN
set @errmsg = ‘el gasto no se puede anotar a esa reserva, fuera de fechas’
RAISERROR ( @errmsg,16,1)
ROLLBACK TRANSACTION
RETURN
END

END

select * from gastos

insert into gastos values
(1, 1,’16-03-2009′,1,10)

–• Controlar que cuando se inserta o modifica una reserva que la habitación está disponible en esas fechas.

alter TRIGGER TR_reserva_habitac ON dbo.reserva_habitac FOR INSERT,UPDATE
AS BEGIN

DECLARE @valor int
DECLARE @errmsg char(255)

IF (select count(*) from inserted A, reserva_habitac B
where a.numhabitacion=b.numhabitacion and
a.idreserva<>b.idreserva and
((a.fechaentrada >= b.fechaentrada and a.fechaentrada < b.fechasalida ) –si ponemos between no permitiríamos ocupar el día de salida de otra habitación
or
(a.fechasalida >= b.fechaentrada and a.fechasalida < b.fechasalida )
or
( b.fechasalida >= a.fechaentrada and b.fechasalida < a.fechasalida )
)
)>0
BEGIN
set @errmsg = ‘habitación ocupada’
RAISERROR ( @errmsg,16,1)
ROLLBACK TRANSACTION
RETURN
END

END

— pruebas
insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[IVA]
,[NumHABITACION]
,[CLIENTE]) values
(’24/03/2009′, ’26/03/2009′, 0.07, 101, ‘12345’)
; — ocupada hasta el dia 24
insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[IVA]
,[NumHABITACION]
,[CLIENTE]) values
(’25/03/2009′, ’28/03/2009′, 0.07, 101, ‘12345’); –permite la inserción

insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[IVA]
,[NumHABITACION]
,[CLIENTE]) values
(’20/04/2009′, ’29/04/2009′, 0.07, 101, ‘12345’)

insert into reserva_habitac ([FechaENTRADA]
,[FechaSALIDA]
,[IVA]
,[NumHABITACION]
,[CLIENTE]) values
(’20/01/2008′, ’29/04/2010′, 0.07, 101, ‘12345’)

—- DEFINICION —–
–• Controle en la tabla temporada que la fecha de fin es mayor que la fecha de inicio.

alter table temporada add constraint ch_fech check (fechainicio<fechafin)

–• Controle en la tabla reserva_habitac que la fecha de salida es mayor o igual que la fecha de entrada.

alter table reserva_habitac add constraint ch_fechas check (fechaentrada<fechasalida)

–• Controle en la tabla servicios que el iva está comprendido entre 0 y 100,0.
alter table servicios add constraint ch_iva check (iva>=0 and iva<=100)

–• Cree un índice sobre el atributo Nacionalidad de la tabla clientes, con objeto de agilizar las búsquedas.

create index miIndice on clientes(nacionalidad)

–• Cree un índice sobre el atributo numHabitacion de la tabla reverva_habitac, con objeto de agilizar las búsquedas.

create index miIndice1 on habitacion(numhabitacion)

— • Cree un índice sobre el atributo nombreServicio de la tabla servicios, con objeto de agilizar las búsquedas.

create index miIndice2 on servicios(nombreservicio)

–• Añada una columna calculada en la tabla gastos que obtenga el importe por línea sin aplicar el iva.

alter table gastos add importe as (cantidad*precio)

–• Añada una columna en servicios que indique si el servicio se ofrece a los clientes o no.
alter table servicios add ofertado bit not null default 1

–• Añada en gastos una referencia que indique el empleado que atendió el servicio.

CREATE TABLE [dbo].[empleados](
[idEmpleado] [char](4) NOT NULL CONSTRAINT [pk_emp] PRIMARY KEY (idempleado),
[nombre] [char](20) NOT NULL
)

alter table gastos add empleado char(4) null
foreign key (empleado) references empleados(idempleado);

alter table reserva_habitac add empleado char(4) null
foreign key (empleado) references empleados(idempleado);

–FIN

create table sql

CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)

———————————————————————-

Create database hotel;

use hotel;

CREATE TABLE tipo_servicio (
NombreSERVICIO char(10) NOT NULL,
PRIMARY KEY ( NombreSERVICIO )
) ;

INSERT INTO tipo_servicio VALUES (‘COMEDOR’);
INSERT INTO tipo_servicio VALUES (‘LAVANDERIA’);
CREATE TABLE paises (
pais char(20) NOT NULL,
PRIMARY KEY ( pais )
) ;
INSERT INTO paises VALUES (‘ALEMANIA’);
INSERT INTO paises VALUES (‘ESPAÑA’);
INSERT INTO paises VALUES (‘FRANCIA’);
INSERT INTO paises VALUES (‘PORTUGAL’);

CREATE TABLE clientes (
Identificacion char(12) NOT NULL,
Pais char(20) NOT NULL,
Nombre char(12) NOT NULL,
Apellido1 char(12) NOT NULL,
Apellido2 char(12) ,
Direccion char(30) NOT NULL,
Telefono char(12) NOT NULL,
Observaciones char(50) ,
PRIMARY KEY ( Identificacion ),
FOREIGN KEY (Pais) references paises (pais) );

INSERT INTO clientes VALUES (‘12345’, ‘ESPAÑA’, ‘Felipe’, ‘Iglesias’, ‘López’, ‘Avda Los Castros, 44’, ‘942344444’, ‘Buen cliente’);
INSERT INTO clientes VALUES (‘44444’, ‘ESPAÑA’, ‘Luis’, ‘García’, ‘García’, ‘Calle Mayor, 67 ‘, ‘942456444’, null);
INSERT INTO clientes VALUES (‘456789’, ‘FRANCIA’, ‘Ludovic’, ‘Giuly’, ‘Bourquin’, ’18 avenue Alsacen Cour’, ‘37890194’, null);

CREATE TABLE tipo_habitacion (
Categoria int NOT NULL ,
Camas int NOT NULL,
Exterior char(2) NOT NULL check (Exterior in (‘SI’, ‘NO’)),
Salon char(2) NOT NULL check (Salon in (‘SI’, ‘NO’)),
Terraza char(2) NOT NULL check (Terraza in (‘SI’, ‘NO’)),
PRIMARY KEY ( Categoria )
) ;
INSERT INTO tipo_habitacion VALUES (1, 1, ‘SI’, ‘NO’, ‘NO’);
INSERT INTO tipo_habitacion VALUES (2, 2, ‘SI’, ‘NO’, ‘NO’);
INSERT INTO tipo_habitacion VALUES (3, 3, ‘SI’, ‘NO’, ‘NO’);
INSERT INTO tipo_habitacion VALUES (4, 1, ‘SI’, ‘SI’, ‘NO’);

CREATE TABLE habitaciones (
NumHABITACION int NOT NULL,
TIPO_HABITACION int NOT NULL,
PRIMARY KEY ( NumHABITACION ),
Foreign key (tipo_habitacion) references tipo_habitacion ( Categoria )
) ;

INSERT INTO habitaciones VALUES (101, 1);
INSERT INTO habitaciones VALUES (102, 1);
INSERT INTO habitaciones VALUES (103, 1);
INSERT INTO habitaciones VALUES (104, 2);
INSERT INTO habitaciones VALUES (105, 2);
INSERT INTO habitaciones VALUES (106, 3);
INSERT INTO habitaciones VALUES (107, 4);
CREATE TABLE servicios (
idSERVICIOS int NOT NULL ,
NombreSERVICIO char(10) NOT NULL,
Descripcion char(30) NOT NULL,
Precio money NOT NULL,
IVA numeric (5,2) NOT NULL,
Fecha date NOT NULL,
PRIMARY KEY ( idSERVICIOS ),
foreign key (nombreServicio) references tipo_servicio ( NombreSERVICIO )
) ;

set dateformat ymd;

INSERT INTO servicios VALUES (1, ‘COMEDOR’, ‘1 menu del Dia’, 10, 7, ‘2009-01-01’);
INSERT INTO servicios VALUES (2, ‘LAVANDERIA’, ‘Lavado de Camisa’, 2, 7, ‘2009-01-01’);
INSERT INTO servicios VALUES (3, ‘LAVANDERIA’, ‘Lavado de pantalon’, 1, 7, ‘2009-01-01’);

CREATE TABLE temporada (
TEMPORADA int NOT NULL ,
FechaINICIO date NOT NULL,
FechaFINAL date NOT NULL,
Tipo char(1) not null check (tipo in (‘B’,’M’,’A’)) ,
PRIMARY KEY ( TEMPORADA )
) ;

set dateformat ymd
INSERT INTO temporada VALUES (1, ‘2009-01-01’, ‘2009-03-31’, ‘B’);
INSERT INTO temporada VALUES (2, ‘2009-04-01’, ‘2009-05-31’, ‘M’);
INSERT INTO temporada VALUES (3, ‘2009-06-01’, ‘2009-08-31’, ‘A’);
INSERT INTO temporada VALUES (4, ‘2009-09-01’, ‘2009-10-31’, ‘M’);
INSERT INTO temporada VALUES (5, ‘2009-11-01’, ‘2009-12-31’, ‘B’);
CREATE TABLE precio_habitacion (
idPrecio int NOT NULL ,
Precio money NOT NULL,
TEMPORADA int NOT NULL,
TIPO_HABITACION int NOT NULL,
PRIMARY KEY ( idPrecio ),
foreign key (temporada) references temporada(temporada),
foreign key (tipo_habitacion) references tipo_habitacion(categoria )
) ;
INSERT INTO precio_habitacion VALUES (1, 30, 1, 1);
INSERT INTO precio_habitacion VALUES (2, 35, 2, 1);
INSERT INTO precio_habitacion VALUES (3, 40, 3, 1);
INSERT INTO precio_habitacion VALUES (4, 35, 4, 1);
INSERT INTO precio_habitacion VALUES (5, 30, 5, 1);
INSERT INTO precio_habitacion VALUES (6, 35, 1, 2);
INSERT INTO precio_habitacion VALUES (7, 40, 2, 2);
INSERT INTO precio_habitacion VALUES (8, 45, 3, 2);
INSERT INTO precio_habitacion VALUES (9, 40, 4, 2);
INSERT INTO precio_habitacion VALUES (10, 35, 5, 2);
INSERT INTO precio_habitacion VALUES (11, 40, 1, 3);
INSERT INTO precio_habitacion VALUES (12, 45, 2, 3);
INSERT INTO precio_habitacion VALUES (13, 50, 3, 3);
INSERT INTO precio_habitacion VALUES (14, 45, 4, 3);
INSERT INTO precio_habitacion VALUES (15, 40, 5, 3);
INSERT INTO precio_habitacion VALUES (16, 50, 1, 4);
INSERT INTO precio_habitacion VALUES (17, 55, 2, 4);
INSERT INTO precio_habitacion VALUES (18, 60, 3, 4);
INSERT INTO precio_habitacion VALUES (19, 55, 4, 4);
INSERT INTO precio_habitacion VALUES (20, 50, 5, 4);
CREATE TABLE reserva_habitac (
idRESERVA numeric identity(1,1) NOT NULL ,
FechaENTRADA date NOT NULL,
FechaSALIDA date NOT NULL,
IVA numeric(5,2) NOT NULL,
NumHABITACION int NOT NULL,
CLIENTE char(12) NOT NULL,
PRIMARY KEY ( idRESERVA ) ,
foreign KEY (cliente) references CLIENTES (Identificacion ),
foreign key (numHabitacion) references HABITACIONES (NumHABITACION )
) ;

INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-15’, ‘2009-03-25’, 0.07,101, ‘12345’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-15’, ‘2009-03-25’, 0.07, 102, ‘12345’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-02-16’, ‘2009-02-21’, 0.07,103, ‘12345’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-16’, ‘2009-03-21’, 0.07,104, ‘44444’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-16’, ‘2009-03-21’, 0.07,105, ‘44444’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-16’, ‘2009-03-21’, 0.07,106, ‘44444’);
INSERT INTO reserva_habitac (FechaENTRADA , FechaSALIDA , IVA , NumHABITACION , CLIENTE)
VALUES ( ‘2009-03-16’, ‘2009-03-21’, 0.07,107, ‘44444’);

CREATE TABLE gastos (
idGASTOS int identity NOT NULL ,
idRESERVA numeric NOT NULL,
idSERVICIOS int NOT NULL,
Fecha datetime NOT NULL,
Cantidad int NOT NULL,
Precio money not null,
PRIMARY KEY ( idGASTOS ),
foreign KEY (idreserva) references reserva_habitac (idREserva ),
foreign key (idservicios ) references SERVICIOS (idSERVICIOS )
) ;

set IDENTITY_INSERT dbo.gastos on

INSERT INTO gastos ( idgastos,idRESERVA , idSERVICIOS ,Fecha ,Cantidad ,Precio)
VALUES ( 1,1,1, ‘2009-03-15 12:00’, 1,10);
INSERT INTO gastos ( idgastos,idRESERVA , idSERVICIOS ,Fecha ,Cantidad ,Precio)
VALUES (2, 1,1, ‘2009-03-15 11:00’, 1,10);
INSERT INTO gastos (idgastos, idRESERVA , idSERVICIOS ,Fecha ,Cantidad ,Precio)
VALUES (3, 4, 2, ‘2009-03-15 09:30’, 1,2);

set IDENTITY_INSERT dbo.gastos off

————————————————————check

CREATE TABLE temporada (
TEMPORADA int NOT NULL ,
FechaINICIO date NOT NULL,
FechaFINAL date NOT NULL,
Tipo char(1) not null check (tipo in (‘B’,’M’,’A’)) ,
PRIMARY KEY ( TEMPORADA )
) ;

 

CREATE TABLE tipo_habitacion (
Categoria int NOT NULL ,
Camas int NOT NULL,
Exterior char(2) NOT NULL check (Exterior in (‘SI’, ‘NO’)),
Salon char(2) NOT NULL check (Salon in (‘SI’, ‘NO’)),
Terraza char(2) NOT NULL check (Terraza in (‘SI’, ‘NO’)),
PRIMARY KEY ( Categoria )
) ;

bbackup sql T-SQL

USE AdventureWorks2012;
GO
BACKUP DATABASE AdventureWorks2012
TO DISK = ‘Z:\SQLServerBackups\AdventureWorks2012.Bak’
WITH FORMAT,
MEDIANAME = ‘Z_SQLServerBackups’,
NAME = ‘Full Backup of AdventureWorks2012’;
GO
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\AdventureWorks.BAK’
GO
–DIFERENCIAL
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\AdventureWorks.BAK’
WITH DIFFERENTIAL
GO

–BACKUP MULTIPLES DISCOS
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\AdventureWorks_1.BAK’,
DISK = ‘D:\AdventureWorks_2.BAK’,
DISK = ‘E:\AdventureWorks_3.BAK’
GO
–USANDO MIRROR
BACKUP DATABASE AdventureWorks
TO DISK = ‘C:\AdventureWorks.BAK’
MIRROR TO DISK = ‘D:\AdventureWorks_mirror.BAK’
WITH FORMAT
GO

http://www.mssqltips.com/sqlservertutorial/20/sql-server-backup-database-command/