首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将DataGrid表导出到MS Excel时,数据显示为System.Data.DataRowView

是因为在导出过程中没有正确处理数据的格式。System.Data.DataRowView是数据绑定时的默认显示格式,而不是实际的数据值。

要解决这个问题,可以使用以下步骤:

  1. 获取DataGrid中的数据源。可以通过DataGrid的ItemsSource属性来获取数据源。
  2. 遍历数据源,将实际的数据值提取出来。可以使用循环或LINQ查询来遍历数据源,并将每个单元格的值提取出来。
  3. 创建一个新的Excel文件,并将数据写入到Excel文件中。可以使用第三方库,如NPOI或EPPlus,来创建和操作Excel文件。根据提取到的数据,将数据写入到Excel文件的相应单元格中。
  4. 导出Excel文件。将生成的Excel文件保存到本地或提供下载链接,以便用户可以下载导出的Excel文件。

以下是一个示例代码,使用NPOI库将DataGrid表导出到MS Excel:

代码语言:txt
复制
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using System.IO;

// 获取DataGrid中的数据源
var dataGridItemsSource = dataGrid.ItemsSource as IEnumerable;

// 创建一个新的Excel文件
var workbook = new HSSFWorkbook();
var sheet = workbook.CreateSheet("Sheet1");

// 写入表头
var headerRow = sheet.CreateRow(0);
for (int i = 0; i < dataGrid.Columns.Count; i++)
{
    var cell = headerRow.CreateCell(i);
    cell.SetCellValue(dataGrid.Columns[i].Header.ToString());
}

// 写入数据
int rowIndex = 1;
foreach (var item in dataGridItemsSource)
{
    var dataRow = sheet.CreateRow(rowIndex);
    for (int i = 0; i < dataGrid.Columns.Count; i++)
    {
        var cell = dataRow.CreateCell(i);
        var binding = dataGrid.Columns[i].ClipboardContentBinding as System.Windows.Data.Binding;
        var propertyPath = binding.Path.Path;
        var propertyInfo = item.GetType().GetProperty(propertyPath);
        var value = propertyInfo.GetValue(item);
        cell.SetCellValue(value?.ToString());
    }
    rowIndex++;
}

// 导出Excel文件
using (var fileStream = new FileStream("ExportedData.xls", FileMode.Create))
{
    workbook.Write(fileStream);
}

在这个示例中,我们使用NPOI库创建一个新的Excel文件,并将DataGrid中的数据写入到Excel文件中。最后,将生成的Excel文件保存为"ExportedData.xls"。

推荐的腾讯云相关产品:腾讯云对象存储(COS),用于存储和管理导出的Excel文件。您可以通过以下链接了解更多关于腾讯云对象存储的信息:腾讯云对象存储(COS)产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 数据绑定以及Container.DataItem几种方式与使用方法分析[通俗易懂]

    大家好,又见面了,我是你们的朋友全栈君。 灵活的运用数据绑定操作 绑定到简单属性:<%#UserName%> 绑定到集合:<asp:ListBox id=”ListBox1″ datasource='<%# myArray%>’ runat=”server”> 绑定到表达式:<%#(class1.property1.ToString() + “,” + class1.property2.ToString())%> 绑定到方法返回值:<%# GetSafestring(str) %> 绑定到Hashtable:<%# ((DictionaryEntry)Container.DataItem).Key%> 绑定到ArrayList:<%#Container.DataItem %> 若数组里里放的是对象则可能要进行必要的转换后再绑定如: <%#((对象类型)Container.DataItem).属性%> 绑定到DataView,DataTable,DataSet: <%#((DataRowView)Container.DataItem)[“字段名”]%>或 <%#((DataRowView)Container.DataItem).Rows[0][“字段名”]%> 要格式化则: <%#string.Format(“格式”,((DataRowView)Container.DataItem)[“字段名”])%> <%#DataBinder.Eval(Container.DataItem,”字段名”,”格式”)%> 绑定到DataReader: <%#((IDataReader)Container.DataItem).字段名%> 当然为了方便一般使用最多的就是DataBinder类的Eval方法了.只是这样对于同一时候要绑定大量的数据效率要低一些

    01

    前端必读2.0:如何在React 中使用SpreadJS导入和导出 Excel 文件

    最近我们公司接到一个客户的需求,要求为正在开发的项目加个功能。项目的前端使用的是React,客户想添加具备Excel 导入/导出功能的电子表格模块。 经过几个小时的原型构建后,技术团队确认所有客户需求文档中描述的功能都已经实现了,并且原型可以在截止日期前做好演示准备。但是,在跟产品组再次讨论客户需求时,我们发现之前对有关电子表格的部分理解可能存在偏差。 客户的具体需求点仅仅提到支持双击填报、具备边框设置、背景色设置和删除行列等功能,但这部分需求描述不是很明确,而且最后提到“像Excel的类似体验”,我们之前忽略了这句话背后的信息量。经过与客户的业务需求方的直接沟通,可以确认终端用户就是想直接在网页端操作Excel,并且直接把编辑完成的表格以Excel的格式下载到本地。

    02
    领券