You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core MVC 如何将List对象数据绑定到DevExpress Spreadsheet电子表格

实现步骤
  • 首先确认你要绑定的List对应的实体类结构,示例参考如下:
public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public decimal Price { get; set; }
    public int Stock { get; set; }
}
  • 第二步在控制器原有逻辑中加入List数据绑定代码,你已经实例化了Workbook对象,直接调用DevExpress Office File API内置的数据源绑定方法即可,修改后的控制器代码如下:
public ActionResult Overview(IFormFile document)
{
    var model = new DocumentModel();
    // 这里构造你需要绑定的List示例数据,实际场景可以从数据库/其他接口读取
    List<Product> productList = new List<Product>
    {
        new Product { Id = 1, Name = "产品A", Price = 29.9m, Stock = 100 },
        new Product { Id = 2, Name = "产品B", Price = 49.9m, Stock = 200 },
        new Product { Id = 3, Name = "产品C", Price = 19.9m, Stock = 150 }
    };

    if (document != null)
    {
        var stream = new MemoryStream();
        document.CopyTo(stream);
        stream.Position = 0; // 要把流的位置重置到开头,否则LoadDocument会读不到内容

        var workBook = new Workbook();
        workBook.LoadDocument(stream);

        // 在这里加入List绑定逻辑
        var worksheet = workBook.Worksheets[0]; // 选第一个工作表,也可以指定你要填充的工作表索引/名称
        // BindToDataSource参数说明:数据源、是否生成列头、填充起始行、填充起始列
        worksheet.DataBindings.BindToDataSource(productList, 0, 0);

        // 绑定完成后把修改后的工作簿重新写入流
        stream.SetLength(0);
        workBook.SaveDocument(stream, DocumentFormat.Xlsx);
        stream.Position = 0;

        model.DocumentId = document.FileName;
        model.ContentAccessorByStream = stream;
    }
    // 如果不需要上传文件,直接生成新的工作簿填充List也可以,逻辑同上
    else
    {
        var workBook = new Workbook();
        var worksheet = workBook.Worksheets[0];
        worksheet.DataBindings.BindToDataSource(productList, 0, 0);
        var stream = new MemoryStream();
        workBook.SaveDocument(stream, DocumentFormat.Xlsx);
        stream.Position = 0;
        model.DocumentId = "导出数据.xlsx";
        model.ContentAccessorByStream = stream;
    }

    return View("Overview", model);
}
  • 第三步前端Spreadsheet控件保持正常绑定DocumentModel即可,不需要额外修改,示例前端代码参考:
@model DocumentModel
@(Html.DevExpress().Spreadsheet("spreadsheet")
    .Width("100%")
    .Height("800px")
    .Open(Model.DocumentId, DevExpress.Spreadsheet.DocumentFormat.Xlsx, () => Model.ContentAccessorByStream)
)

注意事项

  • 绑定方法的第二个参数useFirstRowAsHeader默认是true,会自动把实体类的属性名作为第一行的列头,不需要列头的话可以手动传false
  • 如果需要自定义列的显示顺序、列名、格式,可以在绑定前通过Workbook的API对指定列做单独设置
  • 操作流的时候一定要记得重置Position为0,否则会出现读取空白文档的问题

内容的提问来源于stack exchange,提问作者Rado HT Simarmata

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 00:15:11