C# DevExpress MVC网格将内容排序为OpenXML

C# DevExpress MVC网格将内容排序为OpenXML,c#,asp.net-mvc,openxml,devexpress-mvc,C#,Asp.net Mvc,Openxml,Devexpress Mvc,我们有一个带有多个控件的MVC razor视图。我们需要复制导出到Excel内容中的Razor视图布局。因此,我使用OpenXML在Excel中复制视图 但现在我们收到了一个新的请求,要求在视图中添加额外的部分以显示DevExpress MVC网格 我们如何将DevExpress MVC网格排序/分页/过滤内容合并到OpenXML?我在一个会话中有网格内容。但是我想在这个网格的UI中显示用户选择的内容(过滤/排序/分页) 有谁能帮我解决上述问题吗 提前感谢您的帮助。我使用以下过程解决了我的问题:

我们有一个带有多个控件的MVC razor视图。我们需要复制导出到Excel内容中的Razor视图布局。因此,我使用OpenXML在Excel中复制视图

但现在我们收到了一个新的请求,要求在视图中添加额外的部分以显示DevExpress MVC网格

我们如何将DevExpress MVC网格排序/分页/过滤内容合并到OpenXML?我在一个会话中有网格内容。但是我想在这个网格的UI中显示用户选择的内容(过滤/排序/分页)

有谁能帮我解决上述问题吗


提前感谢您的帮助。

我使用以下过程解决了我的问题:

当用户单击“导出到Excel”时,我发布了表单:

$(function () {
        $('a#lkDealExport').click(
            (function (e) {
                var originalAction = $(this).parents('form#DataFrm').attr('action');
                $('form#DataFrm').attr("action", $(e.target).attr("data-formaction"));
                $('form#DataFrm').submit();
                $('form#DataFrm').attr("action", originalAction); // reset the action back to orginal action after the export to excel is executed.
                return false;
            })
            );
    });
如果我们不发布表单,则devExpress网格用户选择(排序、分页和筛选)不会导出到excel

在post-action方法中,我包含了以下代码:

 using (MemoryStream stream = new MemoryStream())
            {
                if (EventListModel.gridData.Count() > 0) // This will avoid exporting header information when search returns 0 results. 
                {
                    GridViewExtension.WriteXlsx(SubmissionGridViewHelper.Instance.Settings, EventListModel.gridData, stream);
                }
然后我们可以将这个MemoryStream传递给加载openXML的方法

if (eventLogStream.Length > 0) // Insert data into excel only when memory stram is not empty.
            {
                XLWorkbook eventLogWorkBook = new XLWorkbook(eventLogStream);
                var firstPossibleAddres = eventLogWorkBook.Worksheet(1).FirstCellUsed().Address;
                var lastPossibleAddress = eventLogWorkBook.Worksheet(1).LastCellUsed().Address;

                worksheet.Cell(++rowIndex, 1).Value = eventLogWorkBook.Worksheet(1).Range(firstPossibleAddres, lastPossibleAddress).RangeUsed();
                rowIndex += eventLogWorkBook.Worksheet(1).Range(firstPossibleAddres, lastPossibleAddress).RowCount();
            }
希望这对其他人有帮助