asp.net中,如何实现将page页面各个空间的属性值,导出下载到一个word或excel中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net中,如何实现将page页面各个空间的属性值,导出下载到一个word或excel中相关的知识,希望对你有一定的参考价值。

我要实现的功能是,在asp.net中,点击按钮,就可以将页面中一些控件的属性值一起导入到一个word中或excel中。

请问如何实现,急求!!!!
(一般网上的资料都是只将某一个控件的值导入到word或excel中)
比如说,我要导出页面中textbox 的text值和gridview中的table,都导入到一个word文件(或excel)中,我具体改怎么写呢? 有没有稍微具体一点的代码?

一般不用把所有的控件的值都导出吧,一般导出的都是数据,如GridView1,等数据控件中的值 ,这个倒是很简单的。 参考技术A foreach循环页面所有controls,写入EXCEL。操作EXCEL请另查询,很容易的。 参考技术B 首先,你要知道如何得到控件的属性值(这个不难吧,知道控件了,一点就出来了)
其次,你要知道asp.net如何写入并导出word或者excel,你如果用office组建来导出,服务器就必须安装excel,这样我感觉是不好,微软发布了以个excelpackage dll,他使服务器不用安装excel就可以写入并生成excel,
http://www.codeplex.com/ExcelPackage,你可以进去下载这个dll,里面也有例子

Asp.net Core 如何将 ReflectionIT.Mvc.Paging 与 ViewModel 一起使用?

【中文标题】Asp.net Core 如何将 ReflectionIT.Mvc.Paging 与 ViewModel 一起使用?【英文标题】:Asp.net Core how to use ReflectionIT.Mvc.Paging with ViewModel? 【发布时间】:2019-11-15 20:04:33 【问题描述】:

我想在 Asp.net Core 2.2 中使用带有 ViewModel 的分页。

你可以在下面看到我的代码

公共类 UserQuestionListComplexViewModel

   //这个类中有2个ViewModel

    公共 UserPanelViewModel Model1  获取;放; 
    公共列表 Model2  get;放; 

在我的控制器中

公共类 UserHomeController : 控制器

    私有只读 UserManager _userManager;
    私有只读 IQuestionRepository _iq;

    公共 UserHomeController(UserManager userManager,
        IQuestionRepository iq)
    
        _userManager = 用户管理器;
        _iq = iq;
    

    [HttpGet]
    公共异步任务 QuestionList(UserQuestionListComplexViewModel 模型,
      整数页 = 1)
    
        var query = _iq.UserQuestionList(_userManager.GetUserId(HttpContext.User), page);
        model.UQVM = 等待查询;
        返回视图(模型);
    

下面是QuestionRepository

公共异步任务> UserQuestionList(string UserID,
  整数页 = 1)

    var questionQuery =(来自 _db.QuestionTbl 中的 q
                         其中 q.UserID == UserID
                         选择新的 UserQuestionListViewModel()
                         
                             ……
                         )
                         .AsNoTracking()
                         .Where(q => q.qflag == 0)
                         .OrderBy(q => q.QuestionID);

    var pagedResult = 等待 PagingList.CreateAsync(
        questionQuery, 1, page);
        
    返回分页结果;

最后View.cshtml

@model UserQuestionListComplexViewModel
@using ReflectionIT.Mvc.Paging

@await Component.InvokeAsync("UserInfo", Model.Model1)

<div>  
    <table>
        <thead class="thead-dark">
            <tr>
                <td>...</td>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in Model.Model2)
            
                <tr>
                    <td>...</td>
                </tr>
            
        </tbody>
    </table>

    <nav class="pagenav">
        @await this.Component.InvokeAsync("Pager", new  PagingList = this.Model )
    </nav>
</div>

但我得到以下错误

InvalidOperationException:传递到 ViewDataDictionary 的模型项的类型为“ReflectionIT.Mvc.Paging.PagingList`1[porseman.Models.ViewModels.UserQuestionListViewModel]”,但此 ViewDataDictionary 实例需要“porseman.Areas”类型的模型项.UserPanel.Models.UserComplexViewModel.UserQuestionListComplexViewModel'。

【问题讨论】:

【参考方案1】:

看你的PagingList创建函数,类型是UserQuestionListViewModel

 var pagedResult = await PagingList<UserQuestionListViewModel>.CreateAsync(questionQuery, 1, page);

但是当您在视图中配置 PagingList 时,您正在设置类型 UserQuestionListComplexViewModel ,因此请替换此行:

 @await this.Component.InvokeAsync("Pager", new  PagingList = this.Model )

与:

 @await this.Component.InvokeAsync("Pager", new  PagingList = this.Model.Model2 )

另外,您可能需要在视图模型中将类型 Model2 更改为 PagingList&lt;UserQuestionListViewModel&gt;

public PagingList<UserQuestionListViewModel> Model2  get; set; 

【讨论】:

以上是关于asp.net中,如何实现将page页面各个空间的属性值,导出下载到一个word或excel中的主要内容,如果未能解决你的问题,请参考以下文章

asp.net中的页面卸载事件

从子页面 asp.net(vb) 更新 master.page 的徽标图像

asp.net mvc5 如何控制没有权限的页面不显示

如何正确重定向到 ASP.NET Core Razor Pages 中的同一页面?

ASP.NET Razor Pages 路由参数命名页面

asp.net页面指令page啥属性能指定编辑语言