Ejemplo n.º 1
0
        public void SavingLoadingTableWithNewLineInHeader2()
        {
            using (var wb = new XLWorkbook())
            {
                IXLWorksheet ws = wb.Worksheets.Add("Test");

                var    dt         = new DataTable();
                string columnName = "Line1" + Environment.NewLine + "Line2";
                dt.Columns.Add(columnName);

                DataRow dr = dt.NewRow();
                dr[columnName] = "some text";
                dt.Rows.Add(dr);
                ws.Cell(1, 1).InsertTable(dt);

                IXLTable table1     = ws.Table(0);
                string   fieldName1 = table1.Field(0).Name;
                Assert.AreEqual(columnName, fieldName1);

                using (var ms = new MemoryStream())
                {
                    wb.SaveAs(ms, true);
                    var          wb2        = new XLWorkbook(ms);
                    IXLWorksheet ws2        = wb2.Worksheet(1);
                    IXLTable     table2     = ws2.Table(0);
                    string       fieldName2 = table2.Field(0).Name;
                    Assert.AreEqual("Line1\nLine2", fieldName2);
                }
            }
        }
Ejemplo n.º 2
0
        private static void DeleteTableColumn(IXLTable table, IEnumerable <string> headersToDelete)
        {
            if (headersToDelete is null)
            {
                return;
            }

            foreach (var headerToDelete in headersToDelete)
            {
                var columnToDelete = table.Field(headerToDelete);
                if (columnToDelete is null)
                {
                    continue;
                }

                columnToDelete.Delete();
            }
        }
Ejemplo n.º 3
0
        public void SavingLoadingTableWithNewLineInHeader()
        {
            var          wb         = new XLWorkbook();
            IXLWorksheet ws         = wb.AddWorksheet("Sheet1");
            string       columnName = "Line1" + Environment.NewLine + "Line2";

            ws.FirstCell().SetValue(columnName)
            .CellBelow().SetValue("A");
            ws.RangeUsed().CreateTable();
            using (var ms = new MemoryStream())
            {
                wb.SaveAs(ms);
                var          wb2       = new XLWorkbook(ms);
                IXLWorksheet ws2       = wb2.Worksheet(1);
                IXLTable     table2    = ws2.Table(0);
                string       fieldName = table2.Field(0).Name;
                Assert.AreEqual("Line1\nLine2", fieldName);
            }
        }
        private void GenerarExcelDetalle()
        {
            var poliza = Polizas.FirstOrDefault(x => x.IS_SELECTED);

            if (poliza == null)
            {
                InteraccionConUsuarioServicio.Mensaje("Debe seleccionar una poliza para generar la plantilla.");
                return;
            }
            SaveFileDialog dialogoGuardar = new SaveFileDialog();

            dialogoGuardar.Filter           = "Excel xlsx (*.xlsx)|*.xlsx";
            dialogoGuardar.FilterIndex      = 2;
            dialogoGuardar.RestoreDirectory = true;

            if (dialogoGuardar.ShowDialog() == DialogResult.OK)
            {
                path = dialogoGuardar.FileName;

                XLWorkbook   workbook  = new XLWorkbook();
                IXLWorksheet worksheet = workbook.Worksheets.Add("Detalle");
                worksheet.Protect("Mobility2016$$");

                worksheet.Cell(2, 2).Value = "Póliza";
                worksheet.Cell(2, 3).Value = poliza.CODIGO_POLIZA;

                worksheet.Cell(2, 2).Style.Font.Bold = true;

                worksheet.Cell(3, 2).Value           = "Fecha Generación";
                worksheet.Cell(3, 3).Value           = DateTime.Now;
                worksheet.Cell(3, 2).Style.Font.Bold = true;


                int inicioEncabezadoX = 5;
                int inicioEncabezadoY = 2;

                worksheet.Column(inicioEncabezadoY + 0).Width = 20;
                worksheet.Column(inicioEncabezadoY + 1).Width = 60;
                worksheet.Column(inicioEncabezadoY + 2).Width = 20;
                worksheet.Column(inicioEncabezadoY + 3).Width = 20;
                worksheet.Column(inicioEncabezadoY + 4).Width = 10;

                //Encabezado Tabla
                for (int j = 0; j <= UiGridVistaDetalle.Columns.Count - 1; j++)
                {
                    worksheet.Cell(inicioEncabezadoX, inicioEncabezadoY + j).Value                      = UiGridVistaDetalle.Columns[j].Caption;
                    worksheet.Cell(inicioEncabezadoX, inicioEncabezadoY + j).Style.Font.Bold            = true;
                    worksheet.Cell(inicioEncabezadoX, inicioEncabezadoY + j).Style.Fill.BackgroundColor = XLColor.BabyBlueEyes;
                    worksheet.Cell(inicioEncabezadoX, inicioEncabezadoY + j).Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Center);
                }

                //Datos
                for (int i = 0; i <= UiGridVistaDetalle.RowCount - 1; i++)
                {
                    for (int j = 0; j <= UiGridVistaDetalle.Columns.Count - 1; j++)
                    {
                        //Celda de total
                        if (j == 4)
                        {
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).FormulaR1C1 = "=RC[-2]*RC[-1]";
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).Style.NumberFormat.Format = " #,##0.00";
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).DataType = XLCellValues.Number;
                        }
                        else
                        {
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).Value =
                                (UiGridVistaDetalle.GetRowCellValue(i, UiGridVistaDetalle.Columns[j]).ToString());
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY)
                            .Style.Alignment.SetHorizontal(XLAlignmentHorizontalValues.Left);
                        }

                        if (j == 3) //Celda de costo unitario
                        {
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).DataType = XLCellValues.Number;
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).Style.NumberFormat.Format = " #,##0.00";
                            worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY)
                            .Style.Protection.SetLocked(false);
                            // worksheet.Cell(i + 1 + inicioEncabezadoX, j + inicioEncabezadoY).DataValidation.Decimal.Between(0, double.MaxValue - 1);
                        }
                    }
                }

                //Convertir en tabla de excel
                IXLRange rngTable   = worksheet.Range(worksheet.Cell(inicioEncabezadoX, inicioEncabezadoY), worksheet.Cell(inicioEncabezadoX + UiGridVistaDetalle.RowCount, inicioEncabezadoY + UiGridVistaDetalle.Columns.Count - 1));
                IXLTable excelTable = rngTable.CreateTable();
                excelTable.ShowTotalsRow = true;

                excelTable.Field(4).TotalsRowFunction = XLTotalsRowFunction.Sum;
                excelTable.Field(3).TotalsRowFunction = XLTotalsRowFunction.Sum;
                excelTable.Field(2).TotalsRowFunction = XLTotalsRowFunction.Sum;
                excelTable.Field(1).TotalsRowFunction = XLTotalsRowFunction.Count;
                excelTable.Field(0).TotalsRowLabel    = "Total:";
                excelTable.ShowAutoFilter             = false;

                //Guardar Excel
                if ((File.Exists(path)))
                {
                    System.IO.File.Delete(path);
                }
                workbook.SaveAs(path);
                Action <bool> abrirExcel = AbrirExcel;

                InteraccionConUsuarioServicio.Confirmar("Archivo generado exitosamente, ¿Desea abrir el archivo?",
                                                        abrirExcel); //MessageBox.Show("Archivo generado exitosamente, ¿Desea abrir el archivo?", "Operación exitosa", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
            }
        }