Пример #1
0
 static void InvoiceToPDF(Workbook workbook, string filePath)
 {
     Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider pdfFormatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();
     using (Stream output = File.OpenWrite(filePath))
     {
         //Workbook workbook = AlohaService.ExcelExport.ExportHelper // The CreateSampleWorkbook() method generates a sample spreadsheet document. Use your Workbook object here.
         pdfFormatProvider.Export(workbook, output);
     }
 }
Пример #2
0
        public async Task <byte[]> ExportPdf <T>(IQueryable <T> data, DataSourceRequest gridRequest)
        {
            var workbook = new Workbook();

            workbook.Name = "workbook-1";

            // performance
            workbook.History.IsEnabled = false;
            workbook.SuspendLayoutUpdate();

            workbook.Sheets.Add(SheetType.Worksheet);
            Worksheet worksheet = workbook.ActiveWorksheet;

            var dataResult = await data.ToDataSourceResultAsync(gridRequest);

            List <T> dataToExport = (dataResult.Data as IEnumerable <T>).ToList();

            int currRow = 0;

            Type typeParameterType = typeof(T);
            var  fieldsList        = typeParameterType.GetProperties();

            //some styling for the cells - borders in this example
            ThemableColor black          = new ThemableColor(Telerik.Documents.Media.Color.FromArgb(0, 0, 0, 0));
            CellBorders   desiredBorders = new CellBorders(
                new CellBorder(CellBorderStyle.Medium, black),     // Left border
                new CellBorder(CellBorderStyle.Medium, black),     // Top border
                new CellBorder(CellBorderStyle.Medium, black),     // Right border
                new CellBorder(CellBorderStyle.Medium, black),     // Bottom border
                new CellBorder(CellBorderStyle.Thin, black),       // Inside horizontal border
                new CellBorder(CellBorderStyle.Thin, black),       // Inside vertical border
                new CellBorder(CellBorderStyle.None, black),       // Diagonal up border
                new CellBorder(CellBorderStyle.None, black)        // Diagonal down border
                );

            //column sizes
            for (int i = 0; i < fieldsList.Length; i++)
            {
                worksheet.Columns[i].SetWidth(new ColumnWidth(120, true));
            }

            //automatic resizing is convenient, but comes with some performance hit
            //it would also have to be moved after setting the content
            //for (int i = 0; i < fieldsList.Length; i++)
            //{
            //    worksheet.Columns[i].AutoFitWidth();
            //}

            for (int i = 0; i < fieldsList.Length; i++)
            {
                CellSelection currCell = worksheet.Cells[0, i];
                currCell.SetValue(fieldsList[i].Name);
                currCell.SetBorders(desiredBorders);
            }

            currRow++;


            // content
            for (int i = 0; i < dataToExport.Count; i++)
            {
                for (int columnIndex = 0; columnIndex < fieldsList.Length; columnIndex++)
                {
                    var           cellValue = GetFieldValue(dataToExport[i], fieldsList[columnIndex].Name);
                    CellSelection currCell  = worksheet.Cells[currRow, columnIndex];
                    SetCellValue(currCell, cellValue);
                    currCell.SetBorders(desiredBorders);
                }
                currRow++;
            }

            // performance
            workbook.ResumeLayoutUpdate();

            //convert the excel workbook to a pdf
            var pdfFormatProvider = new Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.PdfFormatProvider();

            byte[] fileBytes = null;
            using (MemoryStream ms = new MemoryStream())
            {
                pdfFormatProvider.Export(workbook, ms);
                fileBytes = ms.ToArray();
            }

            return(await Task.FromResult(fileBytes));
        }