试图将telerik winform分组的网格数据导出到excel?

问题描述 投票:0回答:1

当我导出网格数据而不进行分组时,它会完美导出,但是当我导出网格数据进行分组时,它会跳过行,如果我删除标题行,那么无论是否进行分组,数据都能完美导出?我认为问题出在标题行中,当我删除标题行时,它可以完美地工作。请告诉我如何调整标题行,以便可以完美导出分组数据

 private void btnExport_Click(object sender, EventArgs e)
        {
            saveFileDialog1.FileName = this.ReportHeaderText.Replace(' ', '-').Replace('/', '-');
            saveFileDialog1.OverwritePrompt = true;

            if (saveFileDialog1.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            if (saveFileDialog1.CheckFileExists)
            {

            }


           if (saveFileDialog1.FileName.Equals(String.Empty))
            {
                RiceMsgBox.ShowErrorBox("Please enter a file name.");
                return;
            }



            string fileName = this.saveFileDialog1.FileName;
            bool openExportFile = false;

            RunExportToExcelML(fileName, ref openExportFile);
            if (openExportFile)
            {
                try
                {
                    System.Diagnostics.Process.Start(fileName);
                }
                catch (Exception ex)
                {
                    RiceMsgBox.ShowErrorBox("The file cannot be opened on your system");
                }
            }
            this.tabControl1.SelectedIndex = 1;
        }


  private void RunExportToExcelML(string fileName, ref bool openExportFile)
        {
            Telerik.WinControls.Export.GridViewSpreadExport exporter = new Telerik.WinControls.Export.GridViewSpreadExport(gridReport, 0);

            exporter.HiddenColumnOption = Telerik.WinControls.UI.Export.HiddenOption.DoNotExport;
            exporter.CellFormatting += exporter_CellFormatting;
            exporter.ExportVisualSettings = true;
            exporter.SheetMaxRows = ExcelMaxRows._1048576;
            exporter.SheetName = System.Text.RegularExpressions.Regex.Replace(this.ReportHeaderText.Length > 30 ? this.ReportHeaderText.Substring(0,30) : this.ReportHeaderText, @"[^0-9a-zA-Z]+", ","); 

            exporter.SummariesExportOption = SummariesOption.ExportAll;
            Telerik.WinControls.Export.SpreadExportRenderer exportRenderer = new Telerik.WinControls.Export.SpreadExportRenderer();
            exportRenderer.WorkbookCreated += renderer_WorkbookCreated;
            // exportRenderer.ExcelTableCreated += exporter_ExcelTableCreated;
            //exporter.CellFormatting += exporter_ExcelCellFormatting;

            //FormatGridColumns(gridReport);
            try
            {
                exporter.RunExport(fileName, exportRenderer);
                var dialog = RiceMsgBox.GetQuestionBox("The data in the grid was exported successfully. Do you want to open the file?");
                if (dialog == DialogResult.Yes)
                {
                    openExportFile = true;                    
                }
                else
                {
                    openExportFile = false;
                }
            }
            catch(Exception ex)
            {
                RiceMsgBox.ShowErrorBox("Error exporting data.");
            }
        }

        void exporter_CellFormatting(object sender, Telerik.WinControls.Export.CellFormattingEventArgs e)
        {
            CellBorders borders = new CellBorders();
            borders.Top = new CellBorder(CellBorderStyle.Thin, new ThemableColor(System.Windows.Media.Colors.Black));
            borders.Bottom = new CellBorder(CellBorderStyle.Thin, new ThemableColor(System.Windows.Media.Colors.Black));
            borders.Right = new CellBorder(CellBorderStyle.Thin, new ThemableColor(System.Windows.Media.Colors.Black));
            borders.Left = new CellBorder(CellBorderStyle.Thin, new ThemableColor(System.Windows.Media.Colors.Black));
            e.CellStyleInfo.Borders = borders;
        }

        void renderer_WorkbookCreated(object sender, Telerik.WinControls.Export.WorkbookCreatedEventArgs e)
        {
            PatternFill solidPatternFill = new PatternFill(PatternType.Solid, System.Windows.Media.Colors.Transparent, System.Windows.Media.Colors.Transparent);
            CellValueFormat textFormat = new CellValueFormat("@");
            string dateRange = "( From Date : " + dtpFromDate.Text + " - To Date : " + dtpToDate.Text + " )";

            Worksheet worksheet = e.Workbook.Sheets[0] as Worksheet;

            worksheet.Columns[worksheet.UsedCellRange].AutoFitWidth();
            CellRange range = new CellRange(0, 0, 1, gridReport.Columns.Count);
            CellSelection header = worksheet.Cells[range];
            if (header.CanInsertOrRemove(range, ShiftType.Down))
            {
                header.Insert(InsertShiftType.Down);
            }
            header.Merge();
            header.SetFormat(textFormat);
            header.SetHorizontalAlignment(Telerik.Windows.Documents.Spreadsheet.Model.RadHorizontalAlignment.Center);
            header.SetVerticalAlignment(Telerik.Windows.Documents.Spreadsheet.Model.RadVerticalAlignment.Center);
            header.SetFontFamily(new ThemableFontFamily("Rockwell"));
            header.SetFontSize(24);
            header.SetFill(solidPatternFill);
            header.SetValue(this.ReportHeaderText);



        }
c# winforms telerik telerik-grid radgridview
1个回答
0
投票

GridViewSpreadExport生成包含合并单元格的文档。在顶部插入一行,然后导出文档会导致合并单元格错误。这是一个已知问题:link

© www.soinside.com 2019 - 2024. All rights reserved.